From: Daniel Karbach <daniel.karbach@localhorst.tv>
Date: Sun, 26 Aug 2012 22:02:57 +0000 (+0200)
Subject: added getters for property lists
X-Git-Url: https://git.localhorst.tv/?a=commitdiff_plain;h=2bd2e92a227af66386af1dfca2f52df6941f0f94;p=l2e.git

added getters for property lists
---

diff --git a/src/loader/ParsedSource.cpp b/src/loader/ParsedSource.cpp
index b019fe7..1f7fc98 100644
--- a/src/loader/ParsedSource.cpp
+++ b/src/loader/ParsedSource.cpp
@@ -327,6 +327,23 @@ const PropertyList *Literal::GetProperties() const {
 	}
 }
 
+
+const Literal &Value::GetLiteral() const {
+	if (isLiteral) {
+		return *literal;
+	} else {
+		throw runtime_error("tried to access literal of identifier value");
+	}
+}
+
+const std::string &Value::GetIdentifier() const {
+	if (!isLiteral) {
+		return identifier;
+	} else {
+		throw runtime_error("tried to access identifier of literal value");
+	}
+}
+
 }
 
 
diff --git a/src/loader/ParsedSource.h b/src/loader/ParsedSource.h
index d5347e5..e33796a 100644
--- a/src/loader/ParsedSource.h
+++ b/src/loader/ParsedSource.h
@@ -80,6 +80,11 @@ public:
 	explicit Value(Literal *literal)
 	: literal(literal), isLiteral(false) { }
 
+public:
+	bool IsLiteral() const { return isLiteral; }
+	const Literal &GetLiteral() const;
+	const std::string &GetIdentifier() const;
+
 private:
 	Literal *literal;
 	std::string identifier;
@@ -98,6 +103,13 @@ public:
 		props[name] = value;
 	}
 
+	typedef std::map<std::string, Value *>::iterator Iterator;
+	typedef std::map<std::string, Value *>::const_iterator ConstIterator;
+	Iterator Begin() { return props.begin(); }
+	ConstIterator Begin() const { return props.begin(); }
+	Iterator End() { return props.end(); }
+	ConstIterator End() const { return props.end(); }
+
 private:
 	std::map<std::string, Value *> props;