update some stuff from space-trading
This commit is contained in:
@@ -189,6 +189,10 @@
|
|||||||
# define assertBreak() (*(volatile int*)0 = 0)
|
# define assertBreak() (*(volatile int*)0 = 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef offsetof
|
||||||
|
# define offsetof(st, m) ((size_t)&(((st*)0)->m))
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ENABLE_ASSERT
|
#if ENABLE_ASSERT
|
||||||
# define assert(c) stmnt( if (!(c)){ assertBreak(); } )
|
# define assert(c) stmnt( if (!(c)){ assertBreak(); } )
|
||||||
#else
|
#else
|
||||||
@@ -319,6 +323,31 @@ typedef enum Utf8Character {
|
|||||||
Utf8Character_Count,
|
Utf8Character_Count,
|
||||||
} Utf8Character;
|
} 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 {
|
typedef struct Box {
|
||||||
u32 x;
|
u32 x;
|
||||||
u32 y;
|
u32 y;
|
||||||
@@ -336,6 +365,11 @@ typedef struct Pos2 {
|
|||||||
u16 y;
|
u16 y;
|
||||||
} Pos2;
|
} Pos2;
|
||||||
|
|
||||||
|
typedef struct Pos2u8 {
|
||||||
|
u8 x;
|
||||||
|
u8 y;
|
||||||
|
} Pos2u8;
|
||||||
|
|
||||||
typedef union Range1u32 Range1u32;
|
typedef union Range1u32 Range1u32;
|
||||||
union Range1u32
|
union Range1u32
|
||||||
{
|
{
|
||||||
@@ -399,6 +433,7 @@ union Range1f32
|
|||||||
# include <ws2tcpip.h>
|
# include <ws2tcpip.h>
|
||||||
# include <timeapi.h>
|
# include <timeapi.h>
|
||||||
# include <conio.h>
|
# include <conio.h>
|
||||||
|
# include <pthread.h>
|
||||||
typedef struct {
|
typedef struct {
|
||||||
DWORD input_mode;
|
DWORD input_mode;
|
||||||
DWORD output_mode;
|
DWORD output_mode;
|
||||||
@@ -468,6 +503,8 @@ global const u64 MAX_u64 = 0xffffffffffffffffull;
|
|||||||
global const u32 MAX_u32 = 0xffffffff;
|
global const u32 MAX_u32 = 0xffffffff;
|
||||||
global const u16 MAX_u16 = 0xffff;
|
global const u16 MAX_u16 = 0xffff;
|
||||||
global const u8 MAX_u8 = 0xff;
|
global const u8 MAX_u8 = 0xff;
|
||||||
|
#define EULERS_E (2.71828)
|
||||||
|
#define PI (3.14159265358979323846)
|
||||||
|
|
||||||
///// CUSTOM ENTRY POINT
|
///// CUSTOM ENTRY POINT
|
||||||
/* TODO?
|
/* TODO?
|
||||||
|
|||||||
@@ -34,6 +34,17 @@ fn u64 writeU16ToBufferLE(u8* buffer, u16 value) {
|
|||||||
return 2;// number of bytes written
|
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) {
|
fn u64 readU64FromBufferLE(u8 *buffer) {
|
||||||
return (u64)buffer[0] |
|
return (u64)buffer[0] |
|
||||||
((u64)buffer[1] << 8) |
|
((u64)buffer[1] << 8) |
|
||||||
@@ -64,3 +75,15 @@ fn u16 readU16FromBufferLE(u8 *buffer) {
|
|||||||
((u16)buffer[1] << 8);
|
((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