X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Floader%2FParsedSource.h;h=6351ae43f90855b8786c57f2c2d23447817ef0bd;hb=ab772977707672896ec6ce7a23add2bdb044170a;hp=f78a49e7b66d402b11b46924ed2595d2c12ee366;hpb=4b3deb01b66307f5025938538d27e6ad86cfea13;p=l2e.git diff --git a/src/loader/ParsedSource.h b/src/loader/ParsedSource.h index f78a49e..6351ae4 100644 --- a/src/loader/ParsedSource.h +++ b/src/loader/ParsedSource.h @@ -21,6 +21,7 @@ class Value; class Literal { +public: enum Type { ARRAY_VALUES, ARRAY_PROPS, @@ -37,10 +38,28 @@ public: explicit Literal(const std::vector &); explicit Literal(bool); Literal(int r, int g, int b, int a = 255); + explicit Literal(int number); Literal(const std::string &); Literal(int x, int y); Literal(const std::string &typeName, PropertyList *properties); +public: + Type GetType() const { return type; } + + const std::vector &GetValues() const; + const std::vector &GetPropertyLists() const; + bool GetBoolean() const; + int GetRed() const; + int GetGreen() const; + int GetBlue() const; + int GetAlpha() const; + int GetNumber() const; + const std::string &GetString() const; + int GetX() const; + int GetY() const; + const std::string &GetTypeName() const; + const PropertyList *GetProperties() const; + private: PropertyList *props; std::string str; @@ -59,7 +78,12 @@ public: explicit Value(const std::string &identifier) : literal(0), identifier(identifier), isLiteral(false) { } explicit Value(Literal *literal) - : literal(literal), isLiteral(false) { } + : literal(literal), isLiteral(true) { } + +public: + bool IsLiteral() const { return isLiteral; } + const Literal &GetLiteral() const; + const std::string &GetIdentifier() const; private: Literal *literal; @@ -79,6 +103,13 @@ public: props[name] = value; } + typedef std::map::iterator Iterator; + typedef std::map::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 props; @@ -136,14 +167,24 @@ public: public: void AddDeclaration(Declaration *); + void AddDefinition(Definition *); void ExportDeclaration(Declaration *); void ExportIdentifier(const std::string &); - const std::map Declarations() const { return declarations; } - const std::set Exports() const { return exports; } + 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 &Declarations() const { return declarations; } + const std::map &Definitions() const { return definitions; } + const std::set &Exports() const { return exports; } private: std::map declarations; + std::map definitions; std::set exports; }; @@ -154,6 +195,7 @@ private: namespace std { ostream &operator <<(ostream &, const loader::ParsedSource &); +ostream &operator <<(ostream &, const loader::Literal &); }