Skip to content

Commit 5471797

Browse files
committed
* Implemented --namespace command support for C generated code.
1 parent a37e1e9 commit 5471797

File tree

7 files changed

+38
-35
lines changed

7 files changed

+38
-35
lines changed

src/bin2cpp/ArrayGenerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ namespace bin2cpp
332332
{
333333
fprintf(fout, " \n");
334334
fprintf(fout, " // register when loaded if static initialisation does not work\n");
335-
fprintf(fout, " bin2c_filemanager_register_file(file);\n");
335+
fprintf(fout, " %s_filemanager_register_file(file);\n", mContext.codeNamespace.c_str());
336336
}
337337
fprintf(fout, "}\n");
338338
fprintf(fout, "\n");

src/bin2cpp/BaseGenerator.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ namespace bin2cpp
8181
//Uppercase function identifier
8282
std::string functionIdentifier = ra::strings::Lowercase(mContext.functionIdentifier);
8383

84-
getter.append("bin2c_get_file_");
84+
getter.append(mContext.codeNamespace);
85+
getter.append("_get_file_");
8586
getter.append(functionIdentifier);
8687
}
8788
break;
@@ -187,7 +188,7 @@ namespace bin2cpp
187188
return std::string();
188189

189190
std::string output;
190-
output << "extern bool bin2c_filemanager_register_file(" << mContext.baseClass << " * file); \n";
191+
output << "extern bool " << mContext.codeNamespace << "_filemanager_register_file(" << mContext.baseClass << " * file); \n";
191192
output << "\n";
192193
return output;
193194
}
@@ -204,14 +205,14 @@ namespace bin2cpp
204205
output << "#if (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) // GCC 4.0+ required, Clang supports it by default\n";
205206
output << "__attribute__((constructor))\n";
206207
output << "#endif\n";
207-
output << "void bin2c_register_file_static_init_" << functionIdentifier << "(void)\n";
208+
output << "void " << mContext.codeNamespace << "_register_file_static_init_" << functionIdentifier << "(void)\n";
208209
output << "{\n";
209-
output << " " << mContext.baseClass << "* this_file = bin2c_get_file_" << functionIdentifier << "();\n";
210-
output << " bin2c_filemanager_register_file(this_file);\n";
210+
output << " " << mContext.baseClass << "* this_file = " << mContext.codeNamespace << "_get_file_" << functionIdentifier << "();\n";
211+
output << " " << mContext.codeNamespace << "_filemanager_register_file(this_file);\n";
211212
output << "}\n";
212213
output << "#if _MSC_VER >= 1920 // Visual Studio 2019 or later\n";
213214
output << "#pragma section(\".CRT$XCU\", read)\n";
214-
output << "__declspec(allocate(\".CRT$XCU\")) void (*init_ptr_" << functionIdentifier << ")(void) = bin2c_register_file_static_init_" << functionIdentifier << ";\n";
215+
output << "__declspec(allocate(\".CRT$XCU\")) void (*init_ptr_" << functionIdentifier << ")(void) = " << mContext.codeNamespace << "_register_file_static_init_" << functionIdentifier << ";\n";
215216
output << "#endif\n";
216217
return output;
217218
}
@@ -460,18 +461,18 @@ namespace bin2cpp
460461
fprintf(header, "#ifndef %s_EMBEDDEDFILE_STRUCT\n", classMacroGuardPrefix.c_str());
461462
fprintf(header, "#define %s_EMBEDDEDFILE_STRUCT\n", classMacroGuardPrefix.c_str());
462463
fprintf(header, "typedef struct %s %s;\n", mContext.baseClass.c_str(), mContext.baseClass.c_str());
463-
fprintf(header, "typedef bool(*bin2c_load_func)();\n");
464-
fprintf(header, "typedef void(*bin2c_free_func)();\n");
465-
fprintf(header, "typedef bool(*bin2c_save_func)(const char*);\n");
464+
fprintf(header, "typedef bool(*%s_load_func)();\n", mContext.codeNamespace.c_str());
465+
fprintf(header, "typedef void(*%s_free_func)();\n", mContext.codeNamespace.c_str());
466+
fprintf(header, "typedef bool(*%s_save_func)(const char*);\n", mContext.codeNamespace.c_str());
466467
fprintf(header, "typedef struct %s\n", mContext.baseClass.c_str());
467468
fprintf(header, "{\n");
468469
fprintf(header, " size_t size;\n");
469470
fprintf(header, " const char* file_name;\n");
470471
fprintf(header, " const char* file_path;\n");
471472
fprintf(header, " const unsigned char* buffer;\n");
472-
fprintf(header, " bin2c_load_func load;\n");
473-
fprintf(header, " bin2c_free_func unload;\n");
474-
fprintf(header, " bin2c_save_func save;\n");
473+
fprintf(header, " %s_load_func load;\n", mContext.codeNamespace.c_str());
474+
fprintf(header, " %s_free_func unload;\n", mContext.codeNamespace.c_str());
475+
fprintf(header, " %s_save_func save;\n", mContext.codeNamespace.c_str());
475476
fprintf(header, "} %s;\n", mContext.baseClass.c_str());
476477
fprintf(header, "typedef %s* %sPtr;\n", mContext.baseClass.c_str(), mContext.baseClass.c_str());
477478
fprintf(header, "#endif //%s_EMBEDDEDFILE_STRUCT\n", classMacroGuardPrefix.c_str());

