Rename some stuff.
This commit is contained in:
parent
db6b9fcdc1
commit
6695101c48
17
CMakeLists.txt
Normal file
17
CMakeLists.txt
Normal file
@ -0,0 +1,17 @@
|
||||
project(rtcore C)
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
|
||||
function(compile_opts target)
|
||||
target_compile_options(${target} PRIVATE
|
||||
$<IF:$<C_COMPILER_ID:GNU>,
|
||||
-Wall -Wextra -Wpedantic, # -Wno-unused-parameter,
|
||||
>
|
||||
$<IF:$<C_COMPILER_ID:MSVC>,
|
||||
/W4,
|
||||
>)
|
||||
set_target_properties(${target} PROPERTIES COMPILE_WARNING_AS_ERROR ON)
|
||||
endfunction()
|
||||
|
||||
add_executable(rtcore_test rtcore_test.c rtcore.h)
|
||||
compile_opts(rtcore_test)
|
||||
@ -1,2 +1,4 @@
|
||||
-DRT_JSON_IMPLEMENTATION
|
||||
-DRT_CORE_IMPLEMENTATION
|
||||
-DRT_MPMC_IMPLEMENTATION
|
||||
-std=c99
|
||||
63
rtcore.h
63
rtcore.h
@ -88,14 +88,14 @@ typedef int32_t b32;
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
#ifdef __has_builtin
|
||||
#if __has_builtin(__builtin_expect)
|
||||
#define likely(x) __builtin_expect(!!(x), 1)
|
||||
#define unlikely(x) __builtin_expect(!!(x), 0)
|
||||
#define Likely(x) __builtin_expect(!!(x), 1)
|
||||
#define Unlikely(x) __builtin_expect(!!(x), 0)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifndef likely
|
||||
#define likely(x) (x)
|
||||
#define unlikely(x) (x)
|
||||
#ifndef Likely
|
||||
#define Likely(x) (x)
|
||||
#define Unlikely(x) (x)
|
||||
#endif
|
||||
|
||||
#define internal static
|
||||
@ -107,20 +107,20 @@ typedef int32_t b32;
|
||||
#define exported __dllexport
|
||||
#endif
|
||||
|
||||
#define min(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define max(a, b) ((a) > (b) ? (a) : (b))
|
||||
#define Min(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define Max(a, b) ((a) > (b) ? (a) : (b))
|
||||
|
||||
#define kilobytes(n) ((n) * 1024)
|
||||
#define megabytes(n) ((n) * 1024 * 1024)
|
||||
#define gigabytes(n) ((n) * 1024 * 1024 * 1024)
|
||||
#define Kilobytes(n) ((n) * 1024)
|
||||
#define Megabytes(n) ((n) * 1024 * 1024)
|
||||
#define Gigabytes(n) ((n) * 1024 * 1024 * 1024)
|
||||
|
||||
#define isizeof(x) (isize)sizeof(x)
|
||||
#define ISizeof(x) (isize)sizeof(x)
|
||||
/* number of elements in array a */
|
||||
#define countof(a) (isize)(sizeof(a) / sizeof(*(a)))
|
||||
#define CountOf(a) (isize)(sizeof(a) / sizeof(*(a)))
|
||||
/* number of characters in string constant s (exluding the terminating 0) */
|
||||
#define lengthof(s) (countof(s) - 1)
|
||||
#define LengthOf(s) (CountOf(s) - 1)
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
#define assert(x) \
|
||||
#define Assert(x) \
|
||||
while (!(x)) \
|
||||
{ \
|
||||
__builtin_trap(); \
|
||||
@ -129,7 +129,7 @@ typedef int32_t b32;
|
||||
|
||||
#define force_inline inline __attribute__((always_inline))
|
||||
#elif defined(_MSC_VER)
|
||||
#define assert(x) \
|
||||
#define Assert(x) \
|
||||
if (!(x)) \
|
||||
{ \
|
||||
__debugbreak(); \
|
||||
@ -137,20 +137,20 @@ typedef int32_t b32;
|
||||
|
||||
#define force_inline __forceinline
|
||||
#else
|
||||
#define assert(x)
|
||||
#define Assert(x)
|
||||
#define force_inline inline
|
||||
#endif
|
||||
|
||||
#if __STDC_VERSION__ >= 201112L
|
||||
/* C11 introduces _Alignof */
|
||||
#define ALIGNOF(T) _Alignof(T)
|
||||
#define AlignOf(T) _Alignof(T)
|
||||
#else
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
/* Use the compiler-specific keyword/operator */
|
||||
#define ALIGNOF(T) __alignof__(T)
|
||||
#define AlignOf(T) __alignof__(T)
|
||||
#else
|
||||
/* Fallback to the portable C89/C99 trick */
|
||||
#define ALIGNOF(T) offsetof(struct { char c; T member; }, member)
|
||||
#define AlignOf(T) offsetof(struct { char c; T member; }, member)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -200,17 +200,10 @@ enum
|
||||
ALLOC_SOFTFAIL = 0x2,
|
||||
};
|
||||
|
||||
/* allocate objects from an arena.
|
||||
* usage is one of:
|
||||
* - a(a, t) - allocate one object of type t from arena a
|
||||
* - alloc(a, t, n) - allocate n objects of type t from arena a
|
||||
* - (a, t, n, f) - allocate n objects of type t from arena a using flags f
|
||||
*/
|
||||
#define alloc(...) allocx(__VA_ARGS__, alloc4, alloc3, alloc2)(__VA_ARGS__)
|
||||
#define allocx(a, b, c, d, e, ...) e
|
||||
#define alloc2(a, t) (t *)ArenaAlloc(a, isizeof(t), ALIGNOF(t), 1, 0)
|
||||
#define alloc3(a, t, n) (t *)ArenaAlloc(a, isizeof(t), ALIGNOF(t), n, 0)
|
||||
#define alloc4(a, t, n, f) (t *)ArenaAlloc(a, isizeof(t), ALIGNOF(t), n, f)
|
||||
#define Alloc(_arena, _t) (_t *)ArenaAlloc(_arena, ISizeof(_t), AlignOf(_t), 1, 0)
|
||||
#define AllocFlags(_arena, _t, _flags) (_t *)ArenaAlloc(_arena, ISizeof(_t), AlignOf(_t), 1, (_flags))
|
||||
#define AllocArray(_arena, _t, _n) (_t *)ArenaAlloc(_arena, ISizeof(_t), AlignOf(_t), (_n), 0)
|
||||
#define AllocArrayFlags(_arena, _t, _n, _flags) (_t *)ArenaAlloc(_arena, ISizeof(_t), AlignOf(_t), (_n), (_flags))
|
||||
|
||||
RTC_API void *ArenaAlloc(arena *a, isize size, isize align, isize n, int flags);
|
||||
|
||||
@ -224,7 +217,7 @@ typedef struct s8
|
||||
isize length;
|
||||
} s8;
|
||||
#define S8(_s) \
|
||||
(s8) { .data = (u8 *)_s, .length = lengthof(_s), }
|
||||
(s8) { .data = (u8 *)_s, .length = LengthOf(_s), }
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@ -515,7 +508,7 @@ S8Equals(s8 a, s8 b)
|
||||
RTC_API isize
|
||||
S8Compare(s8 a, s8 b)
|
||||
{
|
||||
isize n = min(a.length, b.length);
|
||||
isize n = Min(a.length, b.length);
|
||||
for (isize i = 0; i < n; ++i)
|
||||
{
|
||||
if (a.data[i] != b.data[i])
|
||||
@ -603,7 +596,7 @@ RTC_API s8
|
||||
S8Clone(s8 s, arena *a)
|
||||
{
|
||||
s8 c = {0};
|
||||
c.data = alloc(a, u8, s.length);
|
||||
c.data = AllocArray(a, u8, s.length);
|
||||
c.length = s.length;
|
||||
memcpy(c.data, s.data, s.length);
|
||||
return s;
|
||||
@ -708,7 +701,7 @@ RTC_API file_buffer
|
||||
ReadEntireFile(s8 path, arena *a)
|
||||
{
|
||||
char _p[260];
|
||||
if (path.length >= countof(_p))
|
||||
if (path.length >= CountOf(_p))
|
||||
return (file_buffer){0};
|
||||
memcpy(_p, path.data, path.length);
|
||||
_p[path.length] = '\0';
|
||||
@ -743,7 +736,7 @@ RTC_API b32
|
||||
WriteEntireFile(s8 path, byte *data, isize length)
|
||||
{
|
||||
char _p[260];
|
||||
if (path.length >= countof(_p))
|
||||
if (path.length >= CountOf(_p))
|
||||
return 0;
|
||||
memcpy(_p, path.data, path.length);
|
||||
_p[path.length] = '\0';
|
||||
|
||||
@ -20,13 +20,13 @@ internal int
|
||||
AllocTest(void)
|
||||
{
|
||||
char space[260];
|
||||
arena a = {.begin = space, .end = space + countof(space) };
|
||||
arena a = {.begin = space, .end = space + CountOf(space) };
|
||||
|
||||
int *t = alloc(&a, int);
|
||||
int *t = Alloc(&a, int);
|
||||
if (!t)
|
||||
return 0;
|
||||
*t = 42;
|
||||
int *t2 = alloc(&a, int);
|
||||
int *t2 = Alloc(&a, int);
|
||||
if (t == t2)
|
||||
return 0;
|
||||
*t2 = *t;
|
||||
@ -38,7 +38,7 @@ internal int
|
||||
ReadFileTest(void)
|
||||
{
|
||||
char space[260];
|
||||
arena a = {.begin = space, .end = space + countof(space) };
|
||||
arena a = {.begin = space, .end = space + CountOf(space) };
|
||||
s8 data = ReadEntireFileS8(S8("somedata.txt"), &a);
|
||||
return S8Equals(data, S8("1234567890\n"));
|
||||
}
|
||||
10
rtjson.h
10
rtjson.h
@ -190,7 +190,7 @@ ParseString(s8 text, isize *_at, isize *current_line, s8 file, arena *a)
|
||||
printf("%zu: unexpected end of file\n", *current_line);
|
||||
return (s8){0};
|
||||
}
|
||||
u8 *mem = alloc(a, u8, total_length);
|
||||
u8 *mem = AllocArray(a, u8, total_length);
|
||||
if (at > first_char)
|
||||
memcpy(mem, str.data, at - first_char);
|
||||
str.data = mem;
|
||||
@ -339,7 +339,7 @@ ParseValue(s8 text, isize *_at, isize *current_line, s8 file, arena *a)
|
||||
}
|
||||
else if (text.data[at] == '\"')
|
||||
{
|
||||
child = alloc(a, json);
|
||||
child = Alloc(a, json);
|
||||
child->value.s = ParseString(text, &at, current_line, file, a);
|
||||
if (!child->value.s.data)
|
||||
return NULL;
|
||||
@ -353,7 +353,7 @@ ParseValue(s8 text, isize *_at, isize *current_line, s8 file, arena *a)
|
||||
parse_number_result res = ParseNumber(text, &at, current_line, file, &i, &f);
|
||||
if (res == NOT_A_NUMBER)
|
||||
return NULL;
|
||||
child = alloc(a, json);
|
||||
child = Alloc(a, json);
|
||||
if (res == INT)
|
||||
{
|
||||
child->value.i = i;
|
||||
@ -379,7 +379,7 @@ ParseValue(s8 text, isize *_at, isize *current_line, s8 file, arena *a)
|
||||
++at;
|
||||
++value_str.length;
|
||||
}
|
||||
child = alloc(a, json);
|
||||
child = Alloc(a, json);
|
||||
if (S8Equals(value_str, true_str))
|
||||
{
|
||||
child->value.b = 1;
|
||||
@ -412,7 +412,7 @@ ParseJSONImpl(s8 text, isize *_at, isize *current_line, s8 file, arena *a)
|
||||
{
|
||||
isize at = *_at;
|
||||
|
||||
json *j = alloc(a, json);
|
||||
json *j = Alloc(a, json);
|
||||
|
||||
if (text.data[at] == '{')
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user