summaryrefslogtreecommitdiff
path: root/cpp/include/Slice/Parser.h
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2010-02-05 13:34:06 -0800
committerMark Spruiell <mes@zeroc.com>2010-02-05 13:34:06 -0800
commit2ae657758b62ca65a05a12a291097d8fe98dd2b5 (patch)
tree88eb13c400efe34ede7282c157907bc7812fe497 /cpp/include/Slice/Parser.h
parentupdating CHANGES for bug 4653 (diff)
downloadice-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.h30
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;
};
// ----------------------------------------------------------------------