src/bin2cpp/ManagerGenerator.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -265,26 +265,26 @@ namespace bin2cpp
265265
fprintf(fout, "#ifndef %s_EMBEDDEDFILE_STRUCT\n", classMacroGuardPrefix.c_str());
266266
fprintf(fout, "#define %s_EMBEDDEDFILE_STRUCT\n", classMacroGuardPrefix.c_str());
267267
fprintf(fout, "typedef struct %s %s;\n", mContext.baseClass.c_str(), mContext.baseClass.c_str());
268-
fprintf(fout, "typedef bool(*bin2c_load_func)();\n");
269-
fprintf(fout, "typedef void(*bin2c_free_func)();\n");
270-
fprintf(fout, "typedef bool(*bin2c_save_func)(const char*);\n");
268+
fprintf(fout, "typedef bool(*%s_load_func)();\n", mContext.codeNamespace.c_str());
269+
fprintf(fout, "typedef void(*%s_free_func)();\n", mContext.codeNamespace.c_str());
270+
fprintf(fout, "typedef bool(*%s_save_func)(const char*);\n", mContext.codeNamespace.c_str());
271271
fprintf(fout, "typedef struct %s\n", mContext.baseClass.c_str());
272272
fprintf(fout, "{\n");
273273
fprintf(fout, " size_t size;\n");
274274
fprintf(fout, " const char* file_name;\n");
275275
fprintf(fout, " const char* file_path;\n");
276276
fprintf(fout, " const unsigned char* buffer;\n");
277-
fprintf(fout, " bin2c_load_func load;\n");
278-
fprintf(fout, " bin2c_free_func unload;\n");
279-
fprintf(fout, " bin2c_save_func save;\n");
277+
fprintf(fout, " %s_load_func load;\n", mContext.codeNamespace.c_str());
278+
fprintf(fout, " %s_free_func unload;\n", mContext.codeNamespace.c_str());
279+
fprintf(fout, " %s_save_func save;\n", mContext.codeNamespace.c_str());
280280
fprintf(fout, "} %s;\n", mContext.baseClass.c_str());
281281
fprintf(fout, "typedef %s* %sPtr;\n", mContext.baseClass.c_str(), mContext.baseClass.c_str());
282282
fprintf(fout, "#endif //%s_EMBEDDEDFILE_STRUCT\n", classMacroGuardPrefix.c_str());
283283
fprintf(fout, "\n");
284-
fprintf(fout, "size_t bin2c_filemanager_get_file_count();\n");
285-
fprintf(fout, "bool bin2c_filemanager_register_file(%s* file);\n", mContext.baseClass.c_str());
286-
fprintf(fout, "const %s* bin2c_filemanager_get_file(size_t index);\n", mContext.baseClass.c_str());
287-
fprintf(fout, "bool bin2c_filemanager_save_files(const char* directory);\n");
284+
fprintf(fout, "size_t %s_filemanager_get_file_count();\n", mContext.codeNamespace.c_str());
285+
fprintf(fout, "bool %s_filemanager_register_file(%s* file);\n", mContext.codeNamespace.c_str(), mContext.baseClass.c_str());
286+
fprintf(fout, "const %s* %s_filemanager_get_file(size_t index);\n", mContext.baseClass.c_str(), mContext.codeNamespace.c_str());
287+
fprintf(fout, "bool %s_filemanager_save_files(const char* directory);\n", mContext.codeNamespace.c_str());
288288
fprintf(fout, "\n");
289289
fprintf(fout, "#endif //%s\n", macroGuard.c_str());
290290

