--- /dev/null
+#include "argumentstore.h"
+
+namespace Msp {
+namespace DataFile {
+
+ArgumentStore::ArgumentStore(const StatementInfo &n):
+ info(n),
+ store(new char[info.args_size])
+{
+ for(unsigned i=0; i<info.key.signature.size(); ++i)
+ switch(info.key.signature[i])
+ {
+ case StringType::signature:
+ new(store+info.arg_offsets[i]) StringType::Store;
+ break;
+ case SymbolType::signature:
+ new(store+info.arg_offsets[i]) SymbolType::Store;
+ break;
+ }
+}
+
+ArgumentStore::~ArgumentStore()
+{
+ for(unsigned i=0; i<info.key.signature.size(); ++i)
+ switch(info.key.signature[i])
+ {
+ case StringType::signature:
+ reinterpret_cast<StringType::Store *>(store+info.arg_offsets[i])->~basic_string();
+ break;
+ case SymbolType::signature:
+ reinterpret_cast<SymbolType::Store *>(store+info.arg_offsets[i])->~Symbol();
+ break;
+ }
+}
+
+} // namespace DataFile
+} // namespace Msp