]> git.tdb.fi Git - libs/datafile.git/blobdiff - tool/tool.cpp
Style update: add spaces around assignments
[libs/datafile.git] / tool / tool.cpp
index ca415d30a0d9dc7d996d84b62021be90bc054f9e..02fba07fa022cd758722fa81e4e4ec78caf50d1c 100644 (file)
@@ -12,6 +12,7 @@ Distributed under the LGPL
 #include <msp/datafile/parser.h>
 #include <msp/datafile/statement.h>
 #include <msp/datafile/writer.h>
+#include "compiler.h"
 #include "tool.h"
 
 using namespace std;
@@ -19,31 +20,34 @@ using namespace Msp;
 
 DataTool::DataTool(int argc, char **argv):
        in_fn("-"),
-       out_fn("-")
+       out_fn("-"),
+       binary(false),
+       compile(false)
 {
        GetOpt getopt;
-       getopt.add_option('o', "output", out_fn, GetOpt::REQUIRED_ARG);
        getopt.add_option('b', "binary", binary, GetOpt::NO_ARG);
+       getopt.add_option('c', "compile", compile, GetOpt::NO_ARG);
+       getopt.add_option('o', "output", out_fn, GetOpt::REQUIRED_ARG);
        getopt(argc, argv);
 
-       const vector<string> &args=getopt.get_args();
+       const vector<string> &args = getopt.get_args();
        if(!args.empty())
-               in_fn=args[0];
+               in_fn = args[0];
 }
 
 int DataTool::main()
 {
        IO::Base *in;
        if(in_fn=="-")
-               in=&IO::cin;
+               in = &IO::cin;
        else
-               in=new IO::File(in_fn);
+               in = new IO::File(in_fn);
 
        IO::Base *out;
        if(out_fn=="-")
-               out=&IO::cout;
+               out = &IO::cout;
        else
-               out=new IO::File(out_fn, IO::M_WRITE);
+               out = new IO::File(out_fn, IO::M_WRITE);
 
        {
                IO::Buffered in_buf(*in);
@@ -53,13 +57,21 @@ int DataTool::main()
                if(binary)
                        writer.set_binary(true);
 
-               while(parser)
+               if(compile)
+               {
+                       Compiler compiler(writer);
+                       compiler.load(parser);
+               }
+               else
                {
-                       DataFile::Statement st=parser.parse();
-                       if(st.valid)
+                       while(parser)
                        {
-                               writer.write(st);
-                               out_buf.flush();
+                               DataFile::Statement st = parser.parse();
+                               if(st.valid)
+                               {
+                                       writer.write(st);
+                                       out_buf.flush();
+                               }
                        }
                }
        }