ReactOS 0.4.17-dev-357-ga8f14ff
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 3210 of file string.c.

3211{
3212 unsigned char *d = dst;
3213 const unsigned char *s = src;
3214 while (n--) if ((*d++ = *s++) == (unsigned char)c) return d;
3215 return NULL;
3216}
#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 3490 of file string.c.

3491{
3492 return _memicmp_l(s1, s2, len, NULL);
3493}
int __cdecl _memicmp_l(const void *v1, const void *v2, size_t len, _locale_t locale)
Definition: string.c:3463
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 3463 of file string.c.

3464{
3465 const char *s1 = v1, *s2 = v2;
3466 int ret = 0;
3467
3468#if _MSVCR_VER == 0 || _MSVCR_VER >= 80
3469 if (!s1 || !s2)
3470 {
3471 if (len)
3473 return len ? _NLSCMPERROR : 0;
3474 }
3475#endif
3476
3477 while (len--)
3478 {
3479 if ((ret = _tolower_l(*s1, locale) - _tolower_l(*s2, locale)))
3480 break;
3481 s1++;
3482 s2++;
3483 }
3484 return ret;
3485}
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:3210

◆ memchr()

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

Definition at line 3313 of file string.c.

3314{
3315 const unsigned char *p = ptr;
3316
3317 for (p = ptr; n; n--, p++) if (*p == (unsigned char)c) return (void *)(ULONG_PTR)p;
3318 return NULL;
3319}
#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 2807 of file string.c.

2808{
2809 const unsigned char *p1 = ptr1, *p2 = ptr2;
2810 size_t align;
2811 int result;
2812
2813 if (n < sizeof(uint64_t))
2814 return memcmp_bytes(p1, p2, n);
2815
2816 align = -(size_t)p1 & (sizeof(uint64_t) - 1);
2817
2818 if ((result = memcmp_bytes(p1, p2, align)))
2819 return result;
2820
2821 p1 += align;
2822 p2 += align;
2823 n -= align;
2824
2825 return memcmp_blocks(p1, p2, n);
2826}
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:2770
static int memcmp_blocks(const void *ptr1, const void *ptr2, size_t size)
Definition: string.c:2782
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 3202 of file string.c.

3203{
3204 return memmove(dst, src, n);
3205}
#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:149
#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:3490

◆ memset()

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

Definition at line 3235 of file string.c.

3236{
3237 typedef uint64_t DECLSPEC_ALIGN(1) unaligned_ui64;
3238 typedef uint32_t DECLSPEC_ALIGN(1) unaligned_ui32;
3239 typedef uint16_t DECLSPEC_ALIGN(1) unaligned_ui16;
3240
3241 uint64_t v = 0x101010101010101ull * (unsigned char)c;
3242 unsigned char *d = (unsigned char *)dst;
3243 size_t a = 0x20 - ((uintptr_t)d & 0x1f);
3244
3245 if (n >= 16)
3246 {
3247 *(unaligned_ui64 *)(d + 0) = v;
3248 *(unaligned_ui64 *)(d + 8) = v;
3249 *(unaligned_ui64 *)(d + n - 16) = v;
3250 *(unaligned_ui64 *)(d + n - 8) = v;
3251 if (n <= 32) return dst;
3252 *(unaligned_ui64 *)(d + 16) = v;
3253 *(unaligned_ui64 *)(d + 24) = v;
3254 *(unaligned_ui64 *)(d + n - 32) = v;
3255 *(unaligned_ui64 *)(d + n - 24) = v;
3256 if (n <= 64) return dst;
3257
3258 n = (n - a) & ~0x1f;
3259 memset_aligned_32(d + a, v, n);
3260 return dst;
3261 }
3262 if (n >= 8)
3263 {
3264 *(unaligned_ui64 *)d = v;
3265 *(unaligned_ui64 *)(d + n - 8) = v;
3266 return dst;
3267 }
3268 if (n >= 4)
3269 {
3270 *(unaligned_ui32 *)d = v;
3271 *(unaligned_ui32 *)(d + n - 4) = v;
3272 return dst;
3273 }
3274 if (n >= 2)
3275 {
3276 *(unaligned_ui16 *)d = v;
3277 *(unaligned_ui16 *)(d + n - 2) = v;
3278 return dst;
3279 }
3280 if (n >= 1)
3281 {
3282 *(uint8_t *)d = v;
3283 return dst;
3284 }
3285 return dst;
3286}
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:3219
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