-/*
- * ParsedSource.h
- *
- * Created on: Aug 26, 2012
- * Author: holy
- */
-
#ifndef LOADER_PARSEDSOURCE_H_
#define LOADER_PARSEDSOURCE_H_
-#include "fwd.h"
+namespace loader {
+ class Literal;
+ class PropertyList;
+ class Value;
+}
#include <iosfwd>
#include <map>
REGISTER,
IDENTIFIER,
LITERAL,
+ LABEL,
};
ScriptToken(const std::string &, Type);
Type GetType() const { return type; }
const std::string &RegisterName() const;
const std::string &CommandName() const;
- const std::string &GetIdentifier() const;
+ const std::string &Identifier() const;
+ const std::string &Label() const;
const Literal *GetLiteral() const;
private:
enum Type {
ARRAY_VALUES,
ARRAY_PROPS,
+ ARRAY_IDENTS,
BOOLEAN,
COLOR,
NUMBER,
};
public:
+ /// array of values
explicit Literal(const std::vector<Value *> &);
+ /// array of objects
Literal(const std::string &, const std::vector<PropertyList *> &);
+ /// array of identifiers
+ Literal(const std::string &, const std::vector<std::string> &);
+ /// boolean
explicit Literal(bool);
+ /// color
Literal(int r, int g, int b, int a = 255);
+ /// number
explicit Literal(int number);
+ /// path string
Literal(const std::string &dir, const std::string &path);
+ /// string
Literal(const std::string &);
+ /// vector
Literal(int x, int y);
+ /// object
Literal(const std::string &typeName, PropertyList *properties);
+ /// script
explicit Literal(const std::vector<ScriptToken *> &);
~Literal();
private:
public:
Type GetType() const { return type; }
- bool IsArray() const { return GetType() == ARRAY_VALUES || GetType() == ARRAY_PROPS; }
+ bool IsArray() const { return GetType() == ARRAY_VALUES || GetType() == ARRAY_PROPS || GetType() == ARRAY_IDENTS; }
bool IsObject() const { return GetType() == OBJECT; }
- int ArraySize() const { return GetType() == ARRAY_VALUES ? GetValues().size() : GetPropertyLists().size(); }
+ int ArraySize() const { return GetType() == ARRAY_VALUES ? GetValues().size()
+ : (GetType() == ARRAY_PROPS ? GetPropertyLists().size() : GetIdentifiers().size()); }
const std::vector<Value *> &GetValues() const;
const std::vector<PropertyList *> &GetPropertyLists() const;
+ const std::vector<std::string> &GetIdentifiers() const;
bool GetBoolean() const;
int GetRed() const;
int GetGreen() const;
std::string typeName, str;
std::vector<Value *> values;
std::vector<PropertyList *> propertyLists;
+ std::vector<std::string> identifiers;
std::vector<ScriptToken *> script;
int i1, i2, i3, i4;
bool b;
}
-#endif /* LOADER_PARSEDSOURCE_H_ */
+#endif