mirror of
https://github.com/Ed94/gencpp.git
synced 2024-12-23 00:04:45 -08:00
Ed_
d36c3fa847
Looking into properly dealing with empty lines... I want to preserve the text's empty lines in the AST for serialization purposes (perserve formatting for gapes between definitions). Don't want to introduce the possibility of it breaking though, so will have to ignore empty_lines in a general way (if they are in a bad spot). Attempted to cover that by having TokArray::current() auto-skip empty lines and eat as well if the type doesn't match.
70 lines
1.1 KiB
C++
70 lines
1.1 KiB
C++
Code scan_file( char const* path )
|
|
{
|
|
FileInfo file;
|
|
|
|
FileError error = file_open_mode( & file, EFileMode_READ, path );
|
|
if ( error != EFileError_NONE )
|
|
{
|
|
fatal( "scan_file: Could not open: %s", path );
|
|
}
|
|
|
|
sw fsize = file_size( & file );
|
|
if ( fsize <= 0 )
|
|
{
|
|
fatal("scan_file: %s is empty", path );
|
|
}
|
|
|
|
String str = String::make_reserve( GlobalAllocator, fsize );
|
|
file_read( & file, str, fsize );
|
|
str.get_header().Length = fsize;
|
|
|
|
file_close( & file );
|
|
|
|
return untyped_str( str );
|
|
}
|
|
|
|
#if 0
|
|
struct Policy
|
|
{
|
|
// Nothing for now.
|
|
};
|
|
|
|
struct SymbolInfo
|
|
{
|
|
StringCached File;
|
|
char const* Marker;
|
|
Code Signature;
|
|
};
|
|
|
|
|
|
struct Scanner
|
|
{
|
|
struct RequestEntry
|
|
{
|
|
SymbolInfo Info;
|
|
};
|
|
|
|
struct Receipt
|
|
{
|
|
StringCached File;
|
|
Code Defintion;
|
|
bool Result;
|
|
};
|
|
|
|
AllocatorInfo MemAlloc;
|
|
|
|
static void set_allocator( AllocatorInfo allocator );
|
|
|
|
Array<FileInfo> Files;
|
|
String Buffer;
|
|
Array<RequestEntry> Requests;
|
|
|
|
void add_files( s32 num, char const** files );
|
|
|
|
void add( SymbolInfo signature, Policy policy );
|
|
|
|
bool process_requests( Array<Receipt> out_receipts );
|
|
};
|
|
#endif
|
|
|