Skip to content

Commit ec2880f

Browse files
committed
Fixed small bugs in ArrayGenerator implementation.
Refactored function names in BaseGenerator.
1 parent c8f5cd4 commit ec2880f

File tree

7 files changed

+35
-26
lines changed

7 files changed

+35
-26
lines changed

src/bin2cpp/ArrayGenerator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,9 @@ namespace bin2cpp
166166
" file->unload = ${bin2cpp_function_identifier_lowercase}_free;\n"
167167
" file->save = ${bin2cpp_function_identifier_lowercase}_save;\n"
168168
"\n"
169-
" // load file by default on init as in c++ implementation"
169+
" // load file by default on init as in c++ implementation\n"
170170
" file->load();\n"
171-
"${bin2cpp_c_registration_post_init_impl}"
171+
"${bin2cpp_c_file_manager_registration_post_init_impl}"
172172
"}\n"
173173
"\n"
174174
"${bin2cpp_baseclass}* ${bin2cpp_cpp_getter_function_name}(void)\n"

src/bin2cpp/BaseGenerator.cpp

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,17 @@ namespace bin2cpp
7676
if ( name == "bin2cpp_get_file_obj_file_path" ) return getFileClassFilePath();
7777
if ( name == "bin2cpp_cpp_get_save_method_impl" ) return getSaveMethodTemplate();
7878
if ( name == "bin2cpp_cpp_get_file_manager_registration_impl" && mContext.registerFiles ) return getCppFileManagerRegistrationImplementationTemplate();
79-
if ( name == "bin2cpp_c_file_manager_registration_predeclaration" && mContext.registerFiles ) return getCFileManagerRegistrationPredeclarationTemplate();
80-
if ( name == "bin2cpp_c_file_manager_registration_implementation" && mContext.registerFiles ) return getCFileManagerRegistrationImplementationTemplate();
81-
82-
//if ( name == "bin2cpp_c_registration_post_init_impl" && mContext.registerFiles )
83-
//{
84-
// std::string output;
85-
// output += " \n";
86-
// output += " // register when loaded if static initialisation does not work\n";
87-
// output += " ${bin2cpp_classname}_filemanager_register_file(file);\n";
88-
// return output;
89-
//}
79+
if ( name == "bin2cpp_c_file_manager_registration_predeclaration" && mContext.registerFiles ) return getCFileManagerRegistrationPredeclarationImplementation();
80+
if ( name == "bin2cpp_c_file_manager_registration_implementation" && mContext.registerFiles ) return getCFileManagerStaticFileRegistrationImplementation();
81+
82+
if ( name == "bin2cpp_c_file_manager_registration_post_init_impl" && mContext.registerFiles )
83+
{
84+
std::string output;
85+
output += " \n";
86+
output += " // register when loaded if static initialisation does not work\n";
87+
output += " ${bin2cpp_namespace}_filemanager_register_file(file);\n";
88+
return output;
89+
}
9090

9191
if ( name == "bin2cpp_input_file_size" )
9292
{
@@ -228,7 +228,7 @@ namespace bin2cpp
228228
return output;
229229
}
230230

231-
std::string BaseGenerator::getCFileManagerRegistrationPredeclarationTemplate()
231+
std::string BaseGenerator::getCFileManagerRegistrationPredeclarationImplementation()
232232
{
233233
if ( !mContext.registerFiles )
234234
return std::string();
@@ -239,7 +239,7 @@ namespace bin2cpp
239239
return output;
240240
}
241241

