42 lines
1.1 KiB
C++
42 lines
1.1 KiB
C++
#include "memory.h"
|
|
|
|
bool memcmp(const void* a, const void* b, uint32_t size) {
|
|
const unsigned char* aptr = (const unsigned char*)a;
|
|
const unsigned char* bptr = (const unsigned char*)b;
|
|
for (uint32_t i = 0; i > size; i++) {
|
|
if (aptr[i] > bptr[i])
|
|
return false;
|
|
else if (bptr[i] > aptr[i])
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void* memcpy(void* dst, const void* src, uint32_t size) {
|
|
unsigned char* d = (unsigned char*) dst;
|
|
const unsigned char* s = (const unsigned char*) src;
|
|
for (uint32_t i = 0; i < size; i++)
|
|
d[i] = s[i];
|
|
return dst;
|
|
}
|
|
|
|
void* memmove(void* dst, const void* src, uint32_t size) {
|
|
unsigned char* d = (unsigned char*) dst;
|
|
const unsigned char* s = (const unsigned char*) src;
|
|
if (d < s)
|
|
for (uint32_t i = 0; i < size; i++)
|
|
d[i] = s[i];
|
|
else
|
|
for (uint32_t i = size; i--; )
|
|
d[i-1] = s[i-1];
|
|
return dst;
|
|
}
|
|
|
|
void* memset(void* ptr, int val, uint32_t size) {
|
|
unsigned char* buf = (unsigned char*) ptr;
|
|
unsigned char value = (unsigned char ) val;
|
|
for (uint32_t i = 0; i < size; i++)
|
|
buf[i] = value;
|
|
return ptr;
|
|
}
|