X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbinaryparser.cpp;h=e105393f3d02c16f1fbb21ff5a5922f365e8534b;hb=fafae9081dc6cf6fe8fbc39cbca53708e83813ab;hp=e2ced82098e7b1472944dd4a2b626bef32211459;hpb=e063c8e0aa04f0b09962be8b6c586c1d021a929f;p=libs%2Fdatafile.git diff --git a/source/binaryparser.cpp b/source/binaryparser.cpp index e2ced82..e105393 100644 --- a/source/binaryparser.cpp +++ b/source/binaryparser.cpp @@ -1,10 +1,10 @@ #include -#include #include #include #include "argumentstore.h" #include "binaryparser.h" #include "binfloat.h" +#include "except.h" #include "input.h" #include "loaderaction.h" @@ -13,27 +13,6 @@ using namespace std; namespace Msp { namespace DataFile { -class bad_definition: public runtime_error -{ -public: - bad_definition(const std::string &w): - runtime_error(w) - { } - - virtual ~bad_definition() throw() { } -}; - -class nesting_error: public logic_error -{ -public: - nesting_error(const std::string &w): - logic_error(w) - { } - - virtual ~nesting_error() throw() { } -}; - - BinaryParser::BinaryParser(Input &i, const string &s): ParserMode(i, s), float_precision(32), @@ -82,7 +61,7 @@ Statement BinaryParser::parse() result.args.push_back(parse_bool()); break; case SymbolType::signature: - result.args.push_back(parse_symbol()); + result.args.push_back(Value(parse_symbol())); break; } } @@ -111,8 +90,8 @@ void BinaryParser::process_control_statement(const Statement &st) const string &kw = st.args[1].get(); const string &args = st.args[2].get(); - for(string::const_iterator i=args.begin(); i!=args.end(); ++i) - for(unsigned j=0; valid_signatures[j]!=*i; ++j) + for(char c: args) + for(unsigned j=0; valid_signatures[j]!=c; ++j) if(!valid_signatures[j]) throw bad_definition("__kwd"); @@ -221,7 +200,7 @@ IntType::Store BinaryParser::parse_int() FloatType::Store BinaryParser::parse_float() { - UInt64 encoded = 0; + uint64_t encoded = 0; for(unsigned i=0; i