+
+StatementInfo::StatementInfo():
+ args_size(0)
+{ }
+
+StatementInfo::StatementInfo(const string &k, const string &s):
+ key(k, s),
+ args_size(0)
+{
+ for(string::const_iterator i=key.signature.begin(); i!=key.signature.end(); ++i)
+ {
+ arg_offsets.push_back(args_size);
+ switch(*i)
+ {
+ case IntType::signature:
+ args_size += sizeof(IntType::Store);
+ break;
+ case FloatType::signature:
+ args_size += sizeof(FloatType::Store);
+ break;
+ case BoolType::signature:
+ args_size += sizeof(BoolType::Store);
+ break;
+ case StringType::signature:
+ args_size += sizeof(StringType::Store);
+ break;
+ case SymbolType::signature:
+ args_size += sizeof(SymbolType::Store);
+ break;
+ }
+ }
+}
+