mirror of
				https://github.com/Ed94/gencpp.git
				synced 2025-10-30 14:30:53 -07:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			v0.19-Alph
			...
			163ad0a511
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 163ad0a511 | |||
| e3c2a577ba | 
| @@ -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 ) ) | ||||
|   | ||||
| @@ -24,7 +24,7 @@ | ||||
| 	{                                                                                        \ | ||||
| 		if ( ! ( cond ) )                                                                    \ | ||||
| 		{                                                                                    \ | ||||
| 			assert_handler( #cond, __FILE__, scast( s64, __LINE__ ), msg, ##__VA_ARGS__ ); \ | ||||
| 			assert_handler( #cond, __FILE__, scast( s64, __LINE__ ), msg, ##__VA_ARGS__ );   \ | ||||
| 			GEN_DEBUG_TRAP();                                                                \ | ||||
| 		}                                                                                    \ | ||||
| 	} while ( 0 ) | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  | ||||
| #pragma region Memory | ||||
|  | ||||
| #define kilobytes( x ) ( ( x ) * ( s64 )( 1024 ) ) | ||||
| #define kilobytes( x ) (          ( x ) * ( s64 )( 1024 ) ) | ||||
| #define megabytes( x ) ( kilobytes( x ) * ( s64 )( 1024 ) ) | ||||
| #define gigabytes( x ) ( megabytes( x ) * ( s64 )( 1024 ) ) | ||||
| #define terabytes( x ) ( gigabytes( x ) * ( s64 )( 1024 ) ) | ||||
| @@ -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 > | ||||
|   | ||||
| @@ -168,6 +168,44 @@ struct String | ||||
| 		return Data[ length() - 1 ]; | ||||
| 	} | ||||
|  | ||||
| 	bool contains(StrC substring) const | ||||
| 	{ | ||||
| 		Header const& header = * rcast( Header const*, Data - sizeof( Header )); | ||||
|  | ||||
| 		if (substring.Len > header.Length) | ||||
| 			return false; | ||||
|  | ||||
| 		ssize main_len = header.Length; | ||||
| 		ssize sub_len  = substring.Len; | ||||
|  | ||||
| 		for (ssize idx = 0; idx <= main_len - sub_len; ++idx) | ||||
| 		{ | ||||
| 			if (str_compare(Data + idx, substring.Ptr, sub_len) == 0) | ||||
| 				return true; | ||||
| 		} | ||||
|  | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	bool contains(String const& substring) const | ||||
| 	{ | ||||
| 		Header const& header = * rcast( Header const*, Data - sizeof( Header )); | ||||
|  | ||||
| 		if (substring.length() > header.Length) | ||||
| 			return false; | ||||
|  | ||||
| 		ssize main_len = header.Length; | ||||
| 		ssize sub_len  = substring.length(); | ||||
|  | ||||
| 		for (ssize idx = 0; idx <= main_len - sub_len; ++idx) | ||||
| 		{ | ||||
| 			if (str_compare(Data + idx, substring.Data, sub_len) == 0) | ||||
| 				return true; | ||||
| 		} | ||||
|  | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	ssize capacity() const | ||||
| 	{ | ||||
| 		Header const& | ||||
|   | ||||
		Reference in New Issue
	
	Block a user