summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Parser.h
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-07-06 21:19:04 +0000
committerMarc Laukien <marc@zeroc.com>2001-07-06 21:19:04 +0000
commit3330a193df2550dff331238080a5920923a681b8 (patch)
treeb6ff9c6e05be6807b56d38366de99367cb0c81a2 /cpp/src/Slice/Parser.h
parentaddTemporary (diff)
downloadice-3330a193df2550dff331238080a5920923a681b8.tar.bz2
ice-3330a193df2550dff331238080a5920923a681b8.tar.xz
ice-3330a193df2550dff331238080a5920923a681b8.zip
enums
Diffstat (limited to 'cpp/src/Slice/Parser.h')
-rw-r--r--cpp/src/Slice/Parser.h121
1 files changed, 95 insertions, 26 deletions
diff --git a/cpp/src/Slice/Parser.h b/cpp/src/Slice/Parser.h
index d11c1eee07c..2c58d2e6794 100644
--- a/cpp/src/Slice/Parser.h
+++ b/cpp/src/Slice/Parser.h
@@ -33,6 +33,7 @@ namespace Slice
class Token;
class String;
class Parameters;
+class Enumerators;
class Throws;
class SyntaxTreeBase;
class Type;
@@ -46,8 +47,10 @@ class ClassDef;
class Proxy;
class Operation;
class DataMember;
-class Native;
class Vector;
+class Enum;
+class Enumerator;
+class Native;
class Parser;
}
@@ -61,6 +64,8 @@ void ICE_API incRef(::Slice::String*);
void ICE_API decRef(::Slice::String*);
void ICE_API incRef(::Slice::Parameters*);
void ICE_API decRef(::Slice::Parameters*);
+void ICE_API incRef(::Slice::Enumerators*);
+void ICE_API decRef(::Slice::Enumerators*);
void ICE_API incRef(::Slice::Throws*);
void ICE_API decRef(::Slice::Throws*);
void ICE_API incRef(::Slice::SyntaxTreeBase*);
@@ -87,10 +92,14 @@ void ICE_API incRef(::Slice::Operation*);
void ICE_API decRef(::Slice::Operation*);
void ICE_API incRef(::Slice::DataMember*);
void ICE_API decRef(::Slice::DataMember*);
-void ICE_API incRef(::Slice::Native*);
-void ICE_API decRef(::Slice::Native*);
void ICE_API incRef(::Slice::Vector*);
void ICE_API decRef(::Slice::Vector*);
+void ICE_API incRef(::Slice::Enum*);
+void ICE_API decRef(::Slice::Enum*);
+void ICE_API incRef(::Slice::Enumerator*);
+void ICE_API decRef(::Slice::Enumerator*);
+void ICE_API incRef(::Slice::Native*);
+void ICE_API decRef(::Slice::Native*);
void ICE_API incRef(::Slice::Parser*);
void ICE_API decRef(::Slice::Parser*);
@@ -102,6 +111,7 @@ namespace Slice
typedef ::__Ice::Handle<Token> Token_ptr;
typedef ::__Ice::Handle<String> String_ptr;
typedef ::__Ice::Handle<Parameters> Parameters_ptr;
+typedef ::__Ice::Handle<Enumerators> Enumerators_ptr;
typedef ::__Ice::Handle<Throws> Throws_ptr;
typedef ::__Ice::Handle<SyntaxTreeBase> SyntaxTreeBase_ptr;
typedef ::__Ice::Handle<Type> Type_ptr;
@@ -115,8 +125,10 @@ typedef ::__Ice::Handle<ClassDef> ClassDef_ptr;
typedef ::__Ice::Handle<Proxy> Proxy_ptr;
typedef ::__Ice::Handle<Operation> Operation_ptr;
typedef ::__Ice::Handle<DataMember> DataMember_ptr;
-typedef ::__Ice::Handle<Native> Native_ptr;
typedef ::__Ice::Handle<Vector> Vector_ptr;
+typedef ::__Ice::Handle<Enum> Enum_ptr;
+typedef ::__Ice::Handle<Enumerator> Enumerator_ptr;
+typedef ::__Ice::Handle<Native> Native_ptr;
typedef ::__Ice::Handle<Parser> Parser_ptr;
}
@@ -125,8 +137,9 @@ namespace Slice
{
typedef std::list<Type_ptr> TypeList;
-typedef std::pair<Type_ptr, std::string> TypeName;
-typedef std::list<TypeName> TypeNameList;
+typedef std::list<std::string> StringList;
+typedef std::pair<Type_ptr, std::string> TypeString;
+typedef std::list<TypeString> TypeStringList;
// ----------------------------------------------------------------------
// ParserVisitor
@@ -147,6 +160,7 @@ public:
virtual void visitOperation(const Operation_ptr&) { };
virtual void visitDataMember(const DataMember_ptr&) { };
virtual void visitVector(const Vector_ptr&) { };
+ virtual void visitEnum(const Enum_ptr&) { };
virtual void visitNative(const Native_ptr&) { };
};
@@ -181,7 +195,19 @@ class ICE_API Parameters : virtual public Token
public:
Parameters() { }
- TypeNameList v;
+ TypeStringList v;
+};
+
+// ----------------------------------------------------------------------
+// Enumerators
+// ----------------------------------------------------------------------
+
+class ICE_API Enumerators : virtual public Token
+{
+public:
+
+ Enumerators() { }
+ StringList v;
};
// ----------------------------------------------------------------------
@@ -278,6 +304,8 @@ public:
enum ContainedType
{
ContainedTypeVector,
+ ContainedTypeEnum,
+ ContainedTypeEnumerator,
ContainedTypeNative,
ContainedTypeModule,
ContainedTypeClass,
@@ -314,6 +342,8 @@ public:
ClassDef_ptr createClassDef(const std::string&, const ClassDef_ptr&, bool);
ClassDecl_ptr createClassDecl(const std::string&, bool);
Vector_ptr createVector(const std::string&, const Type_ptr&);
+ Enum_ptr createEnum(const std::string&, const StringList&);
+ Enumerator_ptr createEnumerator(const std::string&);
Native_ptr createNative(const std::string&);
std::list<Type_ptr> lookupType(const std::string&);
int includeLevel();
@@ -402,7 +432,7 @@ public:
virtual void destroy();
Operation_ptr createOperation(const std::string&, const Type_ptr&,
- const TypeNameList&, const TypeNameList&,
+ const TypeStringList&, const TypeStringList&,
const TypeList&);
DataMember_ptr createDataMember(const std::string&, const Type_ptr&);
ClassDef_ptr base();
@@ -451,8 +481,8 @@ class ICE_API Operation : virtual public Contained
public:
Type_ptr returnType();
- TypeNameList inputParameters();
- TypeNameList outputParameters();
+ TypeStringList inputParameters();
+ TypeStringList outputParameters();
TypeList throws();
virtual ContainedType containedType();
virtual void visit(ParserVisitor*);
@@ -462,14 +492,14 @@ protected:
Operation(const Container_ptr&,
const std::string&,
const Type_ptr&,
- const TypeNameList&,
- const TypeNameList&,
+ const TypeStringList&,
+ const TypeStringList&,
const TypeList&);
friend class ICE_API ClassDef;
Type_ptr returnType_;
- TypeNameList inParams_;
- TypeNameList outParams_;
+ TypeStringList inParams_;
+ TypeStringList outParams_;
TypeList throws_;
};
@@ -496,43 +526,82 @@ protected:
};
// ----------------------------------------------------------------------
-// Native
+// Vector
// ----------------------------------------------------------------------
-class Native : virtual public Constructed
+class ICE_API Vector : virtual public Constructed
{
public:
+ Type_ptr type();
virtual ContainedType containedType();
virtual void visit(ParserVisitor*);
protected:
- Native(const Container_ptr&,
- const std::string&);
- friend class Container;
+ Vector(const Container_ptr&,
+ const std::string&,
+ const Type_ptr&);
+ friend class ICE_API Container;
+
+ Type_ptr type_;
};
// ----------------------------------------------------------------------
-// Vector
+// Enum
// ----------------------------------------------------------------------
-class ICE_API Vector : virtual public Constructed
+class ICE_API Enum : virtual public Constructed
{
public:
- Type_ptr type();
+ StringList enumerators();
virtual ContainedType containedType();
virtual void visit(ParserVisitor*);
protected:
- Vector(const Container_ptr&,
- const std::string&,
- const Type_ptr&);
+ Enum(const Container_ptr&,
+ const std::string&,
+ const StringList&);
friend class ICE_API Container;
+
+ StringList enumerators_;
+};
- Type_ptr type_;
+// ----------------------------------------------------------------------
+// Enumerator
+// ----------------------------------------------------------------------
+
+class ICE_API Enumerator : virtual public Contained
+{
+public:
+
+ virtual ContainedType containedType();
+
+protected:
+
+ Enumerator(const Container_ptr&,
+ const std::string&);
+ friend class ICE_API Container;
+};
+
+// ----------------------------------------------------------------------
+// Native
+// ----------------------------------------------------------------------
+
+class Native : virtual public Constructed
+{
+public:
+
+ virtual ContainedType containedType();
+ virtual void visit(ParserVisitor*);
+
+protected:
+
+ Native(const Container_ptr&,
+ const std::string&);
+ friend class Container;
};
// ----------------------------------------------------------------------