mirror of
https://github.com/Ed94/gencpp.git
synced 2024-12-23 00:04:45 -08: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:
parent
d1c061769c
commit
8bb0db8145
@ -1,6 +1,9 @@
|
|||||||
# Documentation
|
# 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
|
## 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
|
||||||
# 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
|
#ifdef GEN_BENCHMARK
|
||||||
// Timing includes
|
// Timing includes
|
||||||
#if defined( GEN_SYSTEM_MACOS ) || GEN_SYSTEM_UNIX
|
#if defined( GEN_SYSTEM_MACOS ) || GEN_SYSTEM_UNIX
|
||||||
@ -63,7 +81,6 @@
|
|||||||
#pragma endregion Macros & Includes
|
#pragma endregion Macros & Includes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace gen {
|
namespace gen {
|
||||||
|
|
||||||
#pragma region Debug
|
#pragma region Debug
|
||||||
@ -2062,9 +2079,15 @@ namespace gen {
|
|||||||
GEN_ASSERT_NOT_NULL( root );
|
GEN_ASSERT_NOT_NULL( root );
|
||||||
GEN_ASSERT_NOT_NULL( text );
|
GEN_ASSERT_NOT_NULL( text );
|
||||||
zero_item( root );
|
zero_item( root );
|
||||||
|
|
||||||
adt_make_branch( root, allocator, NULL, has_header ? false : true );
|
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
|
do
|
||||||
{
|
{
|
||||||
@ -2074,7 +2097,7 @@ namespace gen {
|
|||||||
break;
|
break;
|
||||||
ADT_Node row_item = { 0 };
|
ADT_Node row_item = { 0 };
|
||||||
row_item.type = EADT_TYPE_STRING;
|
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;
|
row_item.name_style = EADT_NAME_STYLE_NO_QUOTES;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2083,7 +2106,7 @@ namespace gen {
|
|||||||
{
|
{
|
||||||
p = b = e = p + 1;
|
p = b = e = p + 1;
|
||||||
row_item.string = b;
|
row_item.string = b;
|
||||||
#ifndef ZPL_PARSER_DISABLE_ANALYSIS
|
#ifndef GEN_PARSER_DISABLE_ANALYSIS
|
||||||
row_item.name_style = EADT_NAME_STYLE_DOUBLE_QUOTE;
|
row_item.name_style = EADT_NAME_STYLE_DOUBLE_QUOTE;
|
||||||
#endif
|
#endif
|
||||||
do
|
do
|
||||||
@ -2229,7 +2252,7 @@ namespace gen {
|
|||||||
{
|
{
|
||||||
case EADT_TYPE_STRING :
|
case EADT_TYPE_STRING :
|
||||||
{
|
{
|
||||||
#ifndef ZPL_PARSER_DISABLE_ANALYSIS
|
#ifndef GEN_PARSER_DISABLE_ANALYSIS
|
||||||
switch ( node->name_style )
|
switch ( node->name_style )
|
||||||
{
|
{
|
||||||
case EADT_NAME_STYLE_DOUBLE_QUOTE :
|
case EADT_NAME_STYLE_DOUBLE_QUOTE :
|
||||||
@ -2244,7 +2267,7 @@ namespace gen {
|
|||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
str_fmt_file( file, "%s", node->string );
|
str_fmt_file( file, "%s", node->string );
|
||||||
#ifndef ZPL_PARSER_DISABLE_ANALYSIS
|
#ifndef GEN_PARSER_DISABLE_ANALYSIS
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3244,3 +3267,4 @@ namespace gen {
|
|||||||
|
|
||||||
// namespace gen
|
// namespace gen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
# define GEN_ARCH_64_BIT 1
|
# define GEN_ARCH_64_BIT 1
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
# ifndef GEN_ARCH_32_BIT
|
# ifndef GEN_ARCH_32_BItxt_StrCaT
|
||||||
# define GEN_ARCH_32_BIT 1
|
# define GEN_ARCH_32_BIT 1
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
@ -91,6 +91,15 @@
|
|||||||
# define GEN_HAS_ATTRIBUTE( attribute ) ( 0 )
|
# define GEN_HAS_ATTRIBUTE( attribute ) ( 0 )
|
||||||
#endif
|
#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_DEF_INLINE static
|
||||||
#define GEN_IMPL_INLINE static inline
|
#define GEN_IMPL_INLINE static inline
|
||||||
|
|
||||||
@ -1283,6 +1292,7 @@ struct Array
|
|||||||
Type* target = Data + idx;
|
Type* target = Data + idx;
|
||||||
|
|
||||||
mem_move( target + 1, target, (header->Num - idx) * sizeof(Type) );
|
mem_move( target + 1, target, (header->Num - idx) * sizeof(Type) );
|
||||||
|
header->Num++;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1309,7 +1319,6 @@ struct Array
|
|||||||
|
|
||||||
mem_move( target, src, (header->Num - idx) * sizeof(Type) );
|
mem_move( target, src, (header->Num - idx) * sizeof(Type) );
|
||||||
mem_copy( src, items, item_num * sizeof(Type) );
|
mem_copy( src, items, item_num * sizeof(Type) );
|
||||||
|
|
||||||
header->Num += item_num;
|
header->Num += item_num;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1730,9 +1739,9 @@ u64 crc64( void const* data, sw len );
|
|||||||
#pragma endregion Hashing
|
#pragma endregion Hashing
|
||||||
|
|
||||||
#pragma region String
|
#pragma region String
|
||||||
// Constant string with length.
|
// Constant string with length.
|
||||||
struct StrC
|
struct StrC
|
||||||
{
|
{
|
||||||
sw Len;
|
sw Len;
|
||||||
char const* Ptr;
|
char const* Ptr;
|
||||||
|
|
||||||
@ -1740,27 +1749,27 @@ u64 crc64( void const* data, sw len );
|
|||||||
{
|
{
|
||||||
return Ptr;
|
return Ptr;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define txt_StrC( text ) \
|
#define txt_StrC( text ) \
|
||||||
(StrC){ sizeof( text ) - 1, text }
|
StrC { sizeof( text ) - 1, text }
|
||||||
|
|
||||||
StrC to_StrC( char const* str )
|
StrC to_StrC( char const* str )
|
||||||
{
|
{
|
||||||
return { str_len( str ), str };
|
return { str_len( str ), str };
|
||||||
}
|
}
|
||||||
|
|
||||||
sw StrC_len( char const* str )
|
sw StrC_len( char const* str )
|
||||||
{
|
{
|
||||||
return (sw) ( str - 1 );
|
return (sw) ( str - 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dynamic String
|
// Dynamic String
|
||||||
// This is directly based off the ZPL string api.
|
// This is directly based off the ZPL string api.
|
||||||
// They used a header pattern
|
// They used a header pattern
|
||||||
// I kept it for simplicty of porting but its not necessary to keep it that way.
|
// I kept it for simplicty of porting but its not necessary to keep it that way.
|
||||||
struct String
|
struct String
|
||||||
{
|
{
|
||||||
struct Header
|
struct Header
|
||||||
{
|
{
|
||||||
AllocatorInfo Allocator;
|
AllocatorInfo Allocator;
|
||||||
@ -2090,18 +2099,18 @@ u64 crc64( void const* data, sw len );
|
|||||||
}
|
}
|
||||||
|
|
||||||
char* Data = nullptr;
|
char* Data = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct String_POD
|
struct String_POD
|
||||||
{
|
{
|
||||||
char* Data;
|
char* Data;
|
||||||
|
|
||||||
operator String()
|
operator String()
|
||||||
{
|
{
|
||||||
return * rcast(String*, this);
|
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 endregion String
|
||||||
|
|
||||||
#pragma region File Handling
|
#pragma region File Handling
|
||||||
@ -2336,7 +2345,7 @@ GEN_DEF_INLINE s64 file_tell( FileInfo* file );
|
|||||||
* @param buffer Buffer to read from
|
* @param buffer Buffer to read from
|
||||||
* @param size Size to read
|
* @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
|
* Writes to file at a specific offset
|
||||||
@ -2543,7 +2552,7 @@ struct ADT_Node
|
|||||||
/* properties */
|
/* properties */
|
||||||
ADT_Type type : 4;
|
ADT_Type type : 4;
|
||||||
u8 props : 4;
|
u8 props : 4;
|
||||||
#ifndef ZPL_PARSER_DISABLE_ANALYSIS
|
#ifndef GEN_PARSER_DISABLE_ANALYSIS
|
||||||
u8 cfg_mode : 1;
|
u8 cfg_mode : 1;
|
||||||
u8 name_style : 2;
|
u8 name_style : 2;
|
||||||
u8 assign_style : 2;
|
u8 assign_style : 2;
|
||||||
@ -2566,7 +2575,7 @@ struct ADT_Node
|
|||||||
s64 integer;
|
s64 integer;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef ZPL_PARSER_DISABLE_ANALYSIS
|
#ifndef GEN_PARSER_DISABLE_ANALYSIS
|
||||||
/* number analysis */
|
/* number analysis */
|
||||||
s32 base;
|
s32 base;
|
||||||
s32 base2;
|
s32 base2;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "gen.hpp"
|
#include "gen.scanner.hpp"
|
||||||
|
|
||||||
namespace gen {
|
namespace gen {
|
||||||
|
|
||||||
@ -52,9 +52,9 @@ struct Editor
|
|||||||
|
|
||||||
static void set_allocator( AllocatorInfo allocator );
|
static void set_allocator( AllocatorInfo allocator );
|
||||||
|
|
||||||
Array(FileInfo) Files;
|
Array<FileInfo> Files;
|
||||||
String Buffer;
|
String Buffer;
|
||||||
Array(RequestEntry) Requests;
|
Array<RequestEntry> Requests;
|
||||||
|
|
||||||
void add_files( s32 num, char const** files );
|
void add_files( s32 num, char const** files );
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ struct Editor
|
|||||||
void refactor( char const* file_path, char const* specification_path );
|
void refactor( char const* file_path, char const* specification_path );
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
bool process_requests( Array(Receipt) out_receipts );
|
bool process_requests( Array<Receipt> out_receipts );
|
||||||
};
|
};
|
||||||
|
|
||||||
// namespace gen
|
// namespace gen
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "gen.push_ignores.inline.hpp"
|
#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
|
// Dependencies are derived from the c-zpl library: https://github.com/zpl-c/zpl
|
||||||
#ifndef GEN_ROLL_OWN_DEPENDENCIES
|
#ifndef GEN_ROLL_OWN_DEPENDENCIES
|
||||||
# include "gen.dep.hpp"
|
# include "gen.dep.hpp"
|
||||||
@ -240,9 +240,9 @@ namespace ESpecifier
|
|||||||
# pragma push_macro( "global" )
|
# pragma push_macro( "global" )
|
||||||
# pragma push_macro( "internal" )
|
# pragma push_macro( "internal" )
|
||||||
# pragma push_macro( "local_persist" )
|
# pragma push_macro( "local_persist" )
|
||||||
# define global global
|
# undef global
|
||||||
# define internal internal
|
# undef internal
|
||||||
# define local_persist local_persist
|
# undef local_persist
|
||||||
|
|
||||||
# define Entry( Spec_, Code_ ) { sizeof(stringize(Code_)), stringize(Code_) },
|
# define Entry( Spec_, Code_ ) { sizeof(stringize(Code_)), stringize(Code_) },
|
||||||
Define_Specifiers
|
Define_Specifiers
|
||||||
@ -348,7 +348,7 @@ namespace Attribute
|
|||||||
constexpr char const* API_Import = stringize( GEN_API_Import_Code );
|
constexpr char const* API_Import = stringize( GEN_API_Import_Code );
|
||||||
constexpr char const* Keyword = stringize( GEN_Attribute_Keyword);
|
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_Export_Code __attribute__ ((visibility ("default")))
|
||||||
# define GEN_API_Import_Code __attribute__ ((visibility ("default")))
|
# define GEN_API_Import_Code __attribute__ ((visibility ("default")))
|
||||||
# define GEN_Attribute_Keyword __attribute__
|
# define GEN_Attribute_Keyword __attribute__
|
||||||
|
@ -29,15 +29,16 @@ struct Scanner
|
|||||||
|
|
||||||
static void set_allocator( AllocatorInfo allocator );
|
static void set_allocator( AllocatorInfo allocator );
|
||||||
|
|
||||||
Array(FileInfo) Files;
|
Array<FileInfo> Files;
|
||||||
String Buffer;
|
String Buffer;
|
||||||
Array(RequestEntry) Requests;
|
Array<RequestEntry> Requests;
|
||||||
|
|
||||||
void add_files( s32 num, char const** files );
|
void add_files( s32 num, char const** files );
|
||||||
|
|
||||||
void add( SymbolInfo signature, Policy policy );
|
void add( SymbolInfo signature, Policy policy );
|
||||||
|
|
||||||
bool process_requests( Array(Receipt) out_receipts );
|
bool process_requests( Array<Receipt> out_receipts );
|
||||||
};
|
};
|
||||||
k
|
|
||||||
|
// namespace gen
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user