update some stuff from space-trading
This commit is contained in:
@@ -189,6 +189,10 @@
|
||||
# define assertBreak() (*(volatile int*)0 = 0)
|
||||
#endif
|
||||
|
||||
#ifndef offsetof
|
||||
# define offsetof(st, m) ((size_t)&(((st*)0)->m))
|
||||
#endif
|
||||
|
||||
#if ENABLE_ASSERT
|
||||
# define assert(c) stmnt( if (!(c)){ assertBreak(); } )
|
||||
#else
|
||||
@@ -319,6 +323,31 @@ typedef enum Utf8Character {
|
||||
Utf8Character_Count,
|
||||
} Utf8Character;
|
||||
|
||||
typedef enum FieldType {
|
||||
FieldTypeU8,
|
||||
FieldTypeU16,
|
||||
FieldTypeU32,
|
||||
FieldTypeFloat,
|
||||
FieldTypeString,
|
||||
FieldTypeEnum,
|
||||
FieldType_Count,
|
||||
} FieldType;
|
||||
|
||||
typedef struct FieldDescriptor {
|
||||
str name;
|
||||
FieldType type;
|
||||
size_t offset;
|
||||
int width; // column width for display
|
||||
str* enum_vals;
|
||||
} FieldDescriptor;
|
||||
|
||||
typedef struct TableDrawInfo {
|
||||
u32 x_offset;
|
||||
u32 y_offset;
|
||||
u32 rows;
|
||||
u32 cols;
|
||||
} TableDrawInfo;
|
||||
|
||||
typedef struct Box {
|
||||
u32 x;
|
||||
u32 y;
|
||||
@@ -336,6 +365,11 @@ typedef struct Pos2 {
|
||||
u16 y;
|
||||
} Pos2;
|
||||
|
||||
typedef struct Pos2u8 {
|
||||
u8 x;
|
||||
u8 y;
|
||||
} Pos2u8;
|
||||
|
||||
typedef union Range1u32 Range1u32;
|
||||
union Range1u32
|
||||
{
|
||||
@@ -399,6 +433,7 @@ union Range1f32
|
||||
# include <ws2tcpip.h>
|
||||
# include <timeapi.h>
|
||||
# include <conio.h>
|
||||
# include <pthread.h>
|
||||
typedef struct {
|
||||
DWORD input_mode;
|
||||
DWORD output_mode;
|
||||
@@ -468,6 +503,8 @@ global const u64 MAX_u64 = 0xffffffffffffffffull;
|
||||
global const u32 MAX_u32 = 0xffffffff;
|
||||
global const u16 MAX_u16 = 0xffff;
|
||||
global const u8 MAX_u8 = 0xff;
|
||||
#define EULERS_E (2.71828)
|
||||
#define PI (3.14159265358979323846)
|
||||
|
||||
///// CUSTOM ENTRY POINT
|
||||
/* TODO?
|
||||
|
||||
@@ -34,6 +34,17 @@ fn u64 writeU16ToBufferLE(u8* buffer, u16 value) {
|
||||
return 2;// number of bytes written
|
||||
}
|
||||
|
||||
fn u64 writeF32ToBufferLE(u8* buffer, f32 value) {
|
||||
u32 bits;
|
||||
memcpy(&bits, &value, sizeof(u32)); // reinterpret float bits as integer
|
||||
|
||||
buffer[0] = (u8)(bits & 0xFF);
|
||||
buffer[1] = (u8)((bits >> 8) & 0xFF);
|
||||
buffer[2] = (u8)((bits >> 16) & 0xFF);
|
||||
buffer[3] = (u8)((bits >> 24) & 0xFF);
|
||||
return 4;// number of bytes written
|
||||
}
|
||||
|
||||
fn u64 readU64FromBufferLE(u8 *buffer) {
|
||||
return (u64)buffer[0] |
|
||||
((u64)buffer[1] << 8) |
|
||||
@@ -64,3 +75,15 @@ fn u16 readU16FromBufferLE(u8 *buffer) {
|
||||
((u16)buffer[1] << 8);
|
||||
}
|
||||
|
||||
fn f32 readF32FromBufferLE(u8 *buf) {
|
||||
u32 bits = 0;
|
||||
bits |= (u32)(u8)buf[0] << 0;
|
||||
bits |= (u32)(u8)buf[1] << 8;
|
||||
bits |= (u32)(u8)buf[2] << 16;
|
||||
bits |= (u32)(u8)buf[3] << 24;
|
||||
|
||||
f32 value;
|
||||
memcpy(&value, &bits, sizeof(f32));
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user