summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/Gen.h
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2016-08-23 17:28:35 -0700
committerMark Spruiell <mes@zeroc.com>2016-08-23 17:28:35 -0700
commite6cbf802f2977d06854a65036a860740e24d3151 (patch)
tree7e1a19dff8bb864a86da6699d0360c3d703e71c5 /cpp/src/slice2java/Gen.h
parentSmall .gitignore cleanup (diff)
downloadice-e6cbf802f2977d06854a65036a860740e24d3151.tar.bz2
ice-e6cbf802f2977d06854a65036a860740e24d3151.tar.xz
ice-e6cbf802f2977d06854a65036a860740e24d3151.zip
Major changes in Java:
- Moved existing Java mapping sources to java-compat subdirectory - Added new "Java 8" mapping in java subdirectory - Significant features of Java 8 mapping: - All classes in com.zeroc package (e.g., com.zeroc.Ice.Communicator) - New AMI mapping that uses java.util.concurrent.CompletableFuture - New AMD mapping that uses java.util.concurrent.CompletionStage - New mapping for out parameters - "holder" types have been eliminated - New mapping for optional types that uses JDK classes from java.util (e.g., java.util.Optional) - "TIE" classes are no longer supported or necessary; servant classes now only need to implement a generated interface - Moved IceGrid GUI to new mapping - The "Java Compat" mapping is provided only for backward compatibility to ease migration to Ice 3.7. The Slice compiler supports a new --compat option to generate code for this mapping. However, users are encouraged to migrate to the new mapping as soon as possible.
Diffstat (limited to 'cpp/src/slice2java/Gen.h')
-rw-r--r--cpp/src/slice2java/Gen.h163
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&);
- };
};
}