diff options
Diffstat (limited to 'src/web/libc')
| -rw-r--r-- | src/web/libc/include/assert.h | 14 | ||||
| -rw-r--r-- | src/web/libc/include/ctype.h | 7 | ||||
| -rw-r--r-- | src/web/libc/include/endian.h | 21 | ||||
| -rw-r--r-- | src/web/libc/include/inttypes.h | 8 | ||||
| -rw-r--r-- | src/web/libc/include/limits.h | 9 | ||||
| -rw-r--r-- | src/web/libc/include/stdio.h | 19 | ||||
| -rw-r--r-- | src/web/libc/include/stdlib.h | 16 | ||||
| -rw-r--r-- | src/web/libc/include/string.h | 17 | ||||
| -rw-r--r-- | src/web/libc/include/wchar.h | 9 | ||||
| -rw-r--r-- | src/web/libc/include/wctype.h | 18 |
10 files changed, 138 insertions, 0 deletions
diff --git a/src/web/libc/include/assert.h b/src/web/libc/include/assert.h new file mode 100644 index 00000000..fd018947 --- /dev/null +++ b/src/web/libc/include/assert.h @@ -0,0 +1,14 @@ +#ifndef PARDES_WEB_ASSERT_H +#define PARDES_WEB_ASSERT_H + +#ifndef static_assert +#define static_assert _Static_assert +#endif + +#ifdef NDEBUG +#define assert(expression) ((void)0) +#else +#define assert(expression) ((expression) ? (void)0 : __builtin_trap()) +#endif + +#endif diff --git a/src/web/libc/include/ctype.h b/src/web/libc/include/ctype.h new file mode 100644 index 00000000..985c8759 --- /dev/null +++ b/src/web/libc/include/ctype.h @@ -0,0 +1,7 @@ +#ifndef PARDES_WEB_CTYPE_H +#define PARDES_WEB_CTYPE_H + +int isprint(int character); +int isdigit(int character); + +#endif diff --git a/src/web/libc/include/endian.h b/src/web/libc/include/endian.h new file mode 100644 index 00000000..a047c88f --- /dev/null +++ b/src/web/libc/include/endian.h @@ -0,0 +1,21 @@ +#ifndef PARDES_WEB_ENDIAN_H +#define PARDES_WEB_ENDIAN_H + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __BYTE_ORDER __LITTLE_ENDIAN + +#define htole16(value) (value) +#define le16toh(value) (value) +#define htole32(value) (value) +#define le32toh(value) (value) +#define htole64(value) (value) +#define le64toh(value) (value) +#define htobe16(value) __builtin_bswap16(value) +#define be16toh(value) __builtin_bswap16(value) +#define htobe32(value) __builtin_bswap32(value) +#define be32toh(value) __builtin_bswap32(value) +#define htobe64(value) __builtin_bswap64(value) +#define be64toh(value) __builtin_bswap64(value) + +#endif diff --git a/src/web/libc/include/inttypes.h b/src/web/libc/include/inttypes.h new file mode 100644 index 00000000..7e795746 --- /dev/null +++ b/src/web/libc/include/inttypes.h @@ -0,0 +1,8 @@ +#ifndef PARDES_WEB_INTTYPES_H +#define PARDES_WEB_INTTYPES_H + +#include <stdint.h> + +#define PRId32 "d" + +#endif diff --git a/src/web/libc/include/limits.h b/src/web/libc/include/limits.h new file mode 100644 index 00000000..6ba31375 --- /dev/null +++ b/src/web/libc/include/limits.h @@ -0,0 +1,9 @@ +#ifndef PARDES_WEB_LIMITS_H +#define PARDES_WEB_LIMITS_H + +#define CHAR_BIT __CHAR_BIT__ +#define INT_MAX __INT_MAX__ +#define UINT_MAX (__INT_MAX__ * 2U + 1U) +#define USHRT_MAX (__SHRT_MAX__ * 2U + 1U) + +#endif diff --git a/src/web/libc/include/stdio.h b/src/web/libc/include/stdio.h new file mode 100644 index 00000000..92895054 --- /dev/null +++ b/src/web/libc/include/stdio.h @@ -0,0 +1,19 @@ +#ifndef PARDES_WEB_STDIO_H +#define PARDES_WEB_STDIO_H + +#include <stdarg.h> +#include <stddef.h> + +typedef struct PardesWebFile FILE; + +#define stderr ((FILE *)0) + +int fprintf(FILE *stream, const char *format, ...); +int fclose(FILE *stream); +FILE *fdopen(int descriptor, const char *mode); +int fputc(int character, FILE *stream); +int fputs(const char *string, FILE *stream); +int snprintf(char *restrict buffer, size_t size, const char *restrict format, ...); +int vsnprintf(char *restrict buffer, size_t size, const char *restrict format, va_list args); + +#endif diff --git a/src/web/libc/include/stdlib.h b/src/web/libc/include/stdlib.h new file mode 100644 index 00000000..cb280904 --- /dev/null +++ b/src/web/libc/include/stdlib.h @@ -0,0 +1,16 @@ +#ifndef PARDES_WEB_STDLIB_H +#define PARDES_WEB_STDLIB_H + +#include <stddef.h> + +#ifndef NULL +#define NULL ((void *)0) +#endif + +void *malloc(size_t size); +void *calloc(size_t count, size_t size); +void *realloc(void *ptr, size_t size); +void free(void *ptr); +_Noreturn void abort(void); + +#endif diff --git a/src/web/libc/include/string.h b/src/web/libc/include/string.h new file mode 100644 index 00000000..7e5b8783 --- /dev/null +++ b/src/web/libc/include/string.h @@ -0,0 +1,17 @@ +#ifndef PARDES_WEB_STRING_H +#define PARDES_WEB_STRING_H + +#include <stddef.h> + +void *memchr(const void *ptr, int value, size_t count); +int memcmp(const void *lhs, const void *rhs, size_t count); +void *memcpy(void *restrict dest, const void *restrict src, size_t count); +void *memmove(void *dest, const void *src, size_t count); +void *memset(void *dest, int value, size_t count); +size_t strlen(const char *str); +char *strchr(const char *str, int character); +int strcmp(const char *lhs, const char *rhs); +int strncmp(const char *lhs, const char *rhs, size_t count); +char *strncpy(char *restrict dest, const char *restrict src, size_t count); + +#endif diff --git a/src/web/libc/include/wchar.h b/src/web/libc/include/wchar.h new file mode 100644 index 00000000..4888631e --- /dev/null +++ b/src/web/libc/include/wchar.h @@ -0,0 +1,9 @@ +#ifndef PARDES_WEB_WCHAR_H +#define PARDES_WEB_WCHAR_H + +#include <stddef.h> +#include <wctype.h> + +typedef __WCHAR_TYPE__ wchar_t; + +#endif diff --git a/src/web/libc/include/wctype.h b/src/web/libc/include/wctype.h new file mode 100644 index 00000000..77bbabe9 --- /dev/null +++ b/src/web/libc/include/wctype.h @@ -0,0 +1,18 @@ +#ifndef PARDES_WEB_WCTYPE_H +#define PARDES_WEB_WCTYPE_H + +#include <stddef.h> + +typedef unsigned int wint_t; + +int iswalnum(wint_t character); +int iswalpha(wint_t character); +int iswblank(wint_t character); +int iswdigit(wint_t character); +int iswlower(wint_t character); +int iswspace(wint_t character); +int iswupper(wint_t character); +int iswxdigit(wint_t character); +wint_t towupper(wint_t character); + +#endif |
