summaryrefslogtreecommitdiff
path: root/cpp/include/Slice/Parser.h
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2012-05-16 17:06:00 -0700
committerMark Spruiell <mes@zeroc.com>2012-05-16 17:06:00 -0700
commit1c6024e41f697d61b2727dc60c8aa6f62e9f5660 (patch)
treea1fe8e5ff322f02adef32c3edaf48b3d947cd6f0 /cpp/include/Slice/Parser.h
parent* Ruby port of sliced/compact/preserved (diff)
downloadice-1c6024e41f697d61b2727dc60c8aa6f62e9f5660.tar.bz2
ice-1c6024e41f697d61b2727dc60c8aa6f62e9f5660.tar.xz
ice-1c6024e41f697d61b2727dc60c8aa6f62e9f5660.zip
parser support for optional data members
Diffstat (limited to 'cpp/include/Slice/Parser.h')
-rw-r--r--cpp/include/Slice/Parser.h28
1 files changed, 20 insertions, 8 deletions
diff --git a/cpp/include/Slice/Parser.h b/cpp/include/Slice/Parser.h
index e65bb3784a4..0705639a0b0 100644
--- a/cpp/include/Slice/Parser.h
+++ b/cpp/include/Slice/Parser.h
@@ -157,6 +157,14 @@ struct ConstDef
std::string valueAsLiteral;
};
+struct DataMemberDef
+{
+ TypePtr type;
+ std::string name;
+ bool optional;
+ int tag;
+};
+
// ----------------------------------------------------------------------
// CICompare -- function object to do case-insensitive string comparison.
// ----------------------------------------------------------------------
@@ -623,8 +631,8 @@ public:
virtual void destroy();
OperationPtr createOperation(const std::string&, const TypePtr&, Operation::Mode = Operation::Normal);
- DataMemberPtr createDataMember(const std::string&, const TypePtr&, const SyntaxTreeBasePtr&, const std::string&,
- const std::string&);
+ DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
+ const std::string&, const std::string&);
ClassDeclPtr declaration() const;
ClassList bases() const;
ClassList allBases() const;
@@ -694,8 +702,8 @@ class SLICE_API Exception : virtual public Container, virtual public Contained
public:
virtual void destroy();
- DataMemberPtr createDataMember(const std::string&, const TypePtr&, const SyntaxTreeBasePtr&, const std::string&,
- const std::string&);
+ DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
+ const std::string&, const std::string&);
DataMemberList dataMembers() const;
DataMemberList allDataMembers() const;
DataMemberList classDataMembers() const;
@@ -729,8 +737,8 @@ class SLICE_API Struct : virtual public Container, virtual public Constructed
{
public:
- DataMemberPtr createDataMember(const std::string&, const TypePtr&, const SyntaxTreeBasePtr&, const std::string&,
- const std::string&);
+ DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
+ const std::string&, const std::string&);
DataMemberList dataMembers() const;
DataMemberList classDataMembers() const;
virtual ContainedType containedType() const;
@@ -926,6 +934,8 @@ class SLICE_API DataMember : virtual public Contained
public:
TypePtr type() const;
+ bool optional() const;
+ int tag() const;
std::string defaultValue() const;
std::string defaultLiteral() const;
SyntaxTreeBasePtr defaultValueType() const;
@@ -936,13 +946,15 @@ public:
protected:
- DataMember(const ContainerPtr&, const std::string&, const TypePtr&, const SyntaxTreeBasePtr&, const std::string&,
- const std::string&);
+ DataMember(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
+ const std::string&, const std::string&);
friend class ClassDef;
friend class Struct;
friend class Exception;
TypePtr _type;
+ bool _optional;
+ int _tag;
SyntaxTreeBasePtr _defaultValueType;
std::string _defaultValue;
std::string _defaultLiteral;