@@ -336,12 +336,12 @@ namespace bin2cpp
336336
fprintf(fout, "static %s** registered_files = NULL;\n", mContext.baseClass.c_str());
337337
fprintf(fout, "static size_t registered_files_count = 0;\n");
338338
fprintf(fout, "\n");
339-
fprintf(fout, "size_t bin2c_filemanager_get_file_count()\n");
339+
fprintf(fout, "size_t %s_filemanager_get_file_count()\n", mContext.codeNamespace.c_str());
340340
fprintf(fout, "{\n");
341341
fprintf(fout, " return registered_files_count;\n");
342342
fprintf(fout, "}\n");
343343
fprintf(fout, "\n");
344-
fprintf(fout, "bool bin2c_filemanager_register_file(%s* file)\n", mContext.baseClass.c_str());
344+
fprintf(fout, "bool %s_filemanager_register_file(%s* file)\n", mContext.codeNamespace.c_str(), mContext.baseClass.c_str());
345345
fprintf(fout, "{\n");
346346
fprintf(fout, " // check if already registered\n");
347347
fprintf(fout, " if ( registered_files_count && registered_files )\n");
@@ -373,14 +373,14 @@ namespace bin2cpp
373373
fprintf(fout, " return true;\n");
374374
fprintf(fout, "}\n");
375375
fprintf(fout, "\n");
376-
fprintf(fout, "const %s* bin2c_filemanager_get_file(size_t index)\n", mContext.baseClass.c_str());
376+
fprintf(fout, "const %s* %s_filemanager_get_file(size_t index)\n", mContext.baseClass.c_str(), mContext.codeNamespace.c_str());
377377
fprintf(fout, "{\n");
378378
fprintf(fout, " if ( index >= registered_files_count )\n");
379379
fprintf(fout, " return NULL;\n");
380380
fprintf(fout, " return registered_files[index];\n");
381381
fprintf(fout, "}\n");
382382
fprintf(fout, "\n");
383-
fprintf(fout, "static inline bool bin2c_filemanager_is_root_directory(const char* path)\n");
383+
fprintf(fout, "static inline bool %s_filemanager_is_root_directory(const char* path)\n", mContext.codeNamespace.c_str());
384384
fprintf(fout, "{\n");
385385
fprintf(fout, " if ( path == NULL && path[0] == '\\0' )\n");
386386
fprintf(fout, " return false;\n");
@@ -396,7 +396,7 @@ namespace bin2cpp
396396
fprintf(fout, " return false;\n");
397397
fprintf(fout, "}\n");
398398
fprintf(fout, "\n");
399-
fprintf(fout, "bool bin2c_filemanager_create_parent_directories(const char* file_path)\n");
399+
fprintf(fout, "bool %s_filemanager_create_parent_directories(const char* file_path)\n", mContext.codeNamespace.c_str());
400400
fprintf(fout, "{\n");
401401
fprintf(fout, " if ( file_path == NULL )\n");
402402
fprintf(fout, " return false;\n");
@@ -407,7 +407,7 @@ namespace bin2cpp
407407
fprintf(fout, " size_t length = strlen(file_path);\n");
408408
fprintf(fout, " for ( size_t i = 0; i < length; i++ )\n");
409409
fprintf(fout, " {\n");
410-
fprintf(fout, " if ( file_path[i] == PATH_SEPARATOR_CHAR && !(accumulator[0] == '\\0') && !bin2c_filemanager_is_root_directory(accumulator) )\n");
410+
fprintf(fout, " if ( file_path[i] == PATH_SEPARATOR_CHAR && !(accumulator[0] == '\\0') && !%s_filemanager_is_root_directory(accumulator) )\n", mContext.codeNamespace.c_str());
411411
fprintf(fout, " {\n");
412412
fprintf(fout, " int ret = portable_mkdir(accumulator);\n");
413413
fprintf(fout, " if ( ret != 0 && errno != EEXIST )\n");
@@ -425,7 +425,7 @@ namespace bin2cpp
425425
fprintf(fout, " return true;\n");
426426
fprintf(fout, "}\n");
427427
fprintf(fout, "\n");
428-
fprintf(fout, "bool bin2c_filemanager_save_files(const char * directory)\n");
428+
fprintf(fout, "bool %s_filemanager_save_files(const char * directory)\n", mContext.codeNamespace.c_str());
429429
fprintf(fout, "{\n");
430430
fprintf(fout, " if (directory == NULL)\n");
431431
fprintf(fout, " return false;\n");
@@ -435,7 +435,7 @@ namespace bin2cpp
435435
fprintf(fout, " path[0] = '\\0';\n");
436436
fprintf(fout, " for(size_t i=0; i< registered_files_count; i++)\n");
437437
fprintf(fout, " {\n");
438-
fprintf(fout, " const %s* f = bin2c_filemanager_get_file(i);\n", mContext.baseClass.c_str());
438+
fprintf(fout, " const %s* f = %s_filemanager_get_file(i);\n", mContext.baseClass.c_str(), mContext.codeNamespace.c_str());
439439
fprintf(fout, " if ( !f )\n");
440440
fprintf(fout, " {\n");
441441
fprintf(fout, " free(path);\n");
@@ -445,7 +445,7 @@ namespace bin2cpp
445445
fprintf(fout, " char path[32767] = { 0 };\n");
446446
fprintf(fout, " snprintf(path, sizeof(path), \"%%s%%c%%s\", directory, PATH_SEPARATOR_CHAR, f->file_path);\n");
447447
fprintf(fout, " \n");
448-
fprintf(fout, " if (!bin2c_filemanager_create_parent_directories(path))\n");
448+
fprintf(fout, " if (!%s_filemanager_create_parent_directories(path))\n", mContext.codeNamespace.c_str());
449449
fprintf(fout, " {\n");
450450
fprintf(fout, " free(path);\n");
451451
fprintf(fout, " return false;\n");

