rstdlib

Generic Base Layer for writing C Programs
git clone anongit@rnpnr.xyz:rstdlib.git
Log | Files | Refs | Feed | README | LICENSE

rstd_types.h (1412B)


      1 ////////////////////////
      2 // NOTE: Standard Types
      3 
      4 #ifndef RSTD_TYPES_H
      5 #define RSTD_TYPES_H
      6 
      7 #if COMPILER_MSVC
      8   typedef unsigned __int64  u64;
      9   typedef signed   __int64  s64;
     10   typedef unsigned __int32  u32;
     11   typedef signed   __int32  s32;
     12   typedef unsigned __int16  u16;
     13   typedef signed   __int16  s16;
     14   typedef unsigned __int8   u8;
     15   typedef signed   __int8   s8;
     16 #else
     17   typedef __UINT64_TYPE__   u64;
     18   typedef __INT64_TYPE__    s64;
     19   typedef __UINT32_TYPE__   u32;
     20   typedef __INT32_TYPE__    s32;
     21   typedef __UINT16_TYPE__   u16;
     22   typedef __INT16_TYPE__    s16;
     23   typedef __UINT8_TYPE__    u8;
     24   typedef __INT8_TYPE__     s8;
     25 #endif
     26 
     27 typedef u8     b8;
     28 typedef u16    b16;
     29 typedef u32    b32;
     30 typedef u64    b64;
     31 typedef float  f32;
     32 typedef double f64;
     33 typedef s64    sptr;
     34 typedef u64    uptr;
     35 
     36 #define U64_MAX (0xFFFFFFFFFFFFFFFFull)
     37 #define U32_MAX (0xFFFFFFFFul)
     38 #define U16_MAX (0xFFFFu)
     39 #define U8_MAX  (0xFFu)
     40 #define S64_MAX (0x7FFFFFFFFFFFFFFFll)
     41 #define S32_MAX (0x7FFFFFFFl)
     42 #define S16_MAX (0x7FFF)
     43 #define S8_MAX  (0x7F)
     44 
     45 #define GB(a)   ((u64)(a) << 30ULL)
     46 #define MB(a)   ((u64)(a) << 20ULL)
     47 #define KB(a)   ((u64)(a) << 10ULL)
     48 
     49 typedef struct {s64 length; u16 *str;} str16;
     50 typedef struct {s64 length; union {u8 *str; s8 *c_str;}; } str8;
     51 #define str8(s) (str8){.length = (s64)sizeof(s) - 1, .str = (u8 *)s}
     52 #define str8_comp(s) {sizeof(s) - 1, (u8 *)s}
     53 
     54 #endif /* RSTD_TYPES_H */