Better `static` keywords
This commit is contained in:
parent
8fbff6e5bb
commit
c01deefae5
33
gb.hpp
33
gb.hpp
|
@ -1,8 +1,9 @@
|
|||
// gb.hpp - v0.21 - public domain C++11 helper library - no warranty implied; use at your own risk
|
||||
// gb.hpp - v0.21a - public domain C++11 helper library - no warranty implied; use at your own risk
|
||||
// (Experimental) A C++11 helper library without STL geared towards game development
|
||||
|
||||
/*
|
||||
Version History:
|
||||
0.21a - Better `static` keywords
|
||||
0.21 - Separate Math Library
|
||||
0.20a - #ifndef for many macros
|
||||
0.20 - Angle
|
||||
|
@ -72,9 +73,9 @@ Context:
|
|||
|
||||
// NOTE(bill): Because static means three different things in C/C++
|
||||
// Great Design(!)
|
||||
#ifndef global
|
||||
#define global static
|
||||
#define internal static
|
||||
#ifndef global_variable
|
||||
#define global_variable static
|
||||
#define internal_linkage static
|
||||
#define local_persist static
|
||||
#endif
|
||||
|
||||
|
@ -536,7 +537,7 @@ template <typename T> struct Remove_Reference_Def<T&> { using Type = T; };
|
|||
template <typename T> struct Remove_Reference_Def<T&&> { using Type = T; };
|
||||
template <typename T> using Remove_Reference = typename Remove_Reference_Def<T>::Type;
|
||||
|
||||
template <typename T, T v> struct Integral_Constant { global const T VALUE = v; using Value_Type = T; using Type = Integral_Constant; };
|
||||
template <typename T, T v> struct Integral_Constant { global_variable const T VALUE = v; using Value_Type = T; using Type = Integral_Constant; };
|
||||
|
||||
template <typename T, usize N = 0> struct Extent : Integral_Constant<usize, 0> {};
|
||||
template <typename T> struct Extent<T[], 0> : Integral_Constant<usize, 0> {};
|
||||
|
@ -2369,7 +2370,7 @@ destroy(Thread* t)
|
|||
semaphore::destroy(&t->semaphore);
|
||||
}
|
||||
|
||||
internal s32
|
||||
internal_linkage s32
|
||||
run(Thread* t)
|
||||
{
|
||||
semaphore::post(&t->semaphore);
|
||||
|
@ -2377,7 +2378,7 @@ run(Thread* t)
|
|||
}
|
||||
|
||||
#if defined(GB_SYSTEM_WINDOWS)
|
||||
internal DWORD WINAPI
|
||||
internal_linkage DWORD WINAPI
|
||||
thread_proc(void* arg)
|
||||
{
|
||||
Thread* t = static_cast<Thread*>(arg);
|
||||
|
@ -2386,7 +2387,7 @@ thread_proc(void* arg)
|
|||
}
|
||||
|
||||
#else
|
||||
internal void*
|
||||
internal_linkage void*
|
||||
thread_proc(void* arg)
|
||||
{
|
||||
local_persist s32 result = -1;
|
||||
|
@ -2704,7 +2705,7 @@ void append(String* str, const void* other, Size other_len)
|
|||
namespace impl
|
||||
{
|
||||
// NOTE(bill): ptr _must_ be allocated with Allocator* a
|
||||
internal inline void*
|
||||
internal_linkage inline void*
|
||||
string_realloc(Allocator* a, void* ptr, usize old_size, usize new_size)
|
||||
{
|
||||
if (!ptr)
|
||||
|
@ -3024,7 +3025,7 @@ adler32(const void* key, u32 num_bytes)
|
|||
return (b << 16) | a;
|
||||
}
|
||||
|
||||
global const u32 GB_CRC32_TABLE[256] = {
|
||||
global_variable const u32 GB_CRC32_TABLE[256] = {
|
||||
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
|
||||
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
|
||||
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
||||
|
@ -3091,7 +3092,7 @@ global const u32 GB_CRC32_TABLE[256] = {
|
|||
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
|
||||
};
|
||||
|
||||
global const u64 GB_CRC64_TABLE[256] = {
|
||||
global_variable const u64 GB_CRC64_TABLE[256] = {
|
||||
0x0000000000000000ull, 0x42F0E1EBA9EA3693ull, 0x85E1C3D753D46D26ull, 0xC711223CFA3E5BB5ull,
|
||||
0x493366450E42ECDFull, 0x0BC387AEA7A8DA4Cull, 0xCCD2A5925D9681F9ull, 0x8E224479F47CB76Aull,
|
||||
0x9266CC8A1C85D9BEull, 0xD0962D61B56FEF2Dull, 0x17870F5D4F51B498ull, 0x5577EEB6E6BB820Bull,
|
||||
|
@ -3378,7 +3379,7 @@ namespace time
|
|||
{
|
||||
#if defined(GB_SYSTEM_WINDOWS)
|
||||
|
||||
internal LARGE_INTEGER
|
||||
internal_linkage LARGE_INTEGER
|
||||
win32_get_frequency()
|
||||
{
|
||||
LARGE_INTEGER f;
|
||||
|
@ -3400,7 +3401,7 @@ now()
|
|||
|
||||
// Get the frequency of the performance counter
|
||||
// It is constant across the program's lifetime
|
||||
internal LARGE_INTEGER s_frequency = win32_get_frequency();
|
||||
local_persist LARGE_INTEGER s_frequency = win32_get_frequency();
|
||||
|
||||
// Get the current time
|
||||
LARGE_INTEGER t;
|
||||
|
@ -3514,7 +3515,7 @@ namespace file
|
|||
{
|
||||
#if defined(GB_SYSTEM_WINDOWS)
|
||||
|
||||
internal char*
|
||||
internal_linkage char*
|
||||
duplicate_string(const char* string)
|
||||
{
|
||||
usize len = strlen(string);
|
||||
|
@ -3547,7 +3548,7 @@ new_from_fd(File* file, uintptr h, const char* name)
|
|||
return true;
|
||||
}
|
||||
|
||||
internal bool
|
||||
internal_linkage bool
|
||||
win32_open_file(File* file, const char* name, u32 flag, u32 perm)
|
||||
{
|
||||
// TODO(bill):
|
||||
|
@ -3590,7 +3591,7 @@ close(File* file)
|
|||
return false;
|
||||
}
|
||||
|
||||
// internal bool
|
||||
// internal_linkage bool
|
||||
// win32_pread(File* file, void* buffer, u32 bytes_to_read, s64 offset)
|
||||
// {
|
||||
// mutex::lock(&file->mutex);
|
||||
|
|
19
gb_math.hpp
19
gb_math.hpp
|
@ -1,9 +1,10 @@
|
|||
// gb_math.hpp - v0.02 - public domain C++11 math library - no warranty implied; use at your own risk
|
||||
// gb_math.hpp - v0.02a - public domain C++11 math library - no warranty implied; use at your own risk
|
||||
// A C++11 math library geared towards game development
|
||||
// This is meant to be used the gb.hpp library but it doesn't have to be
|
||||
|
||||
/*
|
||||
Version History:
|
||||
0.02a - Better `static` keywords
|
||||
0.02 - More Angle Units and templated min/max/clamp/lerp
|
||||
0.01 - Initial Version
|
||||
|
||||
|
@ -45,9 +46,9 @@ Context:
|
|||
|
||||
// NOTE(bill): Because static means three different things in C/C++
|
||||
// Great Design(!)
|
||||
#ifndef global
|
||||
#define global static
|
||||
#define internal static
|
||||
#ifndef global_variable
|
||||
#define global_variable static
|
||||
#define internal_linkage static
|
||||
#define local_persist static
|
||||
#endif
|
||||
|
||||
|
@ -2297,9 +2298,9 @@ template <typename T>
|
|||
inline void
|
||||
swap(T* a, T* b)
|
||||
{
|
||||
T c = gb::move(*a);
|
||||
*a = gb::move(*b);
|
||||
*b = gb::move(c);
|
||||
T c = __GB_NAMESPACE_PREFIX::move(*a);
|
||||
*a = __GB_NAMESPACE_PREFIX::move(*b);
|
||||
*b = __GB_NAMESPACE_PREFIX::move(c);
|
||||
}
|
||||
|
||||
template <typename T, usize N>
|
||||
|
@ -3651,7 +3652,7 @@ uniform_f64(Random* r, f64 min_inc, f64 max_inc)
|
|||
}
|
||||
|
||||
|
||||
global s32 g_perlin_randtab[512] =
|
||||
global_variable s32 g_perlin_randtab[512] =
|
||||
{
|
||||
23, 125, 161, 52, 103, 117, 70, 37, 247, 101, 203, 169, 124, 126, 44, 123,
|
||||
152, 238, 145, 45, 171, 114, 253, 10, 192, 136, 4, 157, 249, 30, 35, 72,
|
||||
|
@ -3690,7 +3691,7 @@ global s32 g_perlin_randtab[512] =
|
|||
};
|
||||
|
||||
|
||||
internal f32
|
||||
internal_linkage f32
|
||||
perlin_grad(s32 hash, f32 x, f32 y, f32 z)
|
||||
{
|
||||
local_persist f32 basis[12][4] =
|
||||
|
|
Loading…
Reference in New Issue