src/bin2cpp/SegmentGenerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ namespace bin2cpp
305305
{
306306
fprintf(fout, " \n");
307307
fprintf(fout, " // register when loaded if static initialisation does not work\n");
308-
fprintf(fout, " bin2c_filemanager_register_file(file);\n");
308+
fprintf(fout, " %s_filemanager_register_file(file);\n", mContext.codeNamespace.c_str());
309309
}
310310
fprintf(fout, "}\n");
311311
fprintf(fout, "\n");

src/bin2cpp/StringGenerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ namespace bin2cpp
316316
{
317317
fprintf(fout, " \n");
318318
fprintf(fout, " // register\n");
319-
fprintf(fout, " bin2c_filemanager_register_file(file);\n");
319+
fprintf(fout, " %s_filemanager_register_file(file);\n", mContext.codeNamespace.c_str());
320320
}
321321

322322
fprintf(fout, "}\n");

src/bin2cpp/Win32ResourceGenerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ namespace bin2cpp
359359
{
360360
fprintf(fout, " \n");
361361
fprintf(fout, " // register\n");
362-
fprintf(fout, " bin2c_filemanager_register_file(file);\n");
362+
fprintf(fout, " %s_filemanager_register_file(file);\n", mContext.codeNamespace.c_str());
363363
}
364364

365365
fprintf(fout, "}\n");

src/bin2cpp/main.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,9 @@ void printUsage()
191191
" --encoding=<name> Name of the binary to string literal encoding to use. Possible values are 'oct' and 'hex'. [default: oct]\n"
192192
" --chunksize=<value> Size in bytes of each string segments (bytes per LoC). [default: 200]\n"
193193
" --baseclass=<name> The name of the interface for embedded files. [default: File]\n"
194+
" For C generated code, this parameter is for naming the File structure. [default: Bin2cFile]\n"
194195
" --namespace=<name> The namespace of the generated source code. [default: bin2cpp]\n"
196+
" For C generated code, this parameter is for setting the prefix of all function names. [default: bin2c]\n"
195197
" --reportedfilepath=<path> The relative reported path of the File. Path returned when calling method getFilePath() of the File class. ie: images" SEPARATOR "DCIM" SEPARATOR "IMG_0001.jpg.\n"
196198
" Automatically calculated when --dir mode is used.\n"
197199
" --managerfile=<path> File name or relative path of the generated C++ header file for the FileManager class. ie: FileManager.h\n"

0 commit comments

Comments
 (0)