mirror of
https://github.com/Ed94/gencpp.git
synced 2024-12-22 07:44:45 -08:00
looking into removing "oop" features from base library
I want to make member functions an optional addition the user can generate a derivative library with. The purpose is to simplify the implementation as to make generating a C-variant simpiler. I also want to use it as a study to see how much simpiler it makes the library without having it.
This commit is contained in:
parent
e3c2a577ba
commit
163ad0a511
@ -16,8 +16,8 @@ ssize token_fmt_va( char* buf, usize buf_size, s32 num_tokens, va_list va )
|
||||
local_persist
|
||||
char tok_map_mem[ TokenFmt_TokenMap_MemSize ];
|
||||
|
||||
tok_map_arena = Arena::init_from_memory( tok_map_mem, sizeof(tok_map_mem) );
|
||||
tok_map = HashTable<StrC>::init( tok_map_arena );
|
||||
init_from_memory( tok_map_arena, tok_map_mem, sizeof(tok_map_mem) );
|
||||
tok_map = HashTable<StrC>::init( tok_map_arena );
|
||||
|
||||
s32 left = num_tokens - 1;
|
||||
|
||||
|
@ -712,7 +712,10 @@ Code parse_class_struct( TokType which, bool inplace_def = false )
|
||||
|
||||
local_persist
|
||||
char interface_arr_mem[ kilobytes(4) ] {0};
|
||||
Array<CodeType> interfaces = Array<CodeType>::init_reserve( Arena::init_from_memory(interface_arr_mem, kilobytes(4) ), 4 );
|
||||
Array<CodeType> interfaces; {
|
||||
Arena arena; init_from_memory(arena, interface_arr_mem, kilobytes(4) );
|
||||
Array<CodeType>::init_reserve( arena, 4 );
|
||||
}
|
||||
|
||||
// TODO(Ed) : Make an AST_DerivedType, we'll store any arbitary derived type into there as a linear linked list of them.
|
||||
if ( check( TokType::Assign_Classifer ) )
|
||||
|
@ -170,23 +170,20 @@ b32 gen_vm_purge( VirtualMemory vm );
|
||||
//! Retrieve VM's page size and alignment.
|
||||
ssize gen_virtual_memory_page_size( ssize* alignment_out );
|
||||
|
||||
|
||||
struct Arena;
|
||||
void init_from_memory( Arena& arena, void* start, ssize size );
|
||||
|
||||
struct Arena
|
||||
{
|
||||
static
|
||||
void* allocator_proc( void* allocator_data, AllocType type, ssize size, ssize alignment, void* old_memory, ssize old_size, u64 flags );
|
||||
|
||||
static
|
||||
Arena init_from_memory( void* start, ssize size )
|
||||
{
|
||||
return
|
||||
{
|
||||
{ nullptr, nullptr },
|
||||
start,
|
||||
size,
|
||||
0,
|
||||
0
|
||||
};
|
||||
}
|
||||
//forceinline static
|
||||
//Arena init_from_memory( void* start, ssize size ) {
|
||||
// Arena result; GEN_NS init_from_memory( result, start, size );
|
||||
// return result;
|
||||
//}
|
||||
|
||||
static
|
||||
Arena init_from_allocator( AllocatorInfo backing, ssize size )
|
||||
@ -249,16 +246,25 @@ struct Arena
|
||||
|
||||
AllocatorInfo Backing;
|
||||
void* PhysicalStart;
|
||||
ssize TotalSize;
|
||||
ssize TotalUsed;
|
||||
ssize TempCount;
|
||||
ssize TotalSize;
|
||||
ssize TotalUsed;
|
||||
ssize TempCount;
|
||||
|
||||
operator AllocatorInfo()
|
||||
{
|
||||
return { allocator_proc, this };
|
||||
}
|
||||
operator AllocatorInfo() { return { allocator_proc, this }; }
|
||||
};
|
||||
|
||||
void init_from_memory( Arena& arena, void* start, ssize size )
|
||||
{
|
||||
arena =
|
||||
{
|
||||
{ nullptr, nullptr },
|
||||
start,
|
||||
size,
|
||||
0,
|
||||
0
|
||||
};
|
||||
}
|
||||
|
||||
// Just a wrapper around using an arena with memory associated with its scope instead of from an allocator.
|
||||
// Used for static segment or stack allocations.
|
||||
template< s32 Size >
|
||||
|
Loading…
Reference in New Issue
Block a user