X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Floader.cpp;h=997e7c9eec27f7f480c711291f6a47f997c7039e;hp=d987a9e92fd646ce8812f9b827028d508d0601f5;hb=1a3b30ea35fbc19e56bbd35e4ee1811d8d5e02a4;hpb=c18ba5448918a7418b3e01e1a1c5cf473efce592 diff --git a/source/loader.cpp b/source/loader.cpp index d987a9e..997e7c9 100644 --- a/source/loader.cpp +++ b/source/loader.cpp @@ -1,6 +1,6 @@ #include #include -#include "dataerror.h" +#include "except.h" #include "loader.h" #include "type.h" @@ -24,7 +24,7 @@ bool signature_match(const string &st_sig, const string &act_sig) else if(act_sig.size()==2 && act_sig[1]=='*') { for(string::const_iterator i=st_sig.begin(); i!=st_sig.end(); ++i) - if(*i!=act_sig[0]) + if(!signature_match(*i, act_sig[0])) return false; return true; @@ -47,28 +47,6 @@ bool signature_match(const string &st_sig, const string &act_sig) namespace Msp { namespace DataFile { -class unknown_keyword: public runtime_error -{ -public: - unknown_keyword(const std::string &k): - runtime_error(k) - { } - - virtual ~unknown_keyword() throw() { } -}; - - -class invalid_signature: public runtime_error -{ -public: - invalid_signature(const std::string &k, const std::string &s): - runtime_error(format("%s %s", k, s)) - { } - - virtual ~invalid_signature() throw() { } -}; - - Loader::Loader(): cur_st(0), direct(false), @@ -227,5 +205,12 @@ const string &Loader::get_source() const return cur_st->source; } +const string &Loader::get_keyword() const +{ + if(!cur_st) + throw logic_error("no current statement"); + return cur_st->keyword; +} + } // namespace DataFile } // namespace Msp