#pragma once typedef uint8_t u8int;typedef uint16_t u16int;typedef uint32_t u32int;typedef uint64_t u64int;typedef uintptr_t uintptr; typedef int8_t s8int;typedef int16_t s16int;typedef int32_t s32int;typedef int64_t s64int;typedef intptr_t intptr; typedef ssize_t ssize;typedef size_t usize;typedef off_t soffset; #define sl_unlikely(x) __builtin_expect(!!(x), 0)#define sl_likely(x) __builtin_expect(!!(x), 1)#define sl_printfmt(x, y) __attribute__((format(printf, x, y)))#if defined(NDEBUG) && !defined(__macos__) && !defined(__dos__)#define sl_thread(x) __thread x#else#define sl_thread(x) x#endif#if defined(__TINYC__)#define sl_prefetch(x) do{}while(0)#else#define sl_prefetch(x) __builtin_prefetch(x)#endif#define sl_packed __attribute__((packed))#define sl_fallthrough __attribute__((fallthrough))#define sl_constfn __attribute__((const))#define sl_purefn __attribute__((pure))#define sl_hotfn __attribute__((hot))#define sl_returns_nonnull __attribute__((returns_nonnull))#define sl_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))#define sl_aligned(x) __attribute__((aligned(x)))#define sl_popcount(x) __builtin_popcount(x)#define sl_clz(x) __builtin_clz(x)#define sl_alloc __attribute__((malloc))#define sl_offsetof(x, y) __builtin_offsetof(x, y) #if !defined(__has_attribute)#define __has_attribute(x) 0#endif #if __has_attribute(access)#define sl_rd(...) __attribute__((access(read_only, __VA_ARGS__)))#define sl_wr(...) __attribute__((access(write_only, __VA_ARGS__)))#else#define sl_rd(...)#define sl_wr(...)#endif #if __has_attribute(null_terminated_string_arg)#define sl_cstr(x) __attribute__((null_terminated_string_arg(x)))#else#define sl_cstr(x)#endif #if __has_attribute(fd_arg) && __has_attribute(fd_arg_read) && __has_attribute(fd_arg_write)#define sl_fd(x) __attribute__((fd_arg(x)))#define sl_fd_rd(x) __attribute__((fd_arg_read(x)))#define sl_fd_wr(x) __attribute__((fd_arg_write(x)))#else#define sl_fd(x)#define sl_fd_rd(x)#define sl_fd_wr(x)#endif #if __has_attribute(flag_enum)#define sl_enum_flags __attribute__((flag_enum))#else#define sl_enum_flags#endif #if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) || !defined(BIG_ENDIAN)#error unknown endian#endif #if !defined(__TINYC__)#define sadd_overflow __builtin_add_overflow#define sadd_overflow_64 __builtin_add_overflow#define smul_overflow_64 __builtin_mul_overflow#else#include "overflow.h"#endif
#pragma once
typedef uint8_t u8int;
typedef uint16_t u16int;
typedef uint32_t u32int;
typedef uint64_t u64int;
typedef uintptr_t uintptr;
typedef int8_t s8int;
typedef int16_t s16int;
typedef int32_t s32int;
typedef int64_t s64int;
typedef intptr_t intptr;
typedef ssize_t ssize;
typedef size_t usize;
typedef off_t soffset;
#define sl_unlikely(x) __builtin_expect(!!(x), 0)
#define sl_likely(x) __builtin_expect(!!(x), 1)
#define sl_printfmt(x, y) __attribute__((format(printf, x, y)))
#if defined(NDEBUG) && !defined(__macos__) && !defined(__dos__)
#define sl_thread(x) __thread x
#else
#define sl_thread(x) x
#endif
#if defined(__TINYC__)
#define sl_prefetch(x) do{}while(0)
#else
#define sl_prefetch(x) __builtin_prefetch(x)
#endif
#define sl_packed __attribute__((packed))
#define sl_fallthrough __attribute__((fallthrough))
#define sl_constfn __attribute__((const))
#define sl_purefn __attribute__((pure))
#define sl_hotfn __attribute__((hot))
#define sl_returns_nonnull __attribute__((returns_nonnull))
#define sl_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))
#define sl_aligned(x) __attribute__((aligned(x)))
#define sl_popcount(x) __builtin_popcount(x)
#define sl_clz(x) __builtin_clz(x)
#define sl_alloc __attribute__((malloc))
#define sl_offsetof(x, y) __builtin_offsetof(x, y)
#if !defined(__has_attribute)
#define __has_attribute(x) 0
#endif
#if __has_attribute(access)
#define sl_rd(...) __attribute__((access(read_only, __VA_ARGS__)))
#define sl_wr(...) __attribute__((access(write_only, __VA_ARGS__)))
#else
#define sl_rd(...)
#define sl_wr(...)
#endif
#if __has_attribute(null_terminated_string_arg)
#define sl_cstr(x) __attribute__((null_terminated_string_arg(x)))
#else
#define sl_cstr(x)
#endif
#if __has_attribute(fd_arg) && __has_attribute(fd_arg_read) && __has_attribute(fd_arg_write)
#define sl_fd(x) __attribute__((fd_arg(x)))
#define sl_fd_rd(x) __attribute__((fd_arg_read(x)))
#define sl_fd_wr(x) __attribute__((fd_arg_write(x)))
#else
#define sl_fd(x)
#define sl_fd_rd(x)
#define sl_fd_wr(x)
#endif
#if __has_attribute(flag_enum)
#define sl_enum_flags __attribute__((flag_enum))
#else
#define sl_enum_flags
#endif
#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) || !defined(BIG_ENDIAN)
#error unknown endian
#endif
#if !defined(__TINYC__)
#define sadd_overflow __builtin_add_overflow
#define sadd_overflow_64 __builtin_add_overflow
#define smul_overflow_64 __builtin_mul_overflow
#else
#include "overflow.h"
#endif