rstdlib

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

rstd_types.h (1976B)


      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   typedef _Float16          f16;
     26 #endif
     27 
     28 typedef u8     b8;
     29 typedef u16    b16;
     30 typedef u32    b32;
     31 typedef u64    b64;
     32 typedef float  f32;
     33 typedef double f64;
     34 typedef s64    sptr;
     35 typedef u64    uptr;
     36 
     37 #define U64_MAX (0xFFFFFFFFFFFFFFFFull)
     38 #define U32_MAX (0xFFFFFFFFul)
     39 #define U16_MAX (0xFFFFu)
     40 #define U8_MAX  (0xFFu)
     41 #define S64_MAX (0x7FFFFFFFFFFFFFFFll)
     42 #define S32_MAX (0x7FFFFFFFl)
     43 #define S16_MAX (0x7FFF)
     44 #define S8_MAX  (0x7F)
     45 
     46 #define GB(a)   ((u64)(a) << 30ULL)
     47 #define MB(a)   ((u64)(a) << 20ULL)
     48 #define KB(a)   ((u64)(a) << 10ULL)
     49 
     50 typedef struct {s64 length; u16 *data;} str16;
     51 typedef struct {s64 length; u8  *data;} str8;
     52 
     53 #define str8(s)      (str8){.length = (s64)sizeof(s) - 1, .data = (u8 *)s}
     54 #define str8_comp(s) {sizeof(s) - 1, (u8 *)s}
     55 
     56 #pragma pack(push, 1)
     57 typedef struct {
     58 	u16 file_type;
     59 	u32 file_size;
     60 	u16 reserved_1;
     61 	u16 reserved_2;
     62 	u32 bitmap_offset;
     63 
     64 	u32 size;
     65 	s32 width;
     66 	s32 height;
     67 	u16 planes;
     68 	u16 bits_per_pixel;
     69 
     70 	u32 compression;
     71 	u32 size_of_bitmap;
     72 
     73 	s32 horizontal_resolution;
     74 	s32 vertical_resolution;
     75 	u32 colours_used;
     76 	u32 colours_important;
     77 
     78 	u32 red_mask;
     79 	u32 green_mask;
     80 	u32 blue_mask;
     81 	u32 alpha_mask;
     82 
     83 	u32 colour_space_type;
     84 	u32 cie_xyz_triples[9];
     85 	u32 gamma_red;
     86 	u32 gamma_green;
     87 	u32 gamma_blue;
     88 } rstd_bitmap_header;
     89 #pragma pack(pop)
     90 
     91 #endif /* RSTD_TYPES_H */