X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Floader%2FParsedSource.cpp;h=422c5a0e31ce525bb0287f2870a76c493bd44e80;hb=HEAD;hp=042dd69c7f6aeca25003268f40da54672d7068d9;hpb=cc3d698b8c1ad09d7a3f9e3f28bc84e0ac1735ea;p=l2e.git diff --git a/src/loader/ParsedSource.cpp b/src/loader/ParsedSource.cpp index 042dd69..422c5a0 100644 --- a/src/loader/ParsedSource.cpp +++ b/src/loader/ParsedSource.cpp @@ -200,6 +200,17 @@ Literal::Literal(const string &typeName, const vector &pls) } +Literal::Literal(const string &typeName, const vector &ids) +: props(0) +, typeName(typeName) +, identifiers(ids) +, i1(0), i2(0) +, i3(0), i4(0) +, b(false) +, type(ARRAY_IDENTS) { + +} + Literal::Literal(bool b) : props(0) , typeName("Boolean") @@ -324,6 +335,14 @@ const vector &Literal::GetPropertyLists() const { } } +const vector &Literal::GetIdentifiers() const { + if (type == ARRAY_IDENTS) { + return identifiers; + } else { + throw runtime_error("tried to access identifiers of non-array literal"); + } +} + bool Literal::GetBoolean() const { if (type == BOOLEAN) { return b; @@ -508,7 +527,8 @@ const Literal *ScriptToken::GetLiteral() const { namespace std { ostream &operator <<(ostream &out, const loader::ParsedSource &source) { - out << "parsed source file" << endl; + out << "parsed sources" << endl; + out << "==============" << endl; out << "declared objects: " << endl; for (map::const_iterator i(source.Declarations().begin()), end(source.Declarations().end()); i != end; ++i) { out << " - " << i->first << " of type " << i->second->TypeName() << endl; @@ -524,6 +544,7 @@ ostream &operator <<(ostream &out, const loader::ParsedSource &source) { for (set::const_iterator i(source.Exports().begin()), end(source.Exports().end()); i != end; ++i) { out << " - " << *i << endl; } + out << endl; return out; } @@ -535,6 +556,9 @@ ostream &operator <<(ostream &out, const loader::Literal &l) { case loader::Literal::ARRAY_PROPS: out << "array of property lists"; break; + case loader::Literal::ARRAY_IDENTS: + out << "array of identifiers"; + break; case loader::Literal::BOOLEAN: out << "boolean, " << (l.GetBoolean() ? "true" : "false"); break;