class Literal {
+public:
enum Type {
- ARRAY,
+ ARRAY_VALUES,
+ ARRAY_PROPS,
BOOLEAN,
COLOR,
NUMBER,
public:
explicit Literal(const std::vector<Value *> &);
+ explicit Literal(const std::vector<PropertyList *> &);
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<Value *> &GetValues() const;
+ const std::vector<PropertyList *> &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;
std::vector<Value *> values;
+ std::vector<PropertyList *> propertyLists;
int i1, i2, i3, i4;
bool b;
Type type;
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;
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;
public:
void AddDeclaration(Declaration *);
+ void AddDefinition(Definition *);
void ExportDeclaration(Declaration *);
void ExportIdentifier(const std::string &);
- const std::map<std::string, Declaration *> Declarations() const { return declarations; }
- const std::set<std::string> 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<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; }
private:
std::map<std::string, Declaration *> declarations;
+ std::map<std::string, Definition *> definitions;
std::set<std::string> exports;
};
namespace std {
ostream &operator <<(ostream &, const loader::ParsedSource &);
+ostream &operator <<(ostream &, const loader::Literal &);
}