]> git.localhorst.tv Git - l2e.git/commitdiff
added more getters to ParsedSource
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 26 Aug 2012 21:16:52 +0000 (23:16 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 26 Aug 2012 21:27:08 +0000 (23:27 +0200)
src/loader/ParsedSource.cpp
src/loader/ParsedSource.h

index ec263042a68cdba8d7c9c27e43479ae9fee1455f..b019fe76bc4f5fb6c09ebae980c86a1319936481 100644 (file)
@@ -51,6 +51,51 @@ void ParsedSource::ExportIdentifier(const std::string &i) {
 }
 
 
+bool ParsedSource::IsDeclared(const std::string &name) const {
+       return declarations.count(name);
+}
+
+Declaration &ParsedSource::GetDeclaration(const std::string &name) {
+       map<string, Declaration *>::const_iterator i(declarations.find(name));
+       if (i != declarations.end()) {
+               return *i->second;
+       } else {
+               throw runtime_error("undeclared identifier " + name);
+       }
+}
+
+const Declaration &ParsedSource::GetDeclaration(const std::string &name) const {
+       map<string, Declaration *>::const_iterator i(declarations.find(name));
+       if (i != declarations.end()) {
+               return *i->second;
+       } else {
+               throw runtime_error("undeclared identifier " + name);
+       }
+}
+
+bool ParsedSource::IsDefined(const std::string &name) const {
+       return definitions.count(name);
+}
+
+Definition &ParsedSource::GetDefinition(const std::string &name) {
+       map<string, Definition *>::const_iterator i(definitions.find(name));
+       if (i != definitions.end()) {
+               return *i->second;
+       } else {
+               throw runtime_error("undefined identifier " + name);
+       }
+}
+
+const Definition &ParsedSource::GetDefinition(const std::string &name) const {
+       map<string, Definition *>::const_iterator i(definitions.find(name));
+       if (i != definitions.end()) {
+               return *i->second;
+       } else {
+               throw runtime_error("undefined identifier " + name);
+       }
+}
+
+
 void Definition::SetValue(Literal *v) {
        value = v;
        isLiteral = true;
index 97137fbad613e981e3f8956a6ccbfad1224ae255..d5347e55c201d5e02a9492369acdc519ec6740cc 100644 (file)
@@ -159,6 +159,13 @@ public:
        void ExportDeclaration(Declaration *);
        void ExportIdentifier(const std::string &);
 
+       bool IsDeclared(const std::string &) const;
+       Declaration &GetDeclaration(const std::string &);
+       const Declaration &GetDeclaration(const std::string &) const;
+       bool IsDefined(const std::string &) const;
+       Definition &GetDefinition(const std::string &);
+       const Definition &GetDefinition(const std::string &) const;
+
        const std::map<std::string, Declaration *> &Declarations() const { return declarations; }
        const std::map<std::string, Definition *> &Definitions() const { return definitions; }
        const std::set<std::string> &Exports() const { return exports; }