diff options
author | Mark Spruiell <mes@zeroc.com> | 2010-02-05 13:34:06 -0800 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2010-02-05 13:34:06 -0800 |
commit | 2ae657758b62ca65a05a12a291097d8fe98dd2b5 (patch) | |
tree | 88eb13c400efe34ede7282c157907bc7812fe497 /cpp/include/Slice/Parser.h | |
parent | updating CHANGES for bug 4653 (diff) | |
download | ice-2ae657758b62ca65a05a12a291097d8fe98dd2b5.tar.bz2 ice-2ae657758b62ca65a05a12a291097d8fe98dd2b5.tar.xz ice-2ae657758b62ca65a05a12a291097d8fe98dd2b5.zip |
bug 4650 - Slice default values
Diffstat (limited to 'cpp/include/Slice/Parser.h')
-rw-r--r-- | cpp/include/Slice/Parser.h | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/cpp/include/Slice/Parser.h b/cpp/include/Slice/Parser.h index 84b8b31a0d2..e961ea35223 100644 --- a/cpp/include/Slice/Parser.h +++ b/cpp/include/Slice/Parser.h @@ -459,6 +459,7 @@ protected: void checkPrefix(const std::string&) const; bool checkInterfaceAndLocal(const std::string&, bool, bool, bool, bool, bool); bool checkGlobalMetaData(const StringList&, const StringList&); + bool validateConstant(const std::string&, const TypePtr&, const SyntaxTreeBasePtr&, const std::string&, bool); ContainedList _contents; std::map<std::string, ContainedPtr, CICompare> _introducedMap; @@ -608,7 +609,8 @@ public: virtual void destroy(); OperationPtr createOperation(const std::string&, const TypePtr&, Operation::Mode = Operation::Normal); - DataMemberPtr createDataMember(const std::string&, const TypePtr&); + DataMemberPtr createDataMember(const std::string&, const TypePtr&, const SyntaxTreeBasePtr&, const std::string&, + const std::string&); ClassDeclPtr declaration() const; ClassList bases() const; ClassList allBases() const; @@ -625,6 +627,7 @@ public: virtual bool isLocal() const; bool hasDataMembers() const; bool hasOperations() const; + bool hasDefaultValues() const; virtual ContainedType containedType() const; virtual bool uses(const ContainedPtr&) const; virtual std::string kindOf() const; @@ -676,7 +679,8 @@ class SLICE_API Exception : virtual public Container, virtual public Contained public: virtual void destroy(); - DataMemberPtr createDataMember(const std::string&, const TypePtr&); + DataMemberPtr createDataMember(const std::string&, const TypePtr&, const SyntaxTreeBasePtr&, const std::string&, + const std::string&); DataMemberList dataMembers() const; DataMemberList allDataMembers() const; DataMemberList classDataMembers() const; @@ -688,6 +692,7 @@ public: virtual ContainedType containedType() const; virtual bool uses(const ContainedPtr&) const; bool usesClasses() const; + bool hasDefaultValues() const; virtual std::string kindOf() const; virtual void visit(ParserVisitor*, bool); @@ -708,7 +713,8 @@ class SLICE_API Struct : virtual public Container, virtual public Constructed { public: - DataMemberPtr createDataMember(const std::string&, const TypePtr&); + DataMemberPtr createDataMember(const std::string&, const TypePtr&, const SyntaxTreeBasePtr&, const std::string&, + const std::string&); DataMemberList dataMembers() const; DataMemberList classDataMembers() const; virtual ContainedType containedType() const; @@ -716,6 +722,7 @@ public: virtual bool usesClasses() const; virtual size_t minWireSize() const; virtual bool isVariableLength() const; + bool hasDefaultValues() const; virtual std::string kindOf() const; virtual void visit(ParserVisitor*, bool); virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly. @@ -856,15 +863,10 @@ public: virtual std::string kindOf() const; virtual void visit(ParserVisitor*, bool); - static bool isLegalType(const std::string&, const TypePtr&, const UnitPtr&); - static bool typesAreCompatible(const std::string&, const TypePtr&, - const SyntaxTreeBasePtr&, const std::string&, const UnitPtr&); - static bool isInRange(const std::string&, const TypePtr&, const std::string&, const UnitPtr&); - protected: - Const(const ContainerPtr&, const std::string&, const TypePtr&, - const StringList&, const std::string&, const std::string&); + Const(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const std::string&, + const std::string&); friend class Container; TypePtr _type; @@ -906,6 +908,9 @@ class SLICE_API DataMember : virtual public Contained public: TypePtr type() const; + bool hasDefaultValue() const; + std::string defaultValue() const; + std::string defaultLiteral() const; virtual ContainedType containedType() const; virtual bool uses(const ContainedPtr&) const; virtual std::string kindOf() const; @@ -913,12 +918,15 @@ public: protected: - DataMember(const ContainerPtr&, const std::string&, const TypePtr&); + DataMember(const ContainerPtr&, const std::string&, const TypePtr&, bool, const std::string&, const std::string&); friend class ClassDef; friend class Struct; friend class Exception; TypePtr _type; + bool _hasDefaultValue; + std::string _defaultValue; + std::string _defaultLiteral; }; // ---------------------------------------------------------------------- |