#include "../def.h" #include "../std.h" #include "../str.h" #include #include void *com_std_alloc(void *ptr, size_t size) { return NULL; } void com_std_assert(bool holds) { /* TODO: Write line info to stderr as well. */ if (!holds) com_std_syscall(__NR_exit, -1, 0, 0); } /* TODO: Figure out a way to make it easy to deal with. */ void com_std_printf(char const *fmt, ...) { com_std_syscall(1, 1, (intptr_t)fmt, com_str_ext_len(fmt)); } void com_std_print_str(char const *str, uint32_t len, bool newline) { com_std_syscall(1, 1, (intptr_t)str, len); if (newline) com_std_syscall(1, 1, (intptr_t)"\n", 1); } double com_std_sqrt(double v) { return __builtin_sqrt(v); } double com_std_fabs(double v) { return __builtin_fabs(v); } #if COM_DEF_COMPILER == COM_DEF_COMPILER_CLANG double com_std_sin(double v) { return __builtin_sin(v); } double com_std_cos(double v) { return __builtin_cos(v); } #else /* TODO: Use fsin/fcos, no matter how slow. */ double com_std_sin(double v) { return 0; } double com_std_cos(double v) { return 0; } #endif // void memcpy(void *__restrict dest, const void *__restrict src, size_t n) { // __builtin_memcpy(dest, src, n); // };