move to PIIOTextStream

This commit is contained in:
2022-05-13 13:24:09 +03:00
parent 1028233553
commit f67e3030b9
6 changed files with 217 additions and 188 deletions

View File

@@ -1,5 +1,6 @@
#include "generator.h"
#include "piresourcesstorage.h"
#include "piiostream.h"
PIString initName(const PIString & n) {
@@ -25,7 +26,8 @@ bool generate(const PIString & init_name, PIFile & file, const PIVector<ParserSe
}
}
if (fv.isEmpty()) return false;
file << "#include \"piresourcesstorage.h\"\n\nstatic const uchar " << dataname << "[] = {\n";
PIIOTextStream ts(&file);
ts << "#include \"piresourcesstorage.h\"\n\nstatic const uchar " << dataname << "[] = {\n";
bool first = true;
int rcnt = -1;
llong curoff = 0, curfile = 0;
@@ -40,45 +42,45 @@ bool generate(const PIString & init_name, PIFile & file, const PIVector<ParserSe
curfile += readed.size_s();
for (int i = 0; i < readed.size_s(); ++i) {
if (!first)
file << ',';
ts << ',';
first = false;
if (++rcnt >= 32) {
file << '\n';
ts << '\n';
rcnt = 0;
}
file << int(readed[i]);
ts << int(readed[i]);
}
}
e.size = curfile;
curoff += curfile;
}
file << "\n};\n";
ts << "\n};\n";
PIByteArray dba;
dba << fv;
file << "\nstatic const uchar " << descname << "[] = {\n";
ts << "\nstatic const uchar " << descname << "[] = {\n";
first = true;
rcnt = -1;
for (int i = 0; i < dba.size_s(); ++i) {
if (!first)
file << ',';
ts << ',';
first = false;
if (++rcnt >= 32) {
file << '\n';
ts << '\n';
rcnt = 0;
}
file << int(dba[i]);
ts << int(dba[i]);
}
file << "\n};\n";
ts << "\n};\n";
file << "\nvoid " << funcname << "() {\n";
file << "\tPIResourcesStorage::instance()->registerSection(" << dataname << ", " << descname << ", sizeof(" << descname << "));\n";
file << "}\n";
ts << "\nvoid " << funcname << "() {\n";
ts << "\tPIResourcesStorage::instance()->registerSection(" << dataname << ", " << descname << ", sizeof(" << descname << "));\n";
ts << "}\n";
file << "\nclass " << icname << " {\n";
file << "public:\n\t" << icname << "() {\n";
file << "\t\t" << funcname << "();\n";
file << "\t}\n";
file << "} _pirc_" << fcname << "_initializer_;\n";
ts << "\nclass " << icname << " {\n";
ts << "public:\n\t" << icname << "() {\n";
ts << "\t\t" << funcname << "();\n";
ts << "\t}\n";
ts << "} _pirc_" << fcname << "_initializer_;\n";
return true;
}

View File

@@ -20,6 +20,7 @@
#include "parser.h"
#include "generator.h"
#include "picli.h"
#include "piiostream.h"
using namespace PICoutManipulators;
@@ -76,12 +77,16 @@ int main (int argc, char * argv[]) {
if (!out_file.isEmpty()) {
if (outf.open(out_file, PIIODevice::ReadWrite)) {
outf.clear();
} else piCout << "Error: can`t open out file";
outf << "// Generated by \"PIP Resources Compiler\" " << PIDateTime::current().toString("dd.MM.yyyy hh:mm:ss\n");
outf << "// Execute command:\n";
} else {
piCout << "Error: can`t open out file" << out_file;
return 1;
}
PIIOTextStream ts(&outf);
ts << "// Generated by \"PIP Resources Compiler\" " << PIDateTime::current().toString("dd.MM.yyyy hh:mm:ss\n");
ts << "// Execute command:\n";
piForeachC (PIString & _a, cli.rawArguments())
outf << "// \"" << _a << "\"\n";
outf << "\n";
ts << "// \"" << _a << "\"\n";
ts << "\n";
if (!generate(init_name, outf, files)) {
piCout << "Error: generate fail";
return 1;