mirror of
				https://github.com/Ed94/gencpp.git
				synced 2025-10-30 14:30:53 -07: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:
		| @@ -16,7 +16,7 @@ ssize token_fmt_va( char* buf, usize buf_size, s32 num_tokens, va_list va ) | |||||||
| 		local_persist | 		local_persist | ||||||
| 		char tok_map_mem[ TokenFmt_TokenMap_MemSize ]; | 		char tok_map_mem[ TokenFmt_TokenMap_MemSize ]; | ||||||
|  |  | ||||||
| 		tok_map_arena = Arena::init_from_memory( tok_map_mem, sizeof(tok_map_mem) ); | 		init_from_memory( tok_map_arena, tok_map_mem, sizeof(tok_map_mem) ); | ||||||
| 		tok_map = HashTable<StrC>::init( tok_map_arena ); | 		tok_map = HashTable<StrC>::init( tok_map_arena ); | ||||||
|  |  | ||||||
| 		s32 left = num_tokens - 1; | 		s32 left = num_tokens - 1; | ||||||
|   | |||||||
| @@ -712,7 +712,10 @@ Code parse_class_struct( TokType which, bool inplace_def = false ) | |||||||
|  |  | ||||||
| 	local_persist | 	local_persist | ||||||
| 	char interface_arr_mem[ kilobytes(4) ] {0}; | 	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. | 	// 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 ) ) | 	if ( check( TokType::Assign_Classifer ) ) | ||||||
|   | |||||||
| @@ -170,23 +170,20 @@ b32 gen_vm_purge( VirtualMemory vm ); | |||||||
| //! Retrieve VM's page size and alignment. | //! Retrieve VM's page size and alignment. | ||||||
| ssize gen_virtual_memory_page_size( ssize* alignment_out ); | ssize gen_virtual_memory_page_size( ssize* alignment_out ); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | struct Arena; | ||||||
|  | void init_from_memory( Arena& arena, void* start, ssize size ); | ||||||
|  |  | ||||||
| struct Arena | struct Arena | ||||||
| { | { | ||||||
| 	static | 	static | ||||||
| 	void* allocator_proc( void* allocator_data, AllocType type, ssize size, ssize alignment, void* old_memory, ssize old_size, u64 flags ); | 	void* allocator_proc( void* allocator_data, AllocType type, ssize size, ssize alignment, void* old_memory, ssize old_size, u64 flags ); | ||||||
|  |  | ||||||
| 	static | 	//forceinline static | ||||||
| 	Arena init_from_memory( void* start, ssize size ) | 	//Arena init_from_memory( void* start, ssize size ) {  | ||||||
| 	{ | 	//	Arena result; GEN_NS init_from_memory( result, start, size );  | ||||||
| 		return | 	//	return result; | ||||||
| 		{ | 	//} | ||||||
| 			{ nullptr, nullptr }, |  | ||||||
| 			start, |  | ||||||
| 			size, |  | ||||||
| 			0, |  | ||||||
| 			0 |  | ||||||
| 		}; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	static | 	static | ||||||
| 	Arena init_from_allocator( AllocatorInfo backing, ssize size ) | 	Arena init_from_allocator( AllocatorInfo backing, ssize size ) | ||||||
| @@ -253,12 +250,21 @@ struct Arena | |||||||
| 	ssize         TotalUsed; | 	ssize         TotalUsed; | ||||||
| 	ssize         TempCount; | 	ssize         TempCount; | ||||||
|  |  | ||||||
| 	operator AllocatorInfo() | 	operator AllocatorInfo() { return { allocator_proc, this }; } | ||||||
| 	{ |  | ||||||
| 		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. | // 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. | // Used for static segment or stack allocations. | ||||||
| template< s32 Size > | template< s32 Size > | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user