ReactOS 0.4.16-dev-2104-gb84fa49
memory.h File Reference
#include <corecrt.h>
Include dependency graph for memory.h:

Go to the source code of this file.

Macros

#define _CRT_MEMORY_DEFINED
 

Functions

_ACRTIMP void *__cdecl memchr (const void *, int, size_t)
 
_ACRTIMP int __cdecl memcmp (const void *, const void *, size_t)
 
_ACRTIMP void *__cdecl memcpy (void *, const void *, size_t)
 
_ACRTIMP errno_t __cdecl memcpy_s (void *, size_t, const void *, size_t)
 
_ACRTIMP void *__cdecl memset (void *, int, size_t)
 
_ACRTIMP void *__cdecl _memccpy (void *, const void *, int, size_t)
 
_ACRTIMP int __cdecl _memicmp (const void *, const void *, size_t)
 
_ACRTIMP int __cdecl _memicmp_l (const void *, const void *, size_t, _locale_t)
 
static int memicmp (const void *s1, const void *s2, size_t len)
 
static voidmemccpy (void *s1, const void *s2, int c, size_t n)
 

Macro Definition Documentation

◆ _CRT_MEMORY_DEFINED

#define _CRT_MEMORY_DEFINED

Definition at line 18 of file memory.h.

Function Documentation

◆ _memccpy()

_ACRTIMP void *__cdecl _memccpy ( void dst,
const void src,
int  c,
size_t  n 
)

Definition at line 3205 of file string.c.

3206{
3207 unsigned char *d = dst;
3208 const unsigned char *s = src;
3209 while (n--) if ((*d++ = *s++) == (unsigned char)c) return d;
3210 return NULL;
3211}
#define NULL
Definition: types.h:112
GLdouble s
Definition: gl.h:2039
GLdouble n
Definition: glext.h:7729
GLenum src
Definition: glext.h:6340
const GLubyte * c
Definition: glext.h:8905
GLenum GLenum dst
Definition: glext.h:6340
#define d
Definition: ke_i.h:81

Referenced by memccpy().

◆ _memicmp()

_ACRTIMP int __cdecl _memicmp ( const void s1,
const void s2,
size_t  len 
)

Definition at line 3485 of file string.c.

3486{
3487 return _memicmp_l(s1, s2, len, NULL);
3488}
int __cdecl _memicmp_l(const void *v1, const void *v2, size_t len, _locale_t locale)
Definition: string.c:3458
GLenum GLsizei len
Definition: glext.h:6722
struct S1 s1
PCWSTR s2
Definition: shell32_main.h:38

Referenced by memicmp(), and test__memicmp().

◆ _memicmp_l()

_ACRTIMP int __cdecl _memicmp_l ( const void v1,
const void v2,
size_t  len,
_locale_t  locale 
)

Definition at line 3458 of file string.c.

3459{
3460 const char *s1 = v1, *s2 = v2;
3461 int ret = 0;
3462
3463#if _MSVCR_VER == 0 || _MSVCR_VER >= 80
3464 if (!s1 || !s2)
3465 {
3466 if (len)
3468 return len ? _NLSCMPERROR : 0;
3469 }
3470#endif
3471
3472 while (len--)
3473 {
3474 if ((ret = _tolower_l(*s1, locale) - _tolower_l(*s2, locale)))
3475 break;
3476 s1++;
3477 s2++;
3478 }
3479 return ret;
3480}
Definition: _locale.h:75
int CDECL _tolower_l(int c, _locale_t locale)
Definition: ctype.c:532
#define EINVAL
Definition: errno.h:44
#define _NLSCMPERROR
Definition: mbstring.h:28
#define MSVCRT_INVALID_PMT(x, err)
Definition: msvcrt.h:376
return ret
Definition: mutex.c:146
GLfloat GLfloat v1
Definition: glext.h:6062
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063

Referenced by _memicmp(), and test__memicmp_l().

◆ memccpy()

static void * memccpy ( void s1,
const void s2,
int  c,
size_t  n 
)
inlinestatic

Definition at line 30 of file memory.h.

30{ return _memccpy(s1, s2, c, n); }
_ACRTIMP void *__cdecl _memccpy(void *, const void *, int, size_t)
Definition: string.c:3205

◆ memchr()

_ACRTIMP void *__cdecl memchr ( const void ptr,
int  c,
size_t  n 
)

Definition at line 3308 of file string.c.

3309{
3310 const unsigned char *p = ptr;
3311
3312 for (p = ptr; n; n--, p++) if (*p == (unsigned char)c) return (void *)(ULONG_PTR)p;
3313 return NULL;
3314}
#define ULONG_PTR
Definition: config.h:101
GLfloat GLfloat p
Definition: glext.h:8902
static PVOID ptr
Definition: dispmode.c:27

◆ memcmp()

_ACRTIMP int __cdecl memcmp ( const void ptr1,
const void ptr2,
size_t  n 
)

Definition at line 2802 of file string.c.