242-
std::string BaseGenerator::getCFileManagerRegistrationImplementationTemplate()
242+
std::string BaseGenerator::getCFileManagerStaticFileRegistrationImplementation()
243243
{
244244
if ( !mContext.registerFiles )
245245
return std::string();
@@ -248,17 +248,18 @@ namespace bin2cpp
248248
std::string functionIdentifier = ra::strings::Lowercase(mContext.functionIdentifier);
249249

250250
std::string output;
251+
output << "\n";
251252
output << "#if (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) // GCC 4.0+ required, Clang supports it by default\n";
252253
output << "__attribute__((constructor))\n";
253254
output << "#endif\n";
254-
output << "void " << mContext.codeNamespace << "_register_file_static_init_" << functionIdentifier << "(void)\n";
255+
output << "void " << mContext.codeNamespace << "_" << functionIdentifier << "_register_file_static_init(void)\n";
255256
output << "{\n";
256257
output << " " << mContext.baseClass << "* this_file = " << mContext.codeNamespace << "_get_file_" << functionIdentifier << "();\n";
257258
output << " " << mContext.codeNamespace << "_filemanager_register_file(this_file);\n";
258259
output << "}\n";
259260
output << "#if _MSC_VER >= 1920 // Visual Studio 2019 or later\n";
260261
output << "#pragma section(\".CRT$XCU\", read)\n";
261-
output << "__declspec(allocate(\".CRT$XCU\")) void (*init_ptr_" << functionIdentifier << ")(void) = " << mContext.codeNamespace << "_register_file_static_init_" << functionIdentifier << ";\n";
262+
output << "__declspec(allocate(\".CRT$XCU\")) void (*init_ptr_" << mContext.codeNamespace << "_" << functionIdentifier << ")(void) = " << mContext.codeNamespace << "_" << functionIdentifier << "_register_file_static_init" << ";\n";
262263
output << "#endif\n";
263264
return output;
264265
}

src/bin2cpp/BaseGenerator.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ namespace bin2cpp
6262
virtual std::string getHeaderTemplate(bool include_source_file);
6363
virtual std::string getSaveMethodTemplate();
6464
virtual std::string getCppFileManagerRegistrationImplementationTemplate();
65-
virtual std::string getCFileManagerRegistrationPredeclarationTemplate();
66-
virtual std::string getCFileManagerRegistrationImplementationTemplate();
65+
virtual std::string getCFileManagerRegistrationPredeclarationImplementation();
66+
virtual std::string getCFileManagerStaticFileRegistrationImplementation();
6767
virtual std::string getClassName();
6868
virtual std::string getClassMacroGuardPrefix();
6969
virtual std::string getImplOfGetFileName();

src/bin2cpp/SegmentGenerator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ namespace bin2cpp
212212
fprintf(fout, "\n");
213213

214214
// File registration predeclaration code
215-
fprintf(fout, "%s", getCFileManagerRegistrationPredeclarationTemplate().c_str());
215+
fprintf(fout, "%s", getCFileManagerRegistrationPredeclarationImplementation().c_str());
216216

217217
fprintf(fout, "bool %s_load()\n", functionIdentifier.c_str());
218218
fprintf(fout, "{\n");
@@ -319,7 +319,7 @@ namespace bin2cpp
319319
fprintf(fout, "}\n");
320320

321321
// File registration implementation code
322-
fprintf(fout, "%s", getCFileManagerRegistrationImplementationTemplate().c_str());
322+
fprintf(fout, "%s", getCFileManagerStaticFileRegistrationImplementation().c_str());
323323

324324
fclose(input);
325325
fclose(fout);

src/bin2cpp/StringGenerator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ namespace bin2cpp
214214
fprintf(fout, "\n");
215215

216216
// File registration predeclaration code
217-
fprintf(fout, "%s", getCFileManagerRegistrationPredeclarationTemplate().c_str());
217+
fprintf(fout, "%s", getCFileManagerRegistrationPredeclarationImplementation().c_str());
218218

219219
fprintf(fout, "bool %s_load()\n", functionIdentifier.c_str());
220220
fprintf(fout, "{\n");
@@ -331,7 +331,7 @@ namespace bin2cpp
331331
fprintf(fout, "}\n");
332332

333333
// File registration implementation code
334-
fprintf(fout, "%s", getCFileManagerRegistrationImplementationTemplate().c_str());
334+
fprintf(fout, "%s", getCFileManagerStaticFileRegistrationImplementation().c_str());
335335

336336
fclose(input);
337337
fclose(fout);

src/bin2cpp/Win32ResourceGenerator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ namespace bin2cpp
265265
fprintf(fout, "\n");
266266

267267
// File registration predeclaration code
268-
fprintf(fout, "%s", getCFileManagerRegistrationPredeclarationTemplate().c_str());
268+
fprintf(fout, "%s", getCFileManagerRegistrationPredeclarationImplementation().c_str());
269269

