diff options
Diffstat (limited to 'cpp/src/slice2java/Gen.h')
-rw-r--r-- | cpp/src/slice2java/Gen.h | 163 |
1 files changed, 40 insertions, 123 deletions
diff --git a/cpp/src/slice2java/Gen.h b/cpp/src/slice2java/Gen.h index bbcd2cb8908..8aa2c46280d 100644 --- a/cpp/src/slice2java/Gen.h +++ b/cpp/src/slice2java/Gen.h @@ -29,38 +29,32 @@ protected: enum ParamDir { InParam, OutParam }; - - ParamDeclList getOutParams(const OperationPtr&); - + std::string getResultType(const OperationPtr&, const std::string&, bool, bool); + void writeResultType(::IceUtilInternal::Output&, const OperationPtr&, const std::string&); + void writeMarshaledResultType(::IceUtilInternal::Output&, const OperationPtr&, const std::string&); + + void allocatePatcher(::IceUtilInternal::Output&, const TypePtr&, const std::string&, const std::string&); + std::string getPatcher(const TypePtr&, const std::string&, const std::string&, bool); + + std::string getFutureType(const OperationPtr&, const std::string&); + std::string getFutureImplType(const OperationPtr&, const std::string&); + // // Compose the parameter lists for an operation. // - std::vector<std::string> getParams(const OperationPtr&, const std::string&, bool, bool); - std::vector<std::string> getParamsProxy(const OperationPtr&, const std::string&, bool, bool); - std::vector<std::string> getInOutParams(const OperationPtr&, const std::string&, ParamDir, bool, bool); - std::vector<std::string> getParamsAsync(const OperationPtr&, const std::string&, bool, bool); - std::vector<std::string> getParamsAsyncCB(const OperationPtr&, const std::string&, bool, bool); - - std::string getAsyncCallbackInterface(const OperationPtr&, const std::string&); - std::string getAsyncCallbackBaseClass(const OperationPtr&, bool); - std::string getLambdaResponseCB(const OperationPtr&, const std::string&); - std::vector<std::string> getParamsAsyncLambda(const OperationPtr&, const std::string&, - bool context = false, bool sentCB = false, - bool optionalMapping = false, - bool inParams = true); - std::vector<std::string> getArgsAsyncLambda(const OperationPtr&, const std::string&, - bool context = false, bool sentCB = false); + std::vector<std::string> getParams(const OperationPtr&, const std::string&); + std::vector<std::string> getParamsProxy(const OperationPtr&, const std::string&, bool); // // Compose the argument lists for an operation. // std::vector<std::string> getArgs(const OperationPtr&); - std::vector<std::string> getInOutArgs(const OperationPtr&, ParamDir); - std::vector<std::string> getArgsAsync(const OperationPtr&); - std::vector<std::string> getArgsAsyncCB(const OperationPtr&); + std::vector<std::string> getInArgs(const OperationPtr&, bool = false); - void writeMarshalUnmarshalParams(::IceUtilInternal::Output&, const std::string&, const ParamDeclList&, - const OperationPtr&, int&, bool, bool, bool = false); + void writeMarshalProxyParams(::IceUtilInternal::Output&, const std::string&, const OperationPtr&, bool); + void writeUnmarshalProxyResults(::IceUtilInternal::Output&, const std::string&, const OperationPtr&); + void writeMarshalServantResults(::IceUtilInternal::Output&, const std::string&, const OperationPtr&, + const std::string&); // // Generate a throws clause containing only non-local exceptions. @@ -77,21 +71,17 @@ protected: // Marshal/unmarshal a data member. // void writeMarshalDataMember(::IceUtilInternal::Output&, const std::string&, const DataMemberPtr&, int&); - void writeUnmarshalDataMember(::IceUtilInternal::Output&, const std::string&, const DataMemberPtr&, int&, - bool, int&); - void writeStreamMarshalDataMember(::IceUtilInternal::Output&, const std::string&, const DataMemberPtr&, int&); - void writeStreamUnmarshalDataMember(::IceUtilInternal::Output&, const std::string&, const DataMemberPtr&, int&, - bool, int&); + void writeUnmarshalDataMember(::IceUtilInternal::Output&, const std::string&, const DataMemberPtr&, int&); // - // Generate a patcher class. + // Generate dispatch methods for a class or interface. // - void writePatcher(::IceUtilInternal::Output&, const std::string&, const DataMemberList&, const DataMemberList&); + void writeDispatch(::IceUtilInternal::Output&, const ClassDefPtr&); // - // Generate dispatch and marshalling methods for a class or interface. + // Generate marshaling methods for a class or interface. // - void writeDispatchAndMarshalling(::IceUtilInternal::Output&, const ClassDefPtr&); + void writeMarshaling(::IceUtilInternal::Output&, const ClassDefPtr&); // // Write a constant or default value initializer. @@ -108,17 +98,15 @@ protected: // Write doc comments. // static StringList splitComment(const ContainedPtr&); - static void writeDocComment(::IceUtilInternal::Output&, const ContainedPtr&, - const std::string&, const std::string& = ""); - static void writeDocComment(::IceUtilInternal::Output&, const std::string&, const std::string&); - static void writeDocCommentOp(::IceUtilInternal::Output&, const OperationPtr&); - - static void writeDocCommentAsync(::IceUtilInternal::Output&, const OperationPtr&, - ParamDir, const std::string& = ""); - static void writeDocCommentAMI(::IceUtilInternal::Output&, const OperationPtr&, ParamDir, const std::string& = "", - const std::string& = "", const std::string& = "", const std::string& = "", - const std::string& = ""); - static void writeDocCommentParam(::IceUtilInternal::Output&, const OperationPtr&, ParamDir, bool = true); + void writeDocComment(::IceUtilInternal::Output&, const ContainedPtr&, const std::string&, const std::string& = ""); + void writeDocComment(::IceUtilInternal::Output&, const std::string&, const std::string&); + void writeDocCommentOp(::IceUtilInternal::Output&, const OperationPtr&); + + void writeDocCommentAsync(::IceUtilInternal::Output&, const OperationPtr&, ParamDir, const std::string& = ""); + void writeDocCommentAMI(::IceUtilInternal::Output&, const OperationPtr&, ParamDir, const std::string& = "", + const std::string& = "", const std::string& = "", const std::string& = "", + const std::string& = ""); + void writeDocCommentParam(::IceUtilInternal::Output&, const OperationPtr&, ParamDir, bool = true); }; class Gen : private ::IceUtil::noncopyable @@ -132,9 +120,7 @@ public: ~Gen(); void generate(const UnitPtr&); - void generateTie(const UnitPtr&); void generateImpl(const UnitPtr&); - void generateImplTie(const UnitPtr&); static void writeChecksumClass(const std::string&, const std::string&, const ChecksumMap&); @@ -144,27 +130,6 @@ private: std::vector<std::string> _includePaths; std::string _dir; - class OpsVisitor : public JavaVisitor - { - public: - - OpsVisitor(const std::string&); - - virtual bool visitClassDefStart(const ClassDefPtr&); - - private: - void writeOperations(const ClassDefPtr&, bool); - }; - - class TieVisitor : public JavaVisitor - { - public: - - TieVisitor(const std::string&); - - virtual bool visitClassDefStart(const ClassDefPtr&); - }; - class PackageVisitor : public JavaVisitor { public: @@ -182,6 +147,7 @@ private: virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitClassDefEnd(const ClassDefPtr&); + virtual void visitOperation(const OperationPtr&); virtual bool visitExceptionStart(const ExceptionPtr&); virtual void visitExceptionEnd(const ExceptionPtr&); virtual bool visitStructStart(const StructPtr&); @@ -207,36 +173,14 @@ private: virtual bool visitClassDefStart(const ClassDefPtr&); }; - class HolderVisitor : public JavaVisitor - { - public: - - HolderVisitor(const std::string&); - - virtual bool visitClassDefStart(const ClassDefPtr&); - virtual bool visitStructStart(const StructPtr&); - virtual void visitSequence(const SequencePtr&); - virtual void visitDictionary(const DictionaryPtr&); - virtual void visitEnum(const EnumPtr&); - - private: - - void writeHolder(const TypePtr&); - }; - class HelperVisitor : public JavaVisitor { public: HelperVisitor(const std::string&); - virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitSequence(const SequencePtr&); virtual void visitDictionary(const DictionaryPtr&); - - private: - - void writeOperation(const ClassDefPtr&, const std::string&, const OperationPtr&, bool); }; class ProxyVisitor : public JavaVisitor @@ -259,58 +203,31 @@ private: virtual bool visitClassDefStart(const ClassDefPtr&); }; - class BaseImplVisitor : public JavaVisitor + class ImplVisitor : public JavaVisitor { public: - BaseImplVisitor(const std::string&); + ImplVisitor(const std::string&); + + virtual bool visitClassDefStart(const ClassDefPtr&); protected: // - // Generate code to emit a local variable declaration and initialize it - // if necessary. + // Returns a default value for the type. // - void writeDecl(::IceUtilInternal::Output&, const std::string&, const std::string&, const TypePtr&, - const StringList&, bool); + std::string getDefaultValue(const std::string&, const TypePtr&, bool); // - // Generate code to return a value. + // Generate code to initialize the operation result. // - void writeReturn(::IceUtilInternal::Output&, const TypePtr&, bool); + bool initResult(::IceUtilInternal::Output&, const std::string&, const OperationPtr&); // // Generate an operation. // void writeOperation(::IceUtilInternal::Output&, const std::string&, const OperationPtr&, bool); }; - - class ImplVisitor : public BaseImplVisitor - { - public: - - ImplVisitor(const std::string&); - - virtual bool visitClassDefStart(const ClassDefPtr&); - }; - - class ImplTieVisitor : public BaseImplVisitor - { - public: - - ImplTieVisitor(const std::string&); - - virtual bool visitClassDefStart(const ClassDefPtr&); - }; - - class AsyncVisitor : public JavaVisitor - { - public: - - AsyncVisitor(const std::string&); - - virtual void visitOperation(const OperationPtr&); - }; }; } |