diff --git a/include/dl/dl_util.h b/include/dl/dl_util.h index da41dad..d3fe967 100755 --- a/include/dl/dl_util.h +++ b/include/dl/dl_util.h @@ -20,6 +20,7 @@ extern "C" { #endif // __cplusplus +struct dl_allocator; /* Enum: dl_util_file_type_t Enumeration of possible file types that can be read by util-functions. @@ -52,13 +53,16 @@ typedef enum filetype - Type of file to read, see dl_util_file_type_t. out_instance - Pointer to fill with read instance. out_type - TypeID of instance found in file, can be set to 0x0. + allocator - Allocator for doing temp file allocations. 0x0 / nullpointer is also + valid and will default to using malloc (default behavior of dl). Returns: DL_ERROR_OK on success. */ dl_error_t dl_util_load_from_file( dl_ctx_t dl_ctx, dl_typeid_t type, const char* filename, dl_util_file_type_t filetype, - void** out_instance, dl_typeid_t* out_type ); + void** out_instance, dl_typeid_t* out_type, + dl_allocator *allocator ); /* Function: dl_util_load_from_stream @@ -71,13 +75,15 @@ dl_error_t dl_util_load_from_file( dl_ctx_t dl_ctx, dl_typeid_t more. Parameters: - dl_ctx - Context to use for operations. - type - Type expected to be found in file, set to 0 if not known. - stream - Open stream to load from. - filetype - Type of file to read, see dl_util_file_type_t. - out_instance - Pointer to fill with read instance. - out_type - TypeID of instance found in file, can be set to 0x0. - consumed_bytes - Number of bytes read from stream. + dl_ctx - Context to use for operations. + type - Type expected to be found in file, set to 0 if not known. + stream - Open stream to load from. + filetype - Type of file to read, see dl_util_file_type_t. + out_instance - Pointer to fill with read instance. + out_type - TypeID of instance found in file, can be set to 0x0. + consumed_bytes - Number of bytes read from stream. + allocator - Allocator for doing temp file allocations. 0x0 / nullpointer is also + valid and will default to using malloc (default behavior of dl). Returns: DL_ERROR_OK on success. @@ -85,7 +91,7 @@ dl_error_t dl_util_load_from_file( dl_ctx_t dl_ctx, dl_typeid_t dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t type, FILE* stream, dl_util_file_type_t filetype, void** out_instance, dl_typeid_t* out_type, - size_t* consumed_bytes ); + size_t* consumed_bytes, dl_allocator *allocator ); /* Function: dl_util_load_from_file_inplace @@ -96,12 +102,14 @@ dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t be used accordingly. Parameters: - dl_ctx - Context to use for operations. - type - Type expected to be found in file. - filename - Path to file to load from. - filetype - Type of file to read, see EDLUtilFileType. - out_instance - Pointer to area to load instance to. - out_instance_size - Size of buffer pointed to by _ppInstance + dl_ctx - Context to use for operations. + type - Type expected to be found in file. + filename - Path to file to load from. + filetype - Type of file to read, see EDLUtilFileType. + out_instance - Pointer to area to load instance to. + out_instance_size - Size of buffer pointed to by _ppInstance + allocator - Allocator for doing temp file allocations. 0x0 / nullpointer is also + valid and will default to using malloc (default behavior of dl). Returns: DL_ERROR_OK on success. @@ -109,7 +117,7 @@ dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t dl_error_t dl_util_load_from_file_inplace( dl_ctx_t dl_ctx, dl_typeid_t type, const char* filename, dl_util_file_type_t filetype, void* out_instance, size_t out_instance_size, - dl_typeid_t* out_type ); + dl_typeid_t* out_type, dl_allocator *allocator ); /* Function: dl_util_store_to_file @@ -127,6 +135,8 @@ dl_error_t dl_util_load_from_file_inplace( dl_ctx_t dl_ctx, dl_typeid_ out_endian - Endian of stored instance if binary. out_ptr_size - Pointer size of stored instance if binary. out_instance - Pointer to instance to write + allocator - Allocator for doing temp file allocations. 0x0 / nullpointer is also + valid and will default to using malloc (default behavior of dl). Returns: DL_ERROR_OK on success. @@ -134,7 +144,7 @@ dl_error_t dl_util_load_from_file_inplace( dl_ctx_t dl_ctx, dl_typeid_ dl_error_t dl_util_store_to_file( dl_ctx_t dl_ctx, dl_typeid_t type, const char* filename, dl_util_file_type_t filetype, dl_endian_t out_endian, size_t out_ptr_size, - const void* out_instance ); + const void* out_instance, dl_allocator *allocator ); /* Function: dl_util_store_to_stream @@ -152,6 +162,8 @@ dl_error_t dl_util_store_to_file( dl_ctx_t dl_ctx, dl_typeid_t ty out_endian - Endian of stored instance if binary. out_ptr_size - Pointer size of stored instance if binary. out_instance - Pointer to instance to write + allocator - Allocator for doing temp file allocations. 0x0 / nullpointer is also + valid and will default to using malloc (default behavior of dl). Returns: DL_ERROR_OK on success. @@ -159,7 +171,7 @@ dl_error_t dl_util_store_to_file( dl_ctx_t dl_ctx, dl_typeid_t ty dl_error_t dl_util_store_to_stream( dl_ctx_t dl_ctx, dl_typeid_t type, FILE* stream, dl_util_file_type_t filetype, dl_endian_t out_endian, size_t out_ptr_size, - const void* out_instance ); + const void* out_instance, dl_allocator *allocator ); #ifdef __cplusplus } diff --git a/src/dl_alloc.cpp b/src/dl_alloc.cpp index f506a29..d257b70 100644 --- a/src/dl_alloc.cpp +++ b/src/dl_alloc.cpp @@ -17,7 +17,7 @@ static void dl_internal_free( void* ptr, void* /*ctx*/ ) free( ptr ); } -bool dl_allocator_initialize( dl_allocator* alloc, dl_alloc_func alloc_f, dl_realloc_func realloc_f, dl_free_func free_f, void* alloc_ctx ) +int dl_allocator_initialize( dl_allocator* alloc, dl_alloc_func alloc_f, dl_realloc_func realloc_f, dl_free_func free_f, void* alloc_ctx ) { if( alloc_f == 0x0 && free_f == 0x0 && realloc_f == 0x0 ) { @@ -26,13 +26,13 @@ bool dl_allocator_initialize( dl_allocator* alloc, dl_alloc_func alloc_f, dl_rea alloc->realloc = dl_internal_realloc; alloc->free = dl_internal_free; alloc->ctx = 0x0; - return true; + return 1; } if( alloc_f == 0x0 || free_f == 0x0 ) { // invalid setup! - return false; + return 0; } alloc->alloc = alloc_f; @@ -40,5 +40,5 @@ bool dl_allocator_initialize( dl_allocator* alloc, dl_alloc_func alloc_f, dl_rea alloc->realloc = realloc_f; alloc->ctx = alloc_ctx; - return true; + return 1; } diff --git a/src/dl_alloc.h b/src/dl_alloc.h index 101603e..b7fda90 100644 --- a/src/dl_alloc.h +++ b/src/dl_alloc.h @@ -4,21 +4,26 @@ #include
#include -struct dl_allocator +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +typedef struct dl_allocator { dl_alloc_func alloc; dl_realloc_func realloc; dl_free_func free; void* ctx; -}; +} dl_allocator; /** * Initialize a dl_allocator to be used internally in DL. * * If alloc_f and free_f is both NULL, malloc, realloc and free will be used. * If alloc_f and free_f is not NULL, but realloc_f if NULL a fallback using alloc_f and free_f together with memcpy will be used. + * Returns 0 if initialization fails, 1 if it succeeds. */ -bool dl_allocator_initialize( dl_allocator* alloc, dl_alloc_func alloc_f, dl_realloc_func realloc_f, dl_free_func free_f, void* alloc_ctx ); +int dl_allocator_initialize( dl_allocator* alloc, dl_alloc_func alloc_f, dl_realloc_func realloc_f, dl_free_func free_f, void* alloc_ctx ); /** * Allocator memory on an allocator. @@ -53,5 +58,10 @@ inline void* dl_realloc( dl_allocator* alloc, void* ptr, size_t size, size_t old return new_ptr; } +#ifdef __cplusplus +} +#endif // __cplusplus + + #endif // DL_ALLOC_H_INCLUDED diff --git a/src/dl_util.cpp b/src/dl_util.cpp index de3c521..f4b6ce4 100755 --- a/src/dl_util.cpp +++ b/src/dl_util.cpp @@ -8,7 +8,7 @@ #include -static unsigned char* dl_read_entire_stream( dl_ctx_t dl_ctx, FILE* file, size_t* out_size ) +static unsigned char* dl_read_entire_stream( dl_allocator *allocator, FILE* file, size_t* out_size ) { const unsigned int CHUNK_SIZE = 1024; size_t total_size = 0; @@ -17,7 +17,7 @@ static unsigned char* dl_read_entire_stream( dl_ctx_t dl_ctx, FILE* file, size_t do { - out_buffer = (unsigned char*)dl_realloc( &dl_ctx->alloc, out_buffer, CHUNK_SIZE + total_size, total_size ); + out_buffer = (unsigned char*)dl_realloc( allocator, out_buffer, CHUNK_SIZE + total_size, total_size ); chunk_size = fread( out_buffer + total_size, 1, CHUNK_SIZE, file ); total_size += chunk_size; } @@ -27,9 +27,10 @@ static unsigned char* dl_read_entire_stream( dl_ctx_t dl_ctx, FILE* file, size_t return out_buffer; } -dl_error_t dl_util_load_from_file( dl_ctx_t dl_ctx, dl_typeid_t type, - const char* filename, dl_util_file_type_t filetype, - void** out_instance, dl_typeid_t* out_type ) +dl_error_t dl_util_load_from_file( dl_ctx_t dl_ctx, dl_typeid_t type, + const char* filename, dl_util_file_type_t filetype, + void** out_instance, dl_typeid_t* out_type, + dl_allocator * allocator ) { dl_error_t error = DL_ERROR_UTIL_FILE_NOT_FOUND; @@ -37,24 +38,29 @@ dl_error_t dl_util_load_from_file( dl_ctx_t dl_ctx, dl_typeid_t if( in_file != 0x0 ) { - error = dl_util_load_from_stream( dl_ctx, type, in_file, filetype, out_instance, out_type, 0x0 ); + error = dl_util_load_from_stream( dl_ctx, type, in_file, filetype, out_instance, out_type, 0x0, allocator ); fclose(in_file); } return error; } -dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t type, - FILE* stream, dl_util_file_type_t filetype, - void** out_instance, dl_typeid_t* out_type, - size_t* consumed_bytes ) +dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t type, + FILE* stream, dl_util_file_type_t filetype, + void** out_instance, dl_typeid_t* out_type, + size_t* consumed_bytes, dl_allocator *allocator ) { + dl_allocator mallocator; + if(allocator == 0x0) { + dl_allocator_initialize(&mallocator, 0x0, 0x0, 0x0, 0x0); + allocator = &mallocator; + } + + // TODO: this function need to handle alignment for _ppInstance - // TODO: this function should take an allocator for the user to be able to control allocations. (void)consumed_bytes; // TODO: Return good stuff here! - size_t file_size; - unsigned char* file_content = dl_read_entire_stream( dl_ctx, stream, &file_size ); + unsigned char* file_content = dl_read_entire_stream( allocator, stream, &file_size ); file_content[file_size] = '\0'; @@ -67,7 +73,7 @@ dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t if( ( in_file_type & filetype ) == 0 ) { - dl_free( &dl_ctx->alloc, file_content ); + dl_free( allocator, file_content ); return DL_ERROR_UTIL_FILE_TYPE_MISMATCH; } @@ -83,16 +89,16 @@ dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t error = dl_convert( dl_ctx, type, file_content, file_size, 0x0, 0, DL_ENDIAN_HOST, sizeof(void*), &load_size ); - if( error != DL_ERROR_OK ) { dl_free( &dl_ctx->alloc, file_content ); return error; } + if( error != DL_ERROR_OK ) { dl_free( allocator, file_content ); return error; } // convert if needed if( load_size > file_size || info.ptrsize < sizeof(void*) ) { - load_instance = (unsigned char*)dl_alloc( &dl_ctx->alloc, load_size ); + load_instance = (unsigned char*)dl_alloc( allocator, load_size ); error = dl_convert( dl_ctx, type, file_content, file_size, load_instance, load_size, DL_ENDIAN_HOST, sizeof(void*), 0x0 ); - dl_free( &dl_ctx->alloc, file_content ); + dl_free( allocator, file_content ); } else { @@ -101,7 +107,7 @@ dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t error = dl_convert_inplace( dl_ctx, type, load_instance, load_size, DL_ENDIAN_HOST, sizeof(void*), 0x0 ); } - if( error != DL_ERROR_OK ) { dl_free( &dl_ctx->alloc, load_instance ); return error; } + if( error != DL_ERROR_OK ) { dl_free( allocator, load_instance ); return error; } } break; case DL_UTIL_FILE_TYPE_TEXT: @@ -110,17 +116,17 @@ dl_error_t dl_util_load_from_stream( dl_ctx_t dl_ctx, dl_typeid_t size_t packed_size = 0; error = dl_txt_pack( dl_ctx, (char*)file_content, 0x0, 0, &packed_size ); - if(error != DL_ERROR_OK) { dl_free( &dl_ctx->alloc,file_content); return error; } + if(error != DL_ERROR_OK) { dl_free( allocator, file_content); return error; } - load_instance = (unsigned char*)dl_alloc( &dl_ctx->alloc, packed_size ); + load_instance = (unsigned char*)dl_alloc( allocator, packed_size ); error = dl_txt_pack(dl_ctx, (char*)file_content, load_instance, packed_size, 0x0); load_size = packed_size; - dl_free( &dl_ctx->alloc, file_content); + dl_free( allocator, file_content); - if(error != DL_ERROR_OK) { dl_free( &dl_ctx->alloc, load_instance); return error; } + if(error != DL_ERROR_OK) { dl_free( allocator, load_instance); return error; } if( type == 0 ) // autodetect type { @@ -154,7 +160,7 @@ dl_error_t dl_util_load_from_file_inplace( dl_ctx_t dl_ctx, dl_typeid_t dl_error_t dl_util_store_to_file( dl_ctx_t dl_ctx, dl_typeid_t type, const char* filename, dl_util_file_type_t filetype, dl_endian_t out_endian, size_t out_ptr_size, - const void* instance ) + const void* instance, dl_allocator *allocator /*= 0x0*/ ) { FILE* out_file = fopen( filename, filetype == DL_UTIL_FILE_TYPE_BINARY ? "wb" : "w" ); @@ -162,7 +168,7 @@ dl_error_t dl_util_store_to_file( dl_ctx_t dl_ctx, dl_typeid_t ty if( out_file != 0x0 ) { - error = dl_util_store_to_stream( dl_ctx, type, out_file, filetype, out_endian, out_ptr_size, instance ); + error = dl_util_store_to_stream( dl_ctx, type, out_file, filetype, out_endian, out_ptr_size, instance, allocator ); fclose( out_file ); } @@ -172,8 +178,14 @@ dl_error_t dl_util_store_to_file( dl_ctx_t dl_ctx, dl_typeid_t ty dl_error_t dl_util_store_to_stream( dl_ctx_t dl_ctx, dl_typeid_t type, FILE* stream, dl_util_file_type_t filetype, dl_endian_t out_endian, size_t out_ptr_size, - const void* instance ) + const void* instance, dl_allocator *allocator ) { + dl_allocator mallocator; + if(allocator == 0x0) { + dl_allocator_initialize(&mallocator, 0x0, 0x0, 0x0, 0x0); + allocator = &mallocator; + } + if( filetype == DL_UTIL_FILE_TYPE_AUTO ) return DL_ERROR_INVALID_PARAMETER; @@ -186,12 +198,12 @@ dl_error_t dl_util_store_to_stream( dl_ctx_t dl_ctx, dl_typeid_t return error; // alloc memory - unsigned char* packed_instance = (unsigned char*)dl_alloc( &dl_ctx->alloc, packed_size ); + unsigned char* packed_instance = (unsigned char*)dl_alloc( allocator, packed_size ); // pack data error = dl_instance_store( dl_ctx, type, instance, packed_instance, packed_size, 0x0 ); - if( error != DL_ERROR_OK ) { dl_free( &dl_ctx->alloc, packed_instance ); return error; } + if( error != DL_ERROR_OK ) { dl_free( allocator, packed_instance ); return error; } size_t out_size = 0; unsigned char* out_data = 0x0; @@ -203,27 +215,27 @@ dl_error_t dl_util_store_to_stream( dl_ctx_t dl_ctx, dl_typeid_t // calc convert size error = dl_convert( dl_ctx, type, packed_instance, packed_size, 0x0, 0, out_endian, out_ptr_size, &out_size ); - if( error != DL_ERROR_OK ) { dl_free( &dl_ctx->alloc, packed_instance ); return error; } + if( error != DL_ERROR_OK ) { dl_free( allocator, packed_instance ); return error; } // convert if( out_size > packed_size || out_ptr_size > sizeof(void*) ) { // new alloc - out_data = (unsigned char*)dl_alloc( &dl_ctx->alloc, out_size ); + out_data = (unsigned char*)dl_alloc( allocator, out_size ); // convert error = dl_convert( dl_ctx, type, packed_instance, packed_size, out_data, out_size, out_endian, out_ptr_size, 0x0 ); - dl_free( &dl_ctx->alloc, packed_instance ); + dl_free( allocator, packed_instance ); - if( error != DL_ERROR_OK ) { dl_free( &dl_ctx->alloc, out_data ); return error; } + if( error != DL_ERROR_OK ) { dl_free( allocator, out_data ); return error; } } else { out_data = packed_instance; error = dl_convert_inplace( dl_ctx, type, packed_instance, packed_size, out_endian, out_ptr_size, 0x0 ); - if( error != DL_ERROR_OK ) { dl_free( &dl_ctx->alloc, out_data ); return error; } + if( error != DL_ERROR_OK ) { dl_free( allocator, out_data ); return error; } } } break; @@ -232,17 +244,17 @@ dl_error_t dl_util_store_to_stream( dl_ctx_t dl_ctx, dl_typeid_t // calculate pack-size error = dl_txt_unpack( dl_ctx, type, packed_instance, packed_size, 0x0, 0, &out_size ); - if( error != DL_ERROR_OK ) { dl_free( &dl_ctx->alloc, packed_instance ); return error; } + if( error != DL_ERROR_OK ) { dl_free( allocator, packed_instance ); return error; } // alloc data - out_data = (unsigned char*)dl_alloc( &dl_ctx->alloc, out_size ); + out_data = (unsigned char*)dl_alloc( allocator, out_size ); // pack data error = dl_txt_unpack( dl_ctx, type, packed_instance, packed_size, (char*)out_data, out_size, 0x0 ); - dl_free( &dl_ctx->alloc, packed_instance ); + dl_free( allocator, packed_instance ); - if( error != DL_ERROR_OK ) { dl_free( &dl_ctx->alloc, out_data ); return error; } + if( error != DL_ERROR_OK ) { dl_free( allocator, out_data ); return error; } } break; default: @@ -250,7 +262,7 @@ dl_error_t dl_util_store_to_stream( dl_ctx_t dl_ctx, dl_typeid_t } fwrite( out_data, out_size, 1, stream ); - dl_free( &dl_ctx->alloc, out_data ); + dl_free( allocator, out_data ); return error; } diff --git a/tests/dl_test_valid_c.c b/tests/dl_test_valid_c.c index 10ee1f8..1c696b1 100644 --- a/tests/dl_test_valid_c.c +++ b/tests/dl_test_valid_c.c @@ -3,6 +3,7 @@ #include "generated/unittest2.h" #include "generated/sized_enums.h" +#include "../src/dl_alloc.h" #include
#include
#include
diff --git a/tests/dl_tests_util.cpp b/tests/dl_tests_util.cpp index a0c12c7..d044fb5 100644 --- a/tests/dl_tests_util.cpp +++ b/tests/dl_tests_util.cpp @@ -54,19 +54,21 @@ TEST_F( DLUtil, store_load_binary ) DL_UTIL_FILE_TYPE_BINARY, DL_ENDIAN_HOST, sizeof(void*), - &p ) ); + &p, + 0x0 ) ); union { Pods* p2; void* vp; } conv; conv.p2 = 0x0; dl_typeid_t stored_type; - + // read struct from temp-flle. EXPECT_DL_ERR_OK( dl_util_load_from_file( Ctx, Pods::TYPE_ID, TEMP_FILE_NAME, DL_UTIL_FILE_TYPE_BINARY, &conv.vp, - &stored_type ) ); + &stored_type, + 0x0 ) ); dl_typeid_t expect = Pods::TYPE_ID; EXPECT_EQ( expect, stored_type ); @@ -83,7 +85,8 @@ TEST_F( DLUtil, store_load_text ) DL_UTIL_FILE_TYPE_TEXT, DL_ENDIAN_HOST, sizeof(void*), - &p ) ); + &p, + 0x0 ) ); union { Pods* p2; void* vp; } conv; conv.p2 = 0x0; @@ -95,7 +98,8 @@ TEST_F( DLUtil, store_load_text ) TEMP_FILE_NAME, DL_UTIL_FILE_TYPE_TEXT, &conv.vp, - &stored_type ) ); + &stored_type, + 0x0 ) ); dl_typeid_t expect = Pods::TYPE_ID; EXPECT_EQ( expect, stored_type ); @@ -111,7 +115,8 @@ TEST_F( DLUtil, load_text_from_binary_error ) DL_UTIL_FILE_TYPE_BINARY, DL_ENDIAN_HOST, sizeof(void*), - &p ) ); + &p, + 0x0 ) ); union { Pods* p2; void* vp; } conv; conv.p2 = 0x0; @@ -122,7 +127,8 @@ TEST_F( DLUtil, load_text_from_binary_error ) TEMP_FILE_NAME, DL_UTIL_FILE_TYPE_TEXT, &conv.vp, - &stored_type ) ); + &stored_type, + 0x0 ) ); EXPECT_EQ( 0x0, conv.p2 ); // should be untouched } @@ -135,7 +141,8 @@ TEST_F( DLUtil, load_binary_from_text_error ) DL_UTIL_FILE_TYPE_TEXT, DL_ENDIAN_HOST, sizeof(void*), - &p ) ); + &p, + 0x0 ) ); union { Pods* p2; void* vp; } conv; conv.p2 = 0x0; @@ -146,7 +153,8 @@ TEST_F( DLUtil, load_binary_from_text_error ) TEMP_FILE_NAME, DL_UTIL_FILE_TYPE_BINARY, &conv.vp, - &stored_type ) ); + &stored_type, + 0x0 ) ); EXPECT_EQ( 0x0, conv.p2 ); // should be untouched } @@ -159,7 +167,8 @@ TEST_F( DLUtil, auto_detect_binary_file_format ) DL_UTIL_FILE_TYPE_BINARY, DL_ENDIAN_HOST, sizeof(void*), - &p ) ); + &p, + 0x0 ) ); union { Pods* p2; void* vp; } conv; conv.p2 = 0x0; @@ -170,7 +179,8 @@ TEST_F( DLUtil, auto_detect_binary_file_format ) TEMP_FILE_NAME, DL_UTIL_FILE_TYPE_AUTO, &conv.vp, - &stored_type ) ); + &stored_type, + 0x0 ) ); dl_typeid_t expect = Pods::TYPE_ID; EXPECT_EQ( expect, stored_type ); @@ -187,7 +197,8 @@ TEST_F( DLUtil, auto_detect_text_file_format ) DL_UTIL_FILE_TYPE_TEXT, DL_ENDIAN_HOST, sizeof(void*), - &p ) ); + &p, + 0x0 ) ); union { Pods* p2; void* vp; } conv; conv.p2 = 0x0; @@ -198,7 +209,8 @@ TEST_F( DLUtil, auto_detect_text_file_format ) TEMP_FILE_NAME, DL_UTIL_FILE_TYPE_AUTO, &conv.vp, - &stored_type ) ); + &stored_type, + 0x0 ) ); dl_typeid_t expect = Pods::TYPE_ID; EXPECT_EQ( expect, stored_type ); @@ -210,7 +222,7 @@ TEST_F( DLUtil, auto_detect_text_file_format ) TEST_F( DLUtil, dl_util_load_non_existing_file ) { EXPECT_DL_ERR_EQ( DL_ERROR_UTIL_FILE_NOT_FOUND, - dl_util_load_from_file( Ctx, 0, "whobb whobb whoob", DL_UTIL_FILE_TYPE_AUTO, 0, 0 ) ); + dl_util_load_from_file( Ctx, 0, "whobb whobb whoob", DL_UTIL_FILE_TYPE_AUTO, 0, 0, 0 ) ); } // store in other endian and load! diff --git a/tool/dl_pack/dl_pack.cpp b/tool/dl_pack/dl_pack.cpp index b3fdbc7..11e4bea 100755 --- a/tool/dl_pack/dl_pack.cpp +++ b/tool/dl_pack/dl_pack.cpp @@ -171,7 +171,7 @@ int main( int argc, const char** argv ) case 'e': if(strcmp(go_ctx.current_opt_arg, "little") == 0) out_endian = DL_ENDIAN_LITTLE; - else if(strcmp(go_ctx.current_opt_arg, "big") == 0) + else if(strcmp(go_ctx.current_opt_arg, "big") == 0) out_endian = DL_ENDIAN_BIG; else M_ERROR_AND_QUIT("endian-flag need \"little\" or \"big\", not \"%s\"!", go_ctx.current_opt_arg); @@ -226,7 +226,7 @@ int main( int argc, const char** argv ) dl_typeid_t type; void* instance = 0; - dl_error_t err = dl_util_load_from_stream( dl_ctx, 0, in_file, DL_UTIL_FILE_TYPE_AUTO, &instance, &type, 0x0 ); + dl_error_t err = dl_util_load_from_stream( dl_ctx, 0, in_file, DL_UTIL_FILE_TYPE_AUTO, &instance, &type, 0x0, 0x0 ); if( err != DL_ERROR_OK ) M_ERROR_AND_QUIT( "DL error reading stream: %s", dl_error_to_string( err ) ); @@ -236,7 +236,8 @@ int main( int argc, const char** argv ) do_unpack == 1 ? DL_UTIL_FILE_TYPE_TEXT : DL_UTIL_FILE_TYPE_BINARY, out_endian, out_ptr_size, - instance ); + instance, + 0x0 ); if( err != DL_ERROR_OK ) M_ERROR_AND_QUIT( "DL error writing stream: %s", dl_error_to_string( err ) );