From 4ff1b1dcb9f52a2642feabda38c8c135aac6c599 Mon Sep 17 00:00:00 2001 From: jussi Date: Wed, 29 Nov 2023 17:20:54 +0200 Subject: ExportBufferAsCode. --- src/core.c | 68 ++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 26 deletions(-) (limited to 'src/core.c') diff --git a/src/core.c b/src/core.c index 2f4b96b..2d7d7a1 100644 --- a/src/core.c +++ b/src/core.c @@ -2942,6 +2942,41 @@ int lcoreLoadBuffer( lua_State *L ) { return 1; } +/* +> buffer = RL.LoadBufferFromFile( string path, type int ) + +Read buffer data from binary file + +- Failure return nil +- Success return Buffer +*/ +int lcoreLoadBufferFromFile( lua_State *L ) { + int type = luaL_checkinteger( L, 2 ); + const char *path = luaL_checkstring( L, 1 ); + + int fileLen = GetFileLength( path ); + Buffer buffer = { + .type = type, + .size = fileLen, + .data = malloc( fileLen ) + }; + size_t elementSize = getBufferElementSize( &buffer ); + FILE *file; + file = fopen( path, "rb" ); + + if ( file == NULL ) { + TraceLog( LOG_WARNING, "Invalid file %s\n", path ); + lua_pushnil( L ); + return 1; + } + fread( buffer.data, elementSize, buffer.size / elementSize, file ); + fclose( file ); + + uluaPushBuffer( L, buffer ); + + return 1; +} + /* > RL.UnloadBuffer( Buffer buffer ) @@ -3107,36 +3142,17 @@ int lcoreExportBuffer( lua_State *L ) { } /* -> buffer = RL.LoadBufferFromFile( string path, type int ) +> success = RL.ExportBufferAsCode( Buffer buffer, string fileName ) -Read buffer data from binary file +Export buffer data to code (.h), returns true on success -- Failure return nil -- Success return Buffer +- Success return bool */ -int lcoreLoadBufferFromFile( lua_State *L ) { - int type = luaL_checkinteger( L, 2 ); - const char *path = luaL_checkstring( L, 1 ); - - int fileLen = GetFileLength( path ); - Buffer buffer = { - .type = type, - .size = fileLen, - .data = malloc( fileLen ) - }; - size_t elementSize = getBufferElementSize( &buffer ); - FILE *file; - file = fopen( path, "rb" ); - - if ( file == NULL ) { - TraceLog( LOG_WARNING, "Invalid file %s\n", path ); - lua_pushnil( L ); - return 1; - } - fread( buffer.data, elementSize, buffer.size / elementSize, file ); - fclose( file ); +int lcoreExportBufferAsCode( lua_State *L ) { + Buffer *buffer = uluaGetBuffer( L, 1 ); + const char *fileName = luaL_checkstring( L, 2 ); - uluaPushBuffer( L, buffer ); + lua_pushboolean( L, ExportDataAsCode( buffer->data, buffer->size, fileName ) ); return 1; } -- cgit v1.2.3