1 #include <msp/core/getopt.h>
2 #include <msp/io/buffered.h>
3 #include <msp/io/console.h>
4 #include <msp/io/file.h>
5 #include <msp/datafile/parser.h>
6 #include <msp/datafile/statement.h>
7 #include <msp/datafile/writer.h>
14 DataTool::DataTool(int argc, char **argv):
22 getopt.add_option('b', "binary", binary, GetOpt::NO_ARG);
23 getopt.add_option('c', "compile", compile, GetOpt::NO_ARG);
24 getopt.add_option('f', "float-size", float_size, GetOpt::REQUIRED_ARG);
25 getopt.add_option('o', "output", out_fn, GetOpt::REQUIRED_ARG);
26 getopt.add_option('z', "compress", compress, GetOpt::NO_ARG);
29 in_fns = getopt.get_args();
31 in_fns.push_back("-");
44 void DataTool::do_transfer()
46 IO::Base *out = open_output(out_fn);
47 DataFile::Writer writer(*out);
48 set_writer_parameters(writer);
50 for(vector<string>::const_iterator i=in_fns.begin(); i!=in_fns.end(); ++i)
52 IO::Base *in = open_input(*i);
53 DataFile::Parser parser(*in, *i);
57 DataFile::Statement st = parser.parse();
68 void DataTool::do_compile()
70 IO::Base *out = open_output(out_fn);
71 DataFile::Writer writer(*out);
72 set_writer_parameters(writer);
74 Compiler compiler(writer);
75 for(vector<string>::const_iterator i=in_fns.begin(); i!=in_fns.end(); ++i)
77 IO::Base *in = open_input(*i);
78 DataFile::Parser parser(*in, *i);
79 compiler.load(parser);
86 IO::Base *DataTool::open_output(const string &fn)
89 return new IO::Buffered(IO::cout);
91 return new IO::BufferedFile(fn, IO::M_WRITE);
94 IO::Base *DataTool::open_input(const string &fn)
97 return new IO::Buffered(IO::cin);
99 return new IO::BufferedFile(fn, IO::M_READ);
102 void DataTool::set_writer_parameters(DataFile::Writer &writer)
105 writer.set_compressed();
107 writer.set_binary(true);
109 writer.set_float_precision(float_size);