summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cpp/GenCPlusPlus.h
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-06-20 17:44:57 +0000
committerMarc Laukien <marc@zeroc.com>2001-06-20 17:44:57 +0000
commit9ca70e09a26818c757fca4d3bd6bc8ab41e47aee (patch)
treebcd207e23a0ba9e64bd80fa2198bd46a1f998b53 /cpp/src/slice2cpp/GenCPlusPlus.h
parentfix (diff)
downloadice-9ca70e09a26818c757fca4d3bd6bc8ab41e47aee.tar.bz2
ice-9ca70e09a26818c757fca4d3bd6bc8ab41e47aee.tar.xz
ice-9ca70e09a26818c757fca4d3bd6bc8ab41e47aee.zip
slice
Diffstat (limited to 'cpp/src/slice2cpp/GenCPlusPlus.h')
-rw-r--r--cpp/src/slice2cpp/GenCPlusPlus.h233
1 files changed, 233 insertions, 0 deletions
diff --git a/cpp/src/slice2cpp/GenCPlusPlus.h b/cpp/src/slice2cpp/GenCPlusPlus.h
new file mode 100644
index 00000000000..c0b6b640cae
--- /dev/null
+++ b/cpp/src/slice2cpp/GenCPlusPlus.h
@@ -0,0 +1,233 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#ifndef GEN_C_PLUS_PLUS_H
+#define GEN_C_PLUS_PLUS_H
+
+#include <Parser.h>
+#include <OutputUtil.h>
+
+namespace IceLang
+{
+
+class GenCPlusPlus : ::__Ice::noncopyable
+{
+public:
+
+ GenCPlusPlus(const std::string&,
+ const std::string&,
+ const std::string&,
+ const std::vector<std::string>&,
+ const std::string&);
+ ~GenCPlusPlus();
+
+ bool operator!() const; // Returns true if there was a constructor error
+
+ void generate(const Parser_ptr&);
+
+private:
+
+ std::string changeInclude(const std::string&);
+ void printHeader(Output&);
+
+ Output FH;
+ Output H;
+ Output C;
+
+ std::string base_;
+ std::string include_;
+ std::vector<std::string> includePaths_;
+ std::string dllExport_;
+
+ class TypesVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ TypesVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitModuleStart(const Module_ptr&);
+ virtual void visitModuleEnd(const Module_ptr&);
+ virtual void visitVector(const Vector_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+
+ class ProxyDeclVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ ProxyDeclVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitUnitStart(const Parser_ptr&);
+ virtual void visitUnitEnd(const Parser_ptr&);
+ virtual void visitModuleStart(const Module_ptr&);
+ virtual void visitModuleEnd(const Module_ptr&);
+ virtual void visitClassDecl(const ClassDecl_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+
+ class ProxyVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ ProxyVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitUnitStart(const Parser_ptr&);
+ virtual void visitUnitEnd(const Parser_ptr&);
+ virtual void visitModuleStart(const Module_ptr&);
+ virtual void visitModuleEnd(const Module_ptr&);
+ virtual void visitClassDefStart(const ClassDef_ptr&);
+ virtual void visitClassDefEnd(const ClassDef_ptr&);
+ virtual void visitOperation(const Operation_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+
+ class DelegateVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ DelegateVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitUnitStart(const Parser_ptr&);
+ virtual void visitUnitEnd(const Parser_ptr&);
+ virtual void visitModuleStart(const Module_ptr&);
+ virtual void visitModuleEnd(const Module_ptr&);
+ virtual void visitClassDefStart(const ClassDef_ptr&);
+ virtual void visitClassDefEnd(const ClassDef_ptr&);
+ virtual void visitOperation(const Operation_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+
+ class DelegateMVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ DelegateMVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitUnitStart(const Parser_ptr&);
+ virtual void visitUnitEnd(const Parser_ptr&);
+ virtual void visitModuleStart(const Module_ptr&);
+ virtual void visitModuleEnd(const Module_ptr&);
+ virtual void visitClassDefStart(const ClassDef_ptr&);
+ virtual void visitClassDefEnd(const ClassDef_ptr&);
+ virtual void visitOperation(const Operation_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+
+ class ObjectDeclVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ ObjectDeclVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitModuleStart(const Module_ptr&);
+ virtual void visitModuleEnd(const Module_ptr&);
+ virtual void visitClassDecl(const ClassDecl_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+
+ class ObjectVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ ObjectVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitModuleStart(const Module_ptr&);
+ virtual void visitModuleEnd(const Module_ptr&);
+ virtual void visitClassDefStart(const ClassDef_ptr&);
+ virtual void visitClassDefEnd(const ClassDef_ptr&);
+ virtual void visitOperation(const Operation_ptr&);
+ virtual void visitDataMember(const DataMember_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+
+ class IceVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ IceVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitUnitStart(const Parser_ptr&);
+ virtual void visitUnitEnd(const Parser_ptr&);
+ virtual void visitClassDecl(const ClassDecl_ptr&);
+ virtual void visitClassDefStart(const ClassDef_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+
+ class HandleVisitor : ::__Ice::noncopyable, public ParserVisitor
+ {
+ public:
+
+ HandleVisitor(Output&, Output&, const std::string&);
+
+ virtual void visitModuleStart(const Module_ptr&);
+ virtual void visitModuleEnd(const Module_ptr&);
+ virtual void visitClassDecl(const ClassDecl_ptr&);
+ virtual void visitClassDefStart(const ClassDef_ptr&);
+
+ private:
+
+ Output& H;
+ Output& C;
+
+ std::string dllExport_;
+ };
+};
+
+}
+
+#endif