summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Parser.h
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2017-02-08 09:41:55 -0500
committerBernard Normier <bernard@zeroc.com>2017-02-08 09:41:55 -0500
commitaf38cbf2ebf9c009fcea81cc316be64176da620e (patch)
tree28d6975bf5f1c4b7b89a5c24d2e1d9f1a2ba633c /cpp/src/Slice/Parser.h
parentAdded wide char overloads of Ice::createProperties & Ice::initialize (diff)
downloadice-af38cbf2ebf9c009fcea81cc316be64176da620e.tar.bz2
ice-af38cbf2ebf9c009fcea81cc316be64176da620e.tar.xz
ice-af38cbf2ebf9c009fcea81cc316be64176da620e.zip
Make Slice enums scoped
Add new cpp:scoped and objc:scoped metadata directives
Diffstat (limited to 'cpp/src/Slice/Parser.h')
-rw-r--r--cpp/src/Slice/Parser.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/cpp/src/Slice/Parser.h b/cpp/src/Slice/Parser.h
index 1c7fc8f2fea..b5afc987e75 100644
--- a/cpp/src/Slice/Parser.h
+++ b/cpp/src/Slice/Parser.h
@@ -451,6 +451,8 @@ public:
SequenceList sequences() const;
DictionaryList dictionaries() const;
EnumList enums() const;
+ EnumeratorList enumerators() const;
+ EnumeratorList enumerators(const std::string&) const;
ConstList consts() const;
ContainedList contents() const;
bool hasNonLocalClassDecls() const;
@@ -492,8 +494,8 @@ protected:
void checkIdentifier(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);
- EnumeratorPtr validateEnumerator(const std::string&);
+ bool validateConstant(const std::string&, const TypePtr&, SyntaxTreeBasePtr&, const std::string&, bool);
+ void validateEnumerator(const std::string&);
ContainedList _contents;
std::map<std::string, ContainedPtr, CICompare> _introducedMap;
@@ -855,13 +857,11 @@ protected:
// Enum
// ----------------------------------------------------------------------
-class Enum : public virtual Constructed
+class Enum : public virtual Container, public virtual Constructed
{
public:
virtual void destroy();
- EnumeratorList getEnumerators();
- void setEnumerators(const EnumeratorList&);
bool explicitValue() const;
int minValue() const;
int maxValue() const;
@@ -877,12 +877,15 @@ public:
protected:
Enum(const ContainerPtr&, const std::string&, bool);
+ int newEnumerator(const EnumeratorPtr&);
+
friend class Container;
+ friend class Enumerator;
- EnumeratorList _enumerators;
bool _explicitValue;
IceUtil::Int64 _minValue;
IceUtil::Int64 _maxValue;
+ int _lastValue;
};
// ----------------------------------------------------------------------
@@ -906,9 +909,7 @@ protected:
Enumerator(const ContainerPtr&, const std::string&);
Enumerator(const ContainerPtr&, const std::string&, int);
friend class Container;
- friend class Enum;
- EnumPtr _type;
bool _explicitValue;
int _value;
};