X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tool%2Fbuiltingenerator.cpp;h=45465db93ff172f67ee7bd1dd1f48961de0ebe3a;hb=3dfd1fabdcf3d2c0df6e524368ef9d07b286357f;hp=45d5844f5fdbe9b7e2236b76e89e0eacff51587c;hpb=86a81bdecfb320f9ce3569d49e26f12a925854d4;p=libs%2Fdatafile.git diff --git a/tool/builtingenerator.cpp b/tool/builtingenerator.cpp index 45d5844..45465db 100644 --- a/tool/builtingenerator.cpp +++ b/tool/builtingenerator.cpp @@ -14,7 +14,7 @@ BuiltinGenerator::BuiltinGenerator(IO::Base &o): void BuiltinGenerator::begin(const std::string &ns) { - if(!namespc.empty() || !filenames.empty()) + if(!namespc.empty() || !files.empty()) throw logic_error("BuiltinGenerator::begin"); if(!ns.empty()) @@ -30,7 +30,9 @@ void BuiltinGenerator::add_file(const std::string &fn) IO::BufferedFile in(fn); string base_fn = FS::basename(fn); - filenames.push_back(base_fn); + files.emplace_back(); + File &file = files.back(); + file.filename = base_fn; out.write(format("\nconst char %s_data[] =\n", mangle_filename(base_fn))); string line; @@ -47,14 +49,15 @@ void BuiltinGenerator::add_file(const std::string &fn) out.put(';'); out.put('\n'); } + file.size += len; } } void BuiltinGenerator::end(const string &module_name) { out.write(format("\nvoid init_%s(DataFile::BuiltinSource &source)\n{\n", module_name)); - for(vector::const_iterator i=filenames.begin(); i!=filenames.end(); ++i) - out.write(format(" source.add_object(\"%s\", %s_data);\n", *i, mangle_filename(*i))); + for(vector::const_iterator i=files.begin(); i!=files.end(); ++i) + out.write(format(" source.add_object(\"%s\", %s_data, %d);\n", i->filename, mangle_filename(i->filename), i->size)); out.write("}\n"); if(!namespc.empty()) @@ -64,7 +67,7 @@ void BuiltinGenerator::end(const string &module_name) out.write(format("} // namespace %s\n", *i)); namespc.clear(); - filenames.clear(); + files.clear(); } }