270270
fprintf(fout, "bool %s_load()\n", functionIdentifier.c_str());
271271
fprintf(fout, "{\n");
@@ -375,7 +375,7 @@ namespace bin2cpp
375375
fprintf(fout, "}\n");
376376

377377
// File registration implementation code
378-
fprintf(fout, "%s", getCFileManagerRegistrationImplementationTemplate().c_str());
378+
fprintf(fout, "%s", getCFileManagerStaticFileRegistrationImplementation().c_str());
379379

380380
fclose(input);
381381
fclose(fout);

src/bin2cpp/bin2cpp.samples.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,27 @@
22
# C code examples:
33
##########################################################################################
44

5-
Test all generators
5+
Test all generators:
66
--file=..\..\test\bin2cpp_unittest\generated_files\testHtml100000\testHtml100000.bin --output=..\..\test\bin2cpp_unittest\generated_files\testHtml100000 --headerfile=_testHtml100000_C.h --override --code=c --generator=array
77
--file=..\..\test\bin2cpp_unittest\generated_files\testHtml100000\testHtml100000.bin --output=..\..\test\bin2cpp_unittest\generated_files\testHtml100000 --headerfile=_testHtml100000_C.h --override --code=c --generator=segment
88
--file=..\..\test\bin2cpp_unittest\generated_files\testHtml100000\testHtml100000.bin --output=..\..\test\bin2cpp_unittest\generated_files\testHtml100000 --headerfile=_testHtml100000_C.h --override --code=c --generator=string
99
--file=..\..\test\bin2cpp_unittest\generated_files\testHtml100000\testHtml100000.bin --output=..\..\test\bin2cpp_unittest\generated_files\testHtml100000 --headerfile=_testHtml100000_C.h --override --code=c --generator=win32
1010

11+
Test as much features as possible with all generators:
12+
--file=..\..\test\bin2cpp_unittest\generated_files\testHtml100000\testHtml100000.bin --output=..\..\temp --headerfile=c_tim_testHtml100000.h --identifier=LibFooFOO --chunksize=75 --baseclass=ben --namespace=ray --managerfile=c_tim_filemanager.h --registerfile --override --code=c --generator=array
13+
--file=..\..\test\bin2cpp_unittest\generated_files\testHtml100000\testHtml100000.bin --output=..\..\temp --headerfile=c_jim_testHtml100000.h --identifier=LibBarBAR --chunksize=75 --baseclass=tom --namespace=eva --managerfile=c_jim_filemanager.h --registerfile --override --code=c --generator=segment
14+
--file=..\..\test\bin2cpp_unittest\generated_files\testHtml100000\testHtml100000.bin --output=..\..\temp --headerfile=c_lou_testHtml100000.h --identifier=LibBazBAZ --chunksize=75 --baseclass=sam --namespace=joe --managerfile=c_lou_filemanager.h --registerfile --override --code=c --generator=string
15+
--file=..\..\test\bin2cpp_unittest\generated_files\testHtml100000\testHtml100000.bin --output=..\..\temp --headerfile=c_sue_testHtml100000.h --identifier=LibBobBOB --chunksize=75 --baseclass=leo --namespace=jon --managerfile=c_sue_filemanager.h --registerfile --override --code=c --generator=win32
16+
1117
Test for:
1218
* Segment C generator
1319
* filemanager
1420
* registerfile
1521
--file=..\..\test\bin2cpp_unittest\generated_files\testFileManager_C\testFileManager_C.1.bin --output=..\..\test\bin2cpp_unittest\generated_files\testFileManager_C --headerfile=_testFileManager_C.1.h --identifier=testFileManager1_c --managerfile=filemanager.h --override --code=c
1622
--file=..\..\test\bin2cpp_unittest\generated_files\testFileManager_C\testFileManager_C.2.bin --output=..\..\test\bin2cpp_unittest\generated_files\testFileManager_C --headerfile=_testFileManager_C.2.h --identifier=testFileManager2_c --registerfile --override --code=c
1723

24+
25+
1826
Test directories:
1927
--dir=..\..\..\samples\demo_website\www --output=..\..\temp --code=c
2028
--dir=..\..\..\samples\demo_website\www --output=..\..\temp --code=c --managerfile=www-file-manager.h

0 commit comments

Comments
 (0)