diff options
author | Mark Spruiell <mes@zeroc.com> | 2012-05-16 17:06:00 -0700 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2012-05-16 17:06:00 -0700 |
commit | 1c6024e41f697d61b2727dc60c8aa6f62e9f5660 (patch) | |
tree | a1fe8e5ff322f02adef32c3edaf48b3d947cd6f0 /cpp/include/Slice/Parser.h | |
parent | * Ruby port of sliced/compact/preserved (diff) | |
download | ice-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.h | 28 |
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; |