+bool Interpreter::GetBoolean(const std::string &name) const {
+ map<string, ParsedDefinition>::const_iterator i(parsedDefinitions.find(name));
+ if (i != parsedDefinitions.end()) {
+ if (i->second.type == BOOLEAN) {
+ return booleans[i->second.index];
+ } else {
+ throw Error("cannot cast " + i->second.dfn->TypeName() + " to Boolean");
+ }
+ } else {
+ throw Error("access to undefined Boolean " + name);
+ }
+}
+
+Font *Interpreter::GetFont(const std::string &name) {
+ map<string, ParsedDefinition>::const_iterator i(parsedDefinitions.find(name));
+ if (i != parsedDefinitions.end()) {
+ if (i->second.type == FONT) {
+ return fonts[i->second.index];
+ } else {
+ throw Error("cannot cast " + i->second.dfn->TypeName() + " to Font");
+ }
+ } else {
+ throw Error("access to undefined Font " + name);
+ }
+}
+
+Frame *Interpreter::GetFrame(const std::string &name) {
+ map<string, ParsedDefinition>::const_iterator i(parsedDefinitions.find(name));
+ if (i != parsedDefinitions.end()) {
+ if (i->second.type == FRAME) {
+ return frames[i->second.index];
+ } else {
+ throw Error("cannot cast " + i->second.dfn->TypeName() + " to Frame");
+ }
+ } else {
+ throw Error("access to undefined Frame " + name);
+ }
+}
+