summaryrefslogtreecommitdiff
path: root/src/web/libc/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/libc/include')
-rw-r--r--src/web/libc/include/assert.h14
-rw-r--r--src/web/libc/include/ctype.h7
-rw-r--r--src/web/libc/include/endian.h21
-rw-r--r--src/web/libc/include/inttypes.h8
-rw-r--r--src/web/libc/include/limits.h9
-rw-r--r--src/web/libc/include/stdio.h19
-rw-r--r--src/web/libc/include/stdlib.h16
-rw-r--r--src/web/libc/include/string.h17
-rw-r--r--src/web/libc/include/wchar.h9
-rw-r--r--src/web/libc/include/wctype.h18
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