]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/binaryparser.cpp
Let Variant take care of detecting type mismatches
[libs/datafile.git] / source / binaryparser.cpp
index 4d510c58c0347a85aa0c13cb9b5603ca6debcf1e..d2fca32ef3a2155eb78eec3034e67649336c3c0f 100644 (file)
@@ -1,12 +1,6 @@
-/* $Id$
-
-This file is part of libmspdatafile
-Copyright © 2007-2008  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #include <sys/param.h>
-#include <msp/strings/formatter.h>
+#include <msp/core/maputils.h>
+#include <msp/strings/format.h>
 #include "binaryparser.h"
 #include "input.h"
 
@@ -61,10 +55,7 @@ Statement BinaryParser::parse_statement()
        if(!in)
                return Statement();
 
-       Dictionary::const_iterator i = dict.find(id);
-       if(i==dict.end())
-               throw_at(KeyError("Unknown statement ID", lexical_cast(id)), src);
-       const DictEntry &de = i->second;
+       const DictEntry &de = get_item(dict, id);
 
        Statement result;
        result.keyword = de.keyword;
@@ -159,20 +150,12 @@ string BinaryParser::parse_string()
                return result;
        }
        else
-               return lookup_string(-len);
+               return get_item(strings, -len);
 }
 
 string BinaryParser::parse_enum()
 {
-       return lookup_string(parse_int());
-}
-
-const string &BinaryParser::lookup_string(unsigned id) const
-{
-       StringMap::const_iterator i = strings.find(id);
-       if(i==strings.end())
-               throw_at(KeyError("Unknown string", lexical_cast(id)), src);
-       return i->second;
+       return get_item(strings, parse_int());
 }
 
 } // namespace DataFile