]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/statement.h
Rewrite the type system
[libs/datafile.git] / source / statement.h
index f2fa6e629bf7a1d50676bbe25b4f3096e87310dc..e7e9861cf8f803509e6e28b199dcf3c80e3d632e 100644 (file)
@@ -1,9 +1,10 @@
 /* $Id$
 
 This file is part of libmspdatafile
-Copyright © 2006  Mikko Rasa, Mikkosoft Productions
+Copyright © 2006-2008, 2010  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
+
 #ifndef MSP_DATAFILE_STATEMENT_H_
 #define MSP_DATAFILE_STATEMENT_H_
 
@@ -16,15 +17,30 @@ namespace DataFile {
 class Statement
 {
 public:
+       typedef std::vector<Value> Arguments;
+
        std::string keyword;
-       ValueArray  args;
+       Arguments   args;
        bool        valid;
        std::string source;
        unsigned    line;
        std::list<Statement> sub;
 
-       Statement(): valid(false), line(0) { }
+       Statement();
+       Statement(const std::string &);
        std::string get_location() const;
+       std::string get_signature() const;
+       
+       template<typename T>
+       Statement &append(const T &v)
+       {
+               args.push_back(v);
+               return *this;
+       }
+
+       template<typename T>
+       Statement &operator,(const T &v)
+       { return append(v); }
 };
 
 } // namespace DataFile