summaryrefslogtreecommitdiff
path: root/cpp/src/slice2objc/Gen.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2015-01-07 15:11:14 +0100
committerBenoit Foucher <benoit@zeroc.com>2015-01-07 15:11:14 +0100
commitc126ec03755c9cea578c3b6584ed64c7ba065232 (patch)
tree453ad5f807fdca1deaa8b16ee62853b414ba1e58 /cpp/src/slice2objc/Gen.h
parentICE-6082 added sndBufSize and rcvBufSize to UDPEndpointInfo (diff)
downloadice-c126ec03755c9cea578c3b6584ed64c7ba065232.tar.bz2
ice-c126ec03755c9cea578c3b6584ed64c7ba065232.tar.xz
ice-c126ec03755c9cea578c3b6584ed64c7ba065232.zip
Added Objective-C mapping
Diffstat (limited to 'cpp/src/slice2objc/Gen.h')
-rw-r--r--cpp/src/slice2objc/Gen.h186
1 files changed, 186 insertions, 0 deletions
diff --git a/cpp/src/slice2objc/Gen.h b/cpp/src/slice2objc/Gen.h
new file mode 100644
index 00000000000..2126057137e
--- /dev/null
+++ b/cpp/src/slice2objc/Gen.h
@@ -0,0 +1,186 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef GEN_H
+#define GEN_H
+
+#include <Slice/ObjCUtil.h>
+
+namespace Slice
+{
+
+
+class ObjCVisitor : public ObjCGenerator, public ParserVisitor
+{
+public:
+
+ ObjCVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&);
+ virtual ~ObjCVisitor();
+
+protected:
+
+ virtual void writeDispatchAndMarshalling(const ClassDefPtr&);
+ virtual void writeMarshalUnmarshalParams(const ParamDeclList&, const OperationPtr&, bool, bool = false);
+ virtual std::string getName(const OperationPtr&) const;
+ virtual std::string getSelector(const OperationPtr&) const;
+ virtual std::string getParams(const OperationPtr&) const;
+ virtual std::string getMarshalParams(const OperationPtr&) const;
+ virtual std::string getUnmarshalParams(const OperationPtr&) const;
+ virtual std::string getServerParams(const OperationPtr&) const;
+ virtual std::string getResponseCBSig(const OperationPtr&) const;
+ virtual std::string getArgs(const OperationPtr&) const;
+ virtual std::string getMarshalArgs(const OperationPtr&) const;
+ virtual std::string getUnmarshalArgs(const OperationPtr&) const;
+ virtual std::string getServerArgs(const OperationPtr&) const;
+
+ ::IceUtilInternal::Output& _H;
+ ::IceUtilInternal::Output& _M;
+};
+
+class Gen : private ::IceUtil::noncopyable
+{
+public:
+
+ Gen(const std::string&,
+ const std::string&,
+ const std::string&,
+ const std::vector<std::string>&,
+ const std::string&);
+ ~Gen();
+
+ bool operator!() const; // Returns true if there was a constructor error
+
+ void generate(const UnitPtr&);
+ void closeOutput();
+
+private:
+
+ IceUtilInternal::Output _H;
+ IceUtilInternal::Output _M;
+
+ std::string _base;
+ std::string _include;
+ std::vector<std::string> _includePaths;
+
+ void printHeader(::IceUtilInternal::Output&);
+
+ class UnitVisitor : public ObjCVisitor
+ {
+ public:
+
+ UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&);
+
+ virtual bool visitModuleStart(const ModulePtr&);
+ virtual void visitUnitEnd(const UnitPtr&);
+
+ private:
+
+ std::vector<Slice::ObjCGenerator::ModulePrefix> _prefixes;
+ };
+
+ class ObjectDeclVisitor : public ObjCVisitor
+ {
+ public:
+
+ ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&);
+
+ virtual void visitClassDecl(const ClassDeclPtr&);
+ };
+
+ class ProxyDeclVisitor : public ObjCVisitor
+ {
+ public:
+
+ ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&);
+
+ virtual void visitClassDecl(const ClassDeclPtr&);
+ };
+
+ class TypesVisitor : public ObjCVisitor
+ {
+ public:
+
+ TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&);
+
+ virtual bool visitModuleStart(const ModulePtr&);
+ virtual void visitModuleEnd(const ModulePtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
+ virtual void visitOperation(const OperationPtr&);
+ virtual void visitClassDefEnd(const ClassDefPtr&);
+ virtual bool visitExceptionStart(const ExceptionPtr&);
+ virtual void visitExceptionEnd(const ExceptionPtr&);
+ virtual bool visitStructStart(const StructPtr&);
+ virtual void visitStructEnd(const StructPtr&);
+ virtual void visitSequence(const SequencePtr&);
+ virtual void visitDictionary(const DictionaryPtr&);
+ virtual void visitEnum(const EnumPtr&);
+ virtual void visitConst(const ConstPtr&);
+
+ private:
+
+ enum Escape { NoEscape, WithEscape };
+ enum ContainerType { LocalException, Other };
+
+ void writeConstantValue(IceUtilInternal::Output&, const TypePtr&, const std::string&) const;
+ void writeMembers(const DataMemberList&, int) const;
+ void writeMemberSignature(const DataMemberList&, int, ContainerType) const;
+ void writeMemberCall(const DataMemberList&, int, ContainerType, Escape) const;
+ void writeMemberDefaultValueInit(const DataMemberList&, int) const;
+ void writeMemberInit(const DataMemberList&, int) const;
+ void writeProperties(const DataMemberList&, int) const;
+ void writeSynthesize(const DataMemberList&, int) const;
+ void writeOptionalDataMemberSelectors(const DataMemberList&, int) const;
+ void writeMemberHashCode(const DataMemberList&, int) const;
+ void writeMemberEquals(const DataMemberList&, int) const;
+ void writeMemberDealloc(const DataMemberList&, int, bool slicedData = false) const;
+ void writeMemberMarshal(const DataMemberList&, const DataMemberList&, int) const;
+ void writeMemberUnmarshal(const DataMemberList&, const DataMemberList&, int) const;
+ };
+
+ class ProxyVisitor : public ObjCVisitor
+ {
+ public:
+
+ ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&);
+
+ virtual bool visitClassDefStart(const ClassDefPtr&);
+ virtual void visitClassDefEnd(const ClassDefPtr&);
+ virtual void visitOperation(const OperationPtr&);
+ };
+
+ class HelperVisitor : public ObjCVisitor
+ {
+ public:
+
+ HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&);
+
+ virtual bool visitClassDefStart(const ClassDefPtr&);
+ virtual void visitEnum(const EnumPtr&);
+ virtual void visitSequence(const SequencePtr&);
+ virtual void visitDictionary(const DictionaryPtr&);
+ virtual bool visitStructStart(const StructPtr&);
+ };
+
+ class DelegateMVisitor : public ObjCVisitor
+ {
+ public:
+
+ DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&);
+
+ virtual bool visitModuleStart(const ModulePtr&);
+ virtual void visitModuleEnd(const ModulePtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
+ virtual void visitClassDefEnd(const ClassDefPtr&);
+ virtual void visitOperation(const OperationPtr&);
+ };
+};
+
+}
+
+#endif