summaryrefslogtreecommitdiff
path: root/cpp/include/Slice/Parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include/Slice/Parser.h')
-rw-r--r--cpp/include/Slice/Parser.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/cpp/include/Slice/Parser.h b/cpp/include/Slice/Parser.h
index 72a528473ac..2b63b5c8db9 100644
--- a/cpp/include/Slice/Parser.h
+++ b/cpp/include/Slice/Parser.h
@@ -133,11 +133,19 @@ typedef std::list<StructPtr> StructList;
typedef std::list<SequencePtr> SequenceList;
typedef std::list<DictionaryPtr> DictionaryList;
typedef std::list<EnumPtr> EnumList;
+typedef std::list<ConstPtr> ConstList;
typedef std::list<OperationPtr> OperationList;
typedef std::list<DataMemberPtr> DataMemberList;
typedef std::list<ParamDeclPtr> ParamDeclList;
typedef std::list<EnumeratorPtr> EnumeratorList;
-typedef std::pair<SyntaxTreeBasePtr, std::string> SyntaxTreeBaseString;
+
+struct ConstDef
+{
+ TypePtr type;
+ SyntaxTreeBasePtr value;
+ std::string valueAsString;
+ std::string valueAsLiteral;
+};
// ----------------------------------------------------------------------
// CICompare -- function object to do case-insensitive string comparison.
@@ -405,7 +413,7 @@ public:
EnumPtr createEnum(const std::string&, bool, NodeType = Real);
EnumeratorPtr createEnumerator(const std::string&);
ConstPtr createConst(const std::string, const TypePtr&, const StringList&, const SyntaxTreeBasePtr&,
- const std::string&, NodeType = Real);
+ const std::string&, const std::string&, NodeType = Real);
TypeList lookupType(const std::string&, bool = true);
TypeList lookupTypeNoBuiltin(const std::string&, bool = true);
ContainedList lookupContained(const std::string&, bool = true);
@@ -417,6 +425,7 @@ public:
SequenceList sequences() const;
DictionaryList dictionaries() const;
EnumList enums() const;
+ ConstList consts() const;
ContainedList contents() const;
bool hasNonLocalClassDecls() const;
bool hasNonLocalClassDefs() const;
@@ -839,6 +848,7 @@ public:
TypePtr type() const;
StringList typeMetaData() const;
std::string value() const;
+ std::string literal() const;
virtual bool uses(const ContainedPtr&) const;
virtual ContainedType containedType() const;
virtual std::string kindOf() const;
@@ -851,12 +861,14 @@ public:
protected:
- Const(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const std::string&);
+ Const(const ContainerPtr&, const std::string&, const TypePtr&,
+ const StringList&, const std::string&, const std::string&);
friend class Container;
TypePtr _type;
StringList _typeMetaData;
std::string _value;
+ std::string _literal;
};
// ----------------------------------------------------------------------