X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tool%2Ftool.cpp;h=5469106f50322b7497ea9626c5a4b2400187aa1c;hb=38c35631217316e2fd0453a8ef7a1eea9e47c5dc;hp=d0499cb663970c818f3f2d8dfeced6bdf31d48e0;hpb=8955db30f9cd1c1566b349da29e669f065f84e36;p=libs%2Fdatafile.git diff --git a/tool/tool.cpp b/tool/tool.cpp index d0499cb..5469106 100644 --- a/tool/tool.cpp +++ b/tool/tool.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include "compiler.h" #include "tool.h" @@ -16,12 +15,14 @@ DataTool::DataTool(int argc, char **argv): binary(false), compile(false), float_size(0), - compress(false) + compress(false), + debug(false) { GetOpt getopt; getopt.add_option('b', "binary", binary, GetOpt::NO_ARG); getopt.add_option('c', "compile", compile, GetOpt::NO_ARG); getopt.add_option('f', "float-size", float_size, GetOpt::REQUIRED_ARG); + getopt.add_option('g', "debug", debug, GetOpt::NO_ARG); getopt.add_option('o', "output", out_fn, GetOpt::REQUIRED_ARG); getopt.add_option('z', "compress", compress, GetOpt::NO_ARG); getopt(argc, argv); @@ -44,8 +45,7 @@ int DataTool::main() void DataTool::do_transfer() { IO::Base *out = open_output(out_fn); - DataFile::Writer writer(*out); - set_writer_parameters(writer); + DataFile::Writer *writer = create_writer(*out); for(vector::const_iterator i=in_fns.begin(); i!=in_fns.end(); ++i) { @@ -54,24 +54,24 @@ void DataTool::do_transfer() while(parser) { - DataFile::Statement st = parser.parse(); - if(st.valid) - writer.write(st); + DataFile::Statement st = parser.parse(true); + if(st.valid && (st.keyword.compare(0, 2, "__") || st.keyword=="__src" || debug)) + writer->write(st); } delete in; } + delete writer; delete out; } void DataTool::do_compile() { IO::Base *out = open_output(out_fn); - DataFile::Writer writer(*out); - set_writer_parameters(writer); + DataFile::Writer *writer = create_writer(*out); - Compiler compiler(writer); + Compiler compiler(*writer); for(vector::const_iterator i=in_fns.begin(); i!=in_fns.end(); ++i) { IO::Base *in = open_input(*i); @@ -80,6 +80,7 @@ void DataTool::do_compile() delete in; } + delete writer; delete out; } @@ -99,12 +100,14 @@ IO::Base *DataTool::open_input(const string &fn) return new IO::BufferedFile(fn, IO::M_READ); } -void DataTool::set_writer_parameters(DataFile::Writer &writer) +DataFile::Writer *DataTool::create_writer(IO::Base &out) { + DataFile::Writer *writer = new DataFile::Writer(out); if(compress) - writer.set_compressed(); + writer->set_compressed(); if(binary) - writer.set_binary(true); + writer->set_binary(true); if(float_size) - writer.set_float_precision(float_size); + writer->set_float_precision(float_size); + return writer; }