#pragma once #include <u.h>#include <libc.h>#include <ctype.h>#include <mp.h> #ifdef NDEBUG#undef assert#define assert(x)#define static_assert(a,b)#else#define static_assert_cat(a, b) a##b#define static_assert_name(line) static_assert_cat(static_assert_, line)#define static_assert(must_be_true, message) \ static const void *static_assert_name(__LINE__) \ [must_be_true ? 2 : -1] = { \ message, \ static_assert_name(__LINE__), \ }#endif #define __os_name__ "plan9"#define SYS_DEV_NULL "/dev/null" int sl_popcount(unsigned int w);int sl_clz(unsigned int x); typedef jmp_buf sl_jmp_buf;#define sl_setjmp(e) setjmp((e))#define sl_longjmp(e, v) longjmp((e), (v)) #define sys_exit(status, code) exits(status);#define sys_setcallpc(arg) do{sl.cpc = (void*)getcallerpc(&arg);}while(0)void sys_setcurrpc(int dummy);void sys_seed(void *p, int sz); #if defined(__amd64__) || \ defined(__arm64__) || \ defined(__mips64__) || \ defined(__power64__) || \ defined(__sparc64__)#define BITS64#define FWD_BIT (sl_v)(1ULL<<63)#define PRIdPTR PRId64#define PRIuPTR PRIu64#define PRIxPTR PRIux64typedef long long ssize;#else#define FWD_BIT (sl_v)(1U<<31)#define PRIdPTR "ld"#define PRIuPTR "lud"#define PRIxPTR "lux"typedef long ssize;#endif #if defined(__386__) || defined(__amd64__) || defined(__arm64__)#define MEM_UNALIGNED_ACCESS#endif int unsetenv(const char *name);#define setenv(name, val, overwrite) putenv(name, val)#define isinf(x) isInf(x, 0)#define isnan(x) isNaN(x) #define vsnprintf vsnprint#define vdprintf vfprint#define snprintf snprint#define strcasecmp cistrcmp#define signbit(r) ((*(u64int*)&(r)) & (1ULL<<63))#define isfinite(d) (((*(u64int*)&(d))&0x7ff0000000000000ULL) != 0x7ff0000000000000ULL)double trunc(double x); #define PRId32 "d"#define PRIu32 "ud"#define PRIx32 "x"#define PRId64 "lld"#define PRIu64 "llud"#define PRIx64 "llx"#define PRIux64 "llux" #define INT32_MAX 0x7fffffff#define UINT32_MAX 0xffffffffU#define INT32_MIN (-INT32_MAX-1)#define INT64_MIN ((s64int)0x8000000000000000ULL)#define INT64_MAX 0x7fffffffffffffffLL#define UINT64_MAX 0xffffffffffffffffULL#define ULONG_MAX UINT32_MAX#define DBL_EPSILON 2.2204460492503131e-16#define FLT_EPSILON 1.19209290e-07 enum { SEEK_SET, SEEK_CUR, SEEK_END, STDIN_FILENO = 0, STDOUT_FILENO, STDERR_FILENO,}; #define F_OK 0 #define LITTLE_ENDIAN 1234#define BIG_ENDIAN 4321 #if defined(__mips__) || \ defined(__power__) || defined(__power64__) || \ defined(__sparc__) || defined(__sparc64__)#define BYTE_ORDER BIG_ENDIAN#else#define BYTE_ORDER LITTLE_ENDIAN#endif typedef vlong soffset;typedef enum { false, true } bool; int ftruncate(int f, soffset sz); #define sl_packed#define sl_fallthrough do{}while(0)#define sl_unlikely(x) (x)#define sl_likely(x) (x)#define sl_printfmt(x, y)#define sl_thread(x) x#define sl_prefetch(x) do{}while(0)#define sl_constfn#define sl_purefn#define sl_hotfn#define sl_returns_nonnull#define sl_nonnull(...)#define sl_aligned(x)#define sl_rd(...)#define sl_wr(...)#define sl_cstr(x)#define sl_fd(x)#define sl_fd_rd(x)#define sl_fd_wr(x)#define sl_alloc#define sl_enum_flags#define sl_offsetof(x, y) offsetof(x, y) #include "inc/mem.h"#include "inc/overflow.h"
#pragma once
#include <u.h>
#include <libc.h>
#include <ctype.h>
#include <mp.h>
#ifdef NDEBUG
#undef assert
#define assert(x)
#define static_assert(a,b)
#else
#define static_assert_cat(a, b) a##b
#define static_assert_name(line) static_assert_cat(static_assert_, line)
#define static_assert(must_be_true, message) \
static const void *static_assert_name(__LINE__) \
[must_be_true ? 2 : -1] = { \
message, \
static_assert_name(__LINE__), \
}
#endif
#define __os_name__ "plan9"
#define SYS_DEV_NULL "/dev/null"
int sl_popcount(unsigned int w);
int sl_clz(unsigned int x);
typedef jmp_buf sl_jmp_buf;
#define sl_setjmp(e) setjmp((e))
#define sl_longjmp(e, v) longjmp((e), (v))
#define sys_exit(status, code) exits(status);
#define sys_setcallpc(arg) do{sl.cpc = (void*)getcallerpc(&arg);}while(0)
void sys_setcurrpc(int dummy);
void sys_seed(void *p, int sz);
#if defined(__amd64__) || \
defined(__arm64__) || \
defined(__mips64__) || \
defined(__power64__) || \
defined(__sparc64__)
#define BITS64
#define FWD_BIT (sl_v)(1ULL<<63)
#define PRIdPTR PRId64
#define PRIuPTR PRIu64
#define PRIxPTR PRIux64
typedef long long ssize;
#else
#define FWD_BIT (sl_v)(1U<<31)
#define PRIdPTR "ld"
#define PRIuPTR "lud"
#define PRIxPTR "lux"
typedef long ssize;
#endif
#if defined(__386__) || defined(__amd64__) || defined(__arm64__)
#define MEM_UNALIGNED_ACCESS
#endif
int unsetenv(const char *name);
#define setenv(name, val, overwrite) putenv(name, val)
#define isinf(x) isInf(x, 0)
#define isnan(x) isNaN(x)
#define vsnprintf vsnprint
#define vdprintf vfprint
#define snprintf snprint
#define strcasecmp cistrcmp
#define signbit(r) ((*(u64int*)&(r)) & (1ULL<<63))
#define isfinite(d) (((*(u64int*)&(d))&0x7ff0000000000000ULL) != 0x7ff0000000000000ULL)
double trunc(double x);
#define PRId32 "d"
#define PRIu32 "ud"
#define PRIx32 "x"
#define PRId64 "lld"
#define PRIu64 "llud"
#define PRIx64 "llx"
#define PRIux64 "llux"
#define INT32_MAX 0x7fffffff
#define UINT32_MAX 0xffffffffU
#define INT32_MIN (-INT32_MAX-1)
#define INT64_MIN ((s64int)0x8000000000000000ULL)
#define INT64_MAX 0x7fffffffffffffffLL
#define UINT64_MAX 0xffffffffffffffffULL
#define ULONG_MAX UINT32_MAX
#define DBL_EPSILON 2.2204460492503131e-16
#define FLT_EPSILON 1.19209290e-07
enum {
SEEK_SET,
SEEK_CUR,
SEEK_END,
STDIN_FILENO = 0,
STDOUT_FILENO,
STDERR_FILENO,
};
#define F_OK 0
#define LITTLE_ENDIAN 1234
#define BIG_ENDIAN 4321
#if defined(__mips__) || \
defined(__power__) || defined(__power64__) || \
defined(__sparc__) || defined(__sparc64__)
#define BYTE_ORDER BIG_ENDIAN
#else
#define BYTE_ORDER LITTLE_ENDIAN
#endif
typedef vlong soffset;
typedef enum { false, true } bool;
int ftruncate(int f, soffset sz);
#define sl_packed
#define sl_fallthrough do{}while(0)
#define sl_unlikely(x) (x)
#define sl_likely(x) (x)
#define sl_printfmt(x, y)
#define sl_thread(x) x
#define sl_prefetch(x) do{}while(0)
#define sl_constfn
#define sl_purefn
#define sl_hotfn
#define sl_returns_nonnull
#define sl_nonnull(...)
#define sl_aligned(x)
#define sl_rd(...)
#define sl_wr(...)
#define sl_cstr(x)
#define sl_fd(x)
#define sl_fd_rd(x)
#define sl_fd_wr(x)
#define sl_alloc
#define sl_enum_flags
#define sl_offsetof(x, y) offsetof(x, y)
#include "inc/mem.h"
#include "inc/overflow.h"