2803{
2804 const unsigned char *p1 = ptr1, *p2 = ptr2;
2805 size_t align;
2806 int result;
2807
2808 if (n < sizeof(uint64_t))
2809 return memcmp_bytes(p1, p2, n);
2810
2811 align = -(size_t)p1 & (sizeof(uint64_t) - 1);
2812
2813 if ((result = memcmp_bytes(p1, p2, align)))
2814 return result;
2815
2816 p1 += align;
2817 p2 += align;
2818 n -= align;
2819
2820 return memcmp_blocks(p1, p2, n);
2821}
UINT64 uint64_t
Definition: types.h:77
unsigned int size_t
Definition: corecrt.h:203
static int memcmp_bytes(const void *ptr1, const void *ptr2, size_t n)
Definition: string.c:2765
static int memcmp_blocks(const void *ptr1, const void *ptr2, size_t size)
Definition: string.c:2777
int align(int length, int align)
Definition: dsound8.c:36
GLuint64EXT * result
Definition: glext.h:11304

◆ memcpy()

_ACRTIMP void *__cdecl memcpy ( void dst,
const void src,
size_t  n 
)

Definition at line 3197 of file string.c.

3198{
3199 return memmove(dst, src, n);
3200}
#define memmove(s1, s2, n)
Definition: mkisofs.h:881

◆ memcpy_s()

_ACRTIMP errno_t __cdecl memcpy_s ( void dest,
size_t  numberOfElements,
const void src,
size_t  count 
)

Definition at line 779 of file heap.c.

780{
781 TRACE("(%p %Iu %p %Iu)\n", dest, numberOfElements, src, count);
782
783 if(!count)
784 return 0;
785
786 if (!MSVCRT_CHECK_PMT(dest != NULL)) return EINVAL;
787 if (!MSVCRT_CHECK_PMT(src != NULL))
788 {
790 return EINVAL;
791 }
793 {
795 return ERANGE;
796 }
797
799 return 0;
800}
#define ERANGE
Definition: errno.h:55
#define MSVCRT_CHECK_PMT(x)
Definition: msvcrt.h:378
#define MSVCRT_CHECK_PMT_ERR(x, err)
Definition: msvcrt.h:377
GLuint GLuint GLsizei count
Definition: gl.h:1545
static size_t numberOfElements
Definition: string.c:98
static char * dest
Definition: rtl.c:135
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by _fread_nolock_s(), _wcsrtombs_internal(), __crt_strtox::big_integer::big_integer(), common_assert_to_message_box_build_string(), __crt_win32_buffer< Character, ResizePolicy >::detach(), __crt_strtox::big_integer::operator=(), setmbcp_internal(), and throw().

◆ memicmp()

static int memicmp ( const void s1,
const void s2,
size_t  len 
)
inlinestatic

Definition at line 29 of file memory.h.

29{ return _memicmp(s1, s2, len); }
_ACRTIMP int __cdecl _memicmp(const void *, const void *, size_t)
Definition: string.c:3485

◆ memset()

_ACRTIMP void *__cdecl memset ( void dst,
int  c,
size_t  n 
)

Definition at line 3230 of file string.c.

3231{
3232 typedef uint64_t DECLSPEC_ALIGN(1) unaligned_ui64;
3233 typedef uint32_t DECLSPEC_ALIGN(1) unaligned_ui32;
3234 typedef uint16_t DECLSPEC_ALIGN(1) unaligned_ui16;
3235
3236 uint64_t v = 0x101010101010101ull * (unsigned char)c;
3237 unsigned char *d = (unsigned char *)dst;
3238 size_t a = 0x20 - ((uintptr_t)d & 0x1f);
3239
3240 if (n >= 16)
3241 {
3242 *(unaligned_ui64 *)(d + 0) = v;
3243 *(unaligned_ui64 *)(d + 8) = v;
3244 *(unaligned_ui64 *)(d + n - 16) = v;
3245 *(unaligned_ui64 *)(d + n - 8) = v;
3246 if (n <= 32) return dst;
3247 *(unaligned_ui64 *)(d + 16) = v;
3248 *(unaligned_ui64 *)(d + 24) = v;
3249 *(unaligned_ui64 *)(d + n - 32) = v;
3250 *(unaligned_ui64 *)(d + n - 24) = v;
3251 if (n <= 64) return dst;
3252
3253 n = (n - a) & ~0x1f;
3254 memset_aligned_32(d + a, v, n);
3255 return dst;
3256 }
3257 if (n >= 8)
3258 {
3259 *(unaligned_ui64 *)d = v;
3260 *(unaligned_ui64 *)(d + n - 8) = v;
3261 return dst;
3262 }
3263 if (n >= 4)
3264 {
3265 *(unaligned_ui32 *)d = v;
3266 *(unaligned_ui32 *)(d + n - 4) = v;
3267 return dst;
3268 }
3269 if (n >= 2)
3270 {
3271 *(unaligned_ui16 *)d = v;
3272 *(unaligned_ui16 *)(d + n - 2) = v;
3273 return dst;
3274 }
3275 if (n >= 1)
3276 {
3277 *(uint8_t *)d = v;
3278 return dst;
3279 }
3280 return dst;
3281}
UINT32 uint32_t
Definition: types.h:75
#define DECLSPEC_ALIGN(x)
Definition: corecrt.h:141
unsigned int uintptr_t
Definition: corecrt.h:185
unsigned short uint16_t
Definition: stdint.h:35
unsigned char uint8_t
Definition: stdint.h:33
static void memset_aligned_32(unsigned char *d, uint64_t v, size_t n)
Definition: string.c:3214
const GLdouble * v
Definition: gl.h:2040
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
#define a
Definition: ke_i.h:78
if(dx< 0)
Definition: linetemp.h:194