Zookeeper/NightBeliever/C.cpp
2016-05-19 13:03:57 -06:00

79 lines
1.4 KiB
C++

#include "NightBeliever.hpp"
void *memcpy(void *dest, const void *src, size_t n) {
auto a = (uint8_t *) dest, b = (uint8_t *) src;
while(n--)
*(a++) = *(b++);
return dest;
}
char *strcpy(char *dest, const char *src) {
return (char *) memcpy(dest, src, strlen(src) + 1);
}
void *memset(void *ptr, int value, size_t num) {
auto chrs = (uint8_t *) ptr;
while(num--)
chrs[num] = (uint8_t) value;
return ptr;
}
size_t strlen(const char *str) {
auto i = 0;
while(str[i++] != 0);
return i - 1;
}
int tolower(int c) {
if(c >= 'A' && c <= 'Z')
return c - 'A' + 'a';
return c;
}
int toupper(int c) {
if(c >= 'a' && c <= 'z')
return c - 'a' + 'A';
return c;
}
int strcmp(const char *str1, const char *str2) {
auto a = strlen(str1), b = strlen(str2);
if(a < b) return -1;
else if(a > b) return 1;
for(auto i = 0; i < a; ++i) {
if(str1[i] < str2[i]) return -1;
else if(str1[i] > str2[i]) return 1;
}
return 0;
}
int stricmp(const char *str1, const char *str2) {
auto a = strlen(str1), b = strlen(str2);
if(a < b) return -1;
else if(a > b) return 1;
for(auto i = 0; i < a; ++i) {
auto c1 = tolower(str1[i]), c2 = tolower(str2[i]);
if(c1 < c2) return -1;
else if(c1 > c2) return 1;
}
return 0;
}
void *operator new(size_t size) {
return malloc(size);
}
void *operator new[](size_t size) {
return malloc(size);
}
void operator delete(void *ptr) {
free(ptr);
}
void operator delete[](void *ptr) {
free(ptr);
}