mirror of
				https://github.com/Ed94/gencpp.git
				synced 2025-10-30 14:30:53 -07:00 
			
		
		
		
	Moved the indentation for the library over
The entire project uses the namespace and it felt redundant. There is a fix for array append_at. Finally got csv parsing working with it.
This commit is contained in:
		| @@ -1,6 +1,9 @@ | ||||
| # Documentation | ||||
|  | ||||
| All the library code is contained in two files: `gen.hpp` and `gen.cpp` | ||||
| The core library is contained within `gen.hpp` and `gen.cpp`. | ||||
| Things related to the editor and scanner are in their own respective files. (Ex: `gen.scanner.<hpp/cpp>` ) | ||||
|  | ||||
|  | ||||
|  | ||||
| ## gen.hpp | ||||
|  | ||||
|   | ||||
							
								
								
									
										1258
									
								
								project/gen.cpp
									
									
									
									
									
								
							
							
						
						
									
										1258
									
								
								project/gen.cpp
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -39,6 +39,24 @@ | ||||
| #		endif | ||||
| #	endif | ||||
|  | ||||
| #include <sys/stat.h> | ||||
|  | ||||
| #ifdef GEN_SYSTEM_MACOS | ||||
| #	include <copyfile.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef GEN_SYSTEM_CYGWIN | ||||
| #	include <windows.h> | ||||
| #endif | ||||
|  | ||||
| #if defined( GEN_SYSTEM_WINDOWS ) && ! defined( GEN_COMPILER_GCC ) | ||||
| #	include <io.h> | ||||
| #endif | ||||
|  | ||||
| #if defined( GEN_SYSTEM_LINUX ) | ||||
| #	include <sys/types.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef GEN_BENCHMARK | ||||
| // Timing includes | ||||
| #if defined( GEN_SYSTEM_MACOS ) || GEN_SYSTEM_UNIX | ||||
| @@ -63,7 +81,6 @@ | ||||
| #pragma endregion Macros & Includes | ||||
|  | ||||
|  | ||||
|  | ||||
| namespace gen { | ||||
|  | ||||
| #pragma region Debug | ||||
| @@ -2062,9 +2079,15 @@ namespace gen { | ||||
| 		GEN_ASSERT_NOT_NULL( root ); | ||||
| 		GEN_ASSERT_NOT_NULL( text ); | ||||
| 		zero_item( root ); | ||||
|  | ||||
| 		adt_make_branch( root, allocator, NULL, has_header ? false : true ); | ||||
| 		char *p = text, *b = p, *e = p; | ||||
| 		sw    colc = 0, total_colc = 0; | ||||
|  | ||||
| 		char* p = text; | ||||
| 		char* b = p; | ||||
| 		char* e = p; | ||||
|  | ||||
| 		sw colc       = 0; | ||||
| 		sw total_colc = 0; | ||||
|  | ||||
| 		do | ||||
| 		{ | ||||
| @@ -2074,7 +2097,7 @@ namespace gen { | ||||
| 				break; | ||||
| 			ADT_Node row_item = { 0 }; | ||||
| 			row_item.type     = EADT_TYPE_STRING; | ||||
| 	#ifndef ZPL_PARSER_DISABLE_ANALYSIS | ||||
| 	#ifndef GEN_PARSER_DISABLE_ANALYSIS | ||||
| 			row_item.name_style = EADT_NAME_STYLE_NO_QUOTES; | ||||
| 	#endif | ||||
|  | ||||
| @@ -2083,7 +2106,7 @@ namespace gen { | ||||
| 			{ | ||||
| 				p = b = e       = p + 1; | ||||
| 				row_item.string = b; | ||||
| 	#ifndef ZPL_PARSER_DISABLE_ANALYSIS | ||||
| 	#ifndef GEN_PARSER_DISABLE_ANALYSIS | ||||
| 				row_item.name_style = EADT_NAME_STYLE_DOUBLE_QUOTE; | ||||
| 	#endif | ||||
| 				do | ||||
| @@ -2229,7 +2252,7 @@ namespace gen { | ||||
| 		{ | ||||
| 			case EADT_TYPE_STRING : | ||||
| 				{ | ||||
| 	#ifndef ZPL_PARSER_DISABLE_ANALYSIS | ||||
| 	#ifndef GEN_PARSER_DISABLE_ANALYSIS | ||||
| 					switch ( node->name_style ) | ||||
| 					{ | ||||
| 						case EADT_NAME_STYLE_DOUBLE_QUOTE : | ||||
| @@ -2244,7 +2267,7 @@ namespace gen { | ||||
| 							{ | ||||
| 	#endif | ||||
| 								str_fmt_file( file, "%s", node->string ); | ||||
| 	#ifndef ZPL_PARSER_DISABLE_ANALYSIS | ||||
| 	#ifndef GEN_PARSER_DISABLE_ANALYSIS | ||||
| 							} | ||||
| 							break; | ||||
| 					} | ||||
| @@ -3244,3 +3267,4 @@ namespace gen { | ||||
|  | ||||
| // namespace gen | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
| #		define GEN_ARCH_64_BIT 1 | ||||
| #	endif | ||||
| #else | ||||
| #	ifndef GEN_ARCH_32_BIT | ||||
| #	ifndef GEN_ARCH_32_BItxt_StrCaT | ||||
| #		define GEN_ARCH_32_BIT 1 | ||||
| #	endif | ||||
| #endif | ||||
| @@ -91,6 +91,15 @@ | ||||
| #	define GEN_HAS_ATTRIBUTE( attribute ) ( 0 ) | ||||
| #endif | ||||
|  | ||||
| #if defined(GEN_GCC_VERSION_CHECK) | ||||
| #  undef GEN_GCC_VERSION_CHECK | ||||
| #endif | ||||
| #if defined(GEN_GCC_VERSION) | ||||
| #  define GEN_GCC_VERSION_CHECK(major,minor,patch) (GEN_GCC_VERSION >= GEN_VERSION_ENCODE(major, minor, patch)) | ||||
| #else | ||||
| #  define GEN_GCC_VERSION_CHECK(major,minor,patch) (0) | ||||
| #endif | ||||
|  | ||||
| #define GEN_DEF_INLINE  static | ||||
| #define GEN_IMPL_INLINE static inline | ||||
|  | ||||
| @@ -1283,6 +1292,7 @@ struct Array | ||||
| 		Type* target = Data + idx; | ||||
|  | ||||
| 		mem_move( target + 1, target, (header->Num - idx) * sizeof(Type) ); | ||||
| 		header->Num++; | ||||
|  | ||||
| 		return true; | ||||
| 	} | ||||
| @@ -1309,7 +1319,6 @@ struct Array | ||||
|  | ||||
| 		mem_move( target, src, (header->Num - idx) * sizeof(Type) ); | ||||
| 		mem_copy( src, items, item_num * sizeof(Type) ); | ||||
|  | ||||
| 		header->Num += item_num; | ||||
|  | ||||
| 		return true; | ||||
| @@ -1730,9 +1739,9 @@ u64 crc64( void const* data, sw len ); | ||||
| #pragma endregion Hashing | ||||
|  | ||||
| #pragma region String | ||||
| 	// Constant string with length. | ||||
| 	struct StrC | ||||
| 	{ | ||||
| // Constant string with length. | ||||
| struct StrC | ||||
| { | ||||
| 	sw          Len; | ||||
| 	char const* Ptr; | ||||
|  | ||||
| @@ -1740,27 +1749,27 @@ u64 crc64( void const* data, sw len ); | ||||
| 	{ | ||||
| 		return Ptr; | ||||
| 	} | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	#define txt_StrC( text ) \ | ||||
| 		(StrC){ sizeof( text ) - 1, text } | ||||
| #define txt_StrC( text ) \ | ||||
| 	StrC { sizeof( text ) - 1, text } | ||||
|  | ||||
| 	StrC to_StrC( char const* str ) | ||||
| 	{ | ||||
| StrC to_StrC( char const* str ) | ||||
| { | ||||
| 	return { str_len( str ), str }; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| 	sw StrC_len( char const* str ) | ||||
| 	{ | ||||
| sw StrC_len( char const* str ) | ||||
| { | ||||
| 	return (sw) ( str - 1 ); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| 	// Dynamic String | ||||
| 	// This is directly based off the ZPL string api. | ||||
| 	// They used a header pattern | ||||
| 	// I kept it for simplicty of porting but its not necessary to keep it that way. | ||||
| 	struct String | ||||
| 	{ | ||||
| // Dynamic String | ||||
| // This is directly based off the ZPL string api. | ||||
| // They used a header pattern | ||||
| // I kept it for simplicty of porting but its not necessary to keep it that way. | ||||
| struct String | ||||
| { | ||||
| 	struct Header | ||||
| 	{ | ||||
| 		AllocatorInfo Allocator; | ||||
| @@ -2090,18 +2099,18 @@ u64 crc64( void const* data, sw len ); | ||||
| 	} | ||||
|  | ||||
| 	char* Data = nullptr; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	struct String_POD | ||||
| 	{ | ||||
| struct String_POD | ||||
| { | ||||
| 	char* Data; | ||||
|  | ||||
| 	operator String() | ||||
| 	{ | ||||
| 		return * rcast(String*, this); | ||||
| 	} | ||||
| 	}; | ||||
| 	static_assert( sizeof( String_POD ) == sizeof( String ), "String is not a POD" ); | ||||
| }; | ||||
| static_assert( sizeof( String_POD ) == sizeof( String ), "String is not a POD" ); | ||||
| #pragma endregion String | ||||
|  | ||||
| #pragma region File Handling | ||||
| @@ -2336,7 +2345,7 @@ GEN_DEF_INLINE s64 file_tell( FileInfo* file ); | ||||
|  * @param  buffer Buffer to read from | ||||
|  * @param  size   Size to read | ||||
|  */ | ||||
| b32 file_write( FileInfo* file, void const* buffer, sw size ); | ||||
| GEN_DEF_INLINE b32 file_write( FileInfo* file, void const* buffer, sw size ); | ||||
|  | ||||
| /** | ||||
|  * Writes to file at a specific offset | ||||
| @@ -2543,7 +2552,7 @@ struct ADT_Node | ||||
| 	/* properties */ | ||||
| 	ADT_Type type  : 4; | ||||
| 	u8 props : 4; | ||||
| #ifndef ZPL_PARSER_DISABLE_ANALYSIS | ||||
| #ifndef GEN_PARSER_DISABLE_ANALYSIS | ||||
| 	u8 cfg_mode          : 1; | ||||
| 	u8 name_style        : 2; | ||||
| 	u8 assign_style      : 2; | ||||
| @@ -2566,7 +2575,7 @@ struct ADT_Node | ||||
| 				s64 integer; | ||||
| 			}; | ||||
|  | ||||
| #ifndef ZPL_PARSER_DISABLE_ANALYSIS | ||||
| #ifndef GEN_PARSER_DISABLE_ANALYSIS | ||||
| 			/* number analysis */ | ||||
| 			s32 base; | ||||
| 			s32 base2; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "gen.hpp" | ||||
| #include "gen.scanner.hpp" | ||||
|  | ||||
| namespace gen { | ||||
|  | ||||
| @@ -52,9 +52,9 @@ struct Editor | ||||
|  | ||||
| 	static void set_allocator( AllocatorInfo  allocator ); | ||||
|  | ||||
| 	Array(FileInfo)     Files; | ||||
| 	Array<FileInfo>     Files; | ||||
| 	String              Buffer; | ||||
| 	Array(RequestEntry) Requests; | ||||
| 	Array<RequestEntry> Requests; | ||||
|  | ||||
| 	void add_files( s32 num, char const** files ); | ||||
|  | ||||
| @@ -66,7 +66,7 @@ struct Editor | ||||
| 	void refactor( char const* file_path, char const* specification_path ); | ||||
| #	endif | ||||
|  | ||||
| 	bool process_requests( Array(Receipt) out_receipts ); | ||||
| 	bool process_requests( Array<Receipt> out_receipts ); | ||||
| }; | ||||
|  | ||||
| // namespace gen | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "gen.push_ignores.inline.hpp" | ||||
|  | ||||
| //! If its desired to roll your own dependencies, define GENCPP_PROVIDE_DEPENDENCIES before including this file. | ||||
| //! If its desired to roll your own dependencies, define GEN_ROLL_OWN_DEPENDENCIES before including this file. | ||||
| // Dependencies are derived from the c-zpl library: https://github.com/zpl-c/zpl | ||||
| #ifndef GEN_ROLL_OWN_DEPENDENCIES | ||||
| #	include "gen.dep.hpp" | ||||
| @@ -240,9 +240,9 @@ namespace ESpecifier | ||||
| 		#	pragma push_macro( "global" ) | ||||
| 		#	pragma push_macro( "internal" ) | ||||
| 		#	pragma push_macro( "local_persist" ) | ||||
| 		#	define global        global | ||||
| 		#	define internal      internal | ||||
| 		#	define local_persist local_persist | ||||
| 		#	undef global | ||||
| 		#	undef internal | ||||
| 		#	undef local_persist | ||||
|  | ||||
| 		#	define Entry( Spec_, Code_ ) { sizeof(stringize(Code_)), stringize(Code_) }, | ||||
| 			Define_Specifiers | ||||
| @@ -348,7 +348,7 @@ namespace Attribute | ||||
| 	constexpr char const* API_Import = stringize( GEN_API_Import_Code  ); | ||||
| 	constexpr char const* Keyword    = stringize( GEN_Attribute_Keyword); | ||||
|  | ||||
| #elif GEN_HAS_ATTRIBUTE( visibility ) || GEN_GCC_VERSION_CHECK( 3, 3, 0 ) || GEN_INTEL_VERSION_CHECK( 13, 0, 0 ) | ||||
| #elif GEN_HAS_ATTRIBUTE( visibility ) || GEN_GCC_VERSION_CHECK( 3, 3, 0 ) | ||||
| #	define GEN_API_Export_Code   __attribute__ ((visibility ("default"))) | ||||
| #	define GEN_API_Import_Code   __attribute__ ((visibility ("default"))) | ||||
| #	define GEN_Attribute_Keyword __attribute__ | ||||
|   | ||||
| @@ -29,15 +29,16 @@ struct Scanner | ||||
|  | ||||
| 	static void set_allocator( AllocatorInfo allocator ); | ||||
|  | ||||
| 	Array(FileInfo)     Files; | ||||
| 	Array<FileInfo>     Files; | ||||
| 	String              Buffer; | ||||
| 	Array(RequestEntry) Requests; | ||||
| 	Array<RequestEntry> Requests; | ||||
|  | ||||
| 	void add_files( s32 num, char const** files ); | ||||
|  | ||||
| 	void add( SymbolInfo signature, Policy policy ); | ||||
|  | ||||
| 	bool process_requests( Array(Receipt) out_receipts ); | ||||
| 	bool process_requests( Array<Receipt> out_receipts ); | ||||
| }; | ||||
| k | ||||
|  | ||||
| // namespace gen | ||||
| } | ||||
		Reference in New Issue
	
	Block a user