Compare commits
3 Commits
062b8a6345
...
fb1211263d
Author | SHA1 | Date |
---|---|---|
qwqdanchun | fb1211263d | |
qwqdanchun | 854f9deefc | |
qwqdanchun | 1137031b28 |
90
crt.c
90
crt.c
|
@ -1,6 +1,4 @@
|
|||
#include <stdint.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include "crt.h"
|
||||
|
||||
#pragma optimize("", off)
|
||||
void* xmalloc(size_t size) {
|
||||
|
@ -90,8 +88,8 @@ int xstrcmpi(const char* s1, const char* s2)
|
|||
return lstrcmpiA(s1, s2);
|
||||
}
|
||||
|
||||
int xstricmp(const char* s1, const char* s2)
|
||||
{
|
||||
int xstricmp(const char* s1, const char* s2)
|
||||
{
|
||||
return lstrcmpiA(s1, s2);
|
||||
}
|
||||
|
||||
|
@ -362,4 +360,84 @@ int32_t xwprintf(const wchar_t* format, ...) {
|
|||
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), string_buffer, string_length, NULL, NULL);
|
||||
return string_length;
|
||||
}
|
||||
#pragma optimize("", on)
|
||||
|
||||
int xiswctype(wint_t c, wctype_t type)
|
||||
{
|
||||
WORD ret;
|
||||
GetStringTypeW(CT_CTYPE1, (LPCWSTR)&c, 1, &ret);
|
||||
if ((ret & type) != 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int xisspace(int c) {return ((c >= 0x09 && c <= 0x0D) || (c == 0x20));}
|
||||
int xiswspace(wint_t c) {return xiswctype(c, _BLANK);}
|
||||
|
||||
int xisupper(int c) {return (c >= 'A' && c <= 'Z');}
|
||||
int xiswupper(wint_t c) {return xiswctype(c, _UPPER);}
|
||||
|
||||
int xisalpha(int c) {return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');}
|
||||
int xiswalpha(wint_t c) {return xiswctype(c, _ALPHA);}
|
||||
|
||||
int xisdigit(int c) {return (c >= '0' && c <= '9');}
|
||||
int xiswdigit(wint_t c) {return xiswctype(c, _DIGIT);}
|
||||
|
||||
int xisxdigit(int c) {return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f');}
|
||||
int xiswxdigit(wint_t c) {return xiswctype(c, _HEX);}
|
||||
|
||||
int xisalnum(int c) {return xisalpha(c) || isdigit(c);}
|
||||
int xiswalnum(wint_t c) {return xiswctype(c, _ALPHA|_DIGIT);}
|
||||
|
||||
int xisprint(int c) {return c >= ' ';}
|
||||
int xiswprint(wint_t c) {return xiswctype(c, (wctype_t)(~_CONTROL));}
|
||||
|
||||
long xatol(const char *str)
|
||||
{
|
||||
while (xisspace(*str))
|
||||
++str;
|
||||
int cur = *str++;
|
||||
int neg = cur;
|
||||
if (cur == '-' || cur == '+')
|
||||
cur = *str++;
|
||||
long total = 0;
|
||||
while (xisdigit(cur))
|
||||
{
|
||||
total = 10*total + (cur-'0');
|
||||
cur = *str++;
|
||||
}
|
||||
if (neg == '-')
|
||||
return -total;
|
||||
else
|
||||
return total;
|
||||
}
|
||||
|
||||
int xatoi(const char *str)
|
||||
{
|
||||
return (int)xatol(str);
|
||||
}
|
||||
|
||||
long xwtol(const wchar_t *str)
|
||||
{
|
||||
while (xiswspace(*str))
|
||||
++str;
|
||||
wint_t cur = *str++;
|
||||
wint_t neg = cur;
|
||||
if (cur == L'-' || cur == L'+')
|
||||
cur = *str++;
|
||||
long total = 0;
|
||||
while (xiswdigit(cur))
|
||||
{
|
||||
total = 10*total + (cur-L'0');
|
||||
cur = *str++;
|
||||
}
|
||||
if (neg == L'-')
|
||||
return -total;
|
||||
else
|
||||
return total;
|
||||
}
|
||||
|
||||
int xwtoi(const wchar_t *str)
|
||||
{
|
||||
return (int)xwtol(str);
|
||||
}
|
||||
#pragma optimize("", on)
|
|
@ -0,0 +1,83 @@
|
|||
#ifndef Little_CRT
|
||||
#define Little_CRT
|
||||
|
||||
#include <stdint.h>
|
||||
#include <windows.h>
|
||||
|
||||
void* xmalloc(size_t size);
|
||||
void* xrealloc(void* ptr, size_t size);
|
||||
void xfree(void* ptr);
|
||||
|
||||
void* xmemcpy(void* dest, const void* src, size_t n);
|
||||
void* xmemset(void* dst, int val, size_t size);
|
||||
int xmemcmp(const void* str1, const void* str2, size_t n);
|
||||
void* xmemmove(void* dst, const void* src, size_t count);
|
||||
|
||||
extern uint32_t rand_seed;
|
||||
void xsrand(uint32_t seed);
|
||||
uint32_t xrand(void);
|
||||
int xabs(int n);
|
||||
|
||||
size_t xstrlen(const char* str);
|
||||
int xstrcmpi(const char* s1, const char* s2);
|
||||
int xstricmp(const char* s1, const char* s2);
|
||||
int xstrcmp(const char* s1, const char* s2);
|
||||
int xstrncmp(const char* s1, const char* s2, size_t n);
|
||||
int xstrnicmp(const char* s1, const char* s2, size_t n);
|
||||
char* xstrcpy(char* dest, const char* src);
|
||||
char* xstrdup(const char* src);
|
||||
char* xstrncpy(char* dest, const char* src, size_t n);
|
||||
const char* xstrchr(const char* str, int ch);
|
||||
const char* xstrrchr(const char* str, int ch);
|
||||
char* xstrcat(char* dst, const char* src);
|
||||
const char* xstrstr(const char* str, const char* substr);
|
||||
|
||||
size_t xwcslen(const wchar_t* str);
|
||||
wchar_t* xwcscpy(wchar_t* dest, const wchar_t* src);
|
||||
int xwcsicmp(const wchar_t* s1, const wchar_t* s2);
|
||||
int xwcscmp(const wchar_t* s1, const wchar_t* s2);
|
||||
int xwcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
|
||||
int xwcsnicmp(const wchar_t* s1, const wchar_t* s2, size_t n);
|
||||
wchar_t* xwcsdup(const wchar_t* src);
|
||||
wchar_t* xwcsncpy(wchar_t* dest, const wchar_t* src, size_t n);
|
||||
const wchar_t* xwcschr(const wchar_t* str, wchar_t ch);
|
||||
const wchar_t* xwcsrchr(const wchar_t* str, wchar_t ch);
|
||||
wchar_t* xwcscat(wchar_t* dst, const wchar_t* src);
|
||||
const wchar_t* xwcsstr(const wchar_t* str, const wchar_t* substr);
|
||||
|
||||
char* xstrupr(char* s);
|
||||
wchar_t* xwcsupr(wchar_t* s);
|
||||
char* xstrlwr(char* s);
|
||||
wchar_t* xwcslwr(wchar_t* s);
|
||||
int xtoupper(int c);
|
||||
wint_t xtowupper(wint_t c);
|
||||
int xtolower(int c);
|
||||
wint_t xtowlower(wint_t c);
|
||||
|
||||
int32_t xputs(const char* str);
|
||||
|
||||
int32_t xprintf(const char* format, ...);
|
||||
int32_t xwprintf(const wchar_t* format, ...);
|
||||
|
||||
int xiswctype(wint_t c, wctype_t type);
|
||||
int xisspace(int c);
|
||||
int xiswspace(wint_t c);
|
||||
int xisupper(int c);
|
||||
int xiswupper(wint_t c);
|
||||
int xisalpha(int c);
|
||||
int xiswalpha(wint_t c);
|
||||
int xisdigit(int c);
|
||||
int xiswdigit(wint_t c);
|
||||
int xisxdigit(int c);
|
||||
int xiswxdigit(wint_t c);
|
||||
int xisalnum(int c);
|
||||
int xiswalnum(wint_t c);
|
||||
int xisprint(int c);
|
||||
int xiswprint(wint_t c);
|
||||
|
||||
long xatol(const char* str);
|
||||
int xatoi(const char* str);
|
||||
long xwtol(const wchar_t* str);
|
||||
int xwtoi(const wchar_t* str);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue