summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/Object.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include/Ice/Object.h')
-rw-r--r--cpp/include/Ice/Object.h115
1 files changed, 82 insertions, 33 deletions
diff --git a/cpp/include/Ice/Object.h b/cpp/include/Ice/Object.h
index 0a7e7aec98a..235c2e6349d 100644
--- a/cpp/include/Ice/Object.h
+++ b/cpp/include/Ice/Object.h
@@ -16,14 +16,20 @@
#include <Ice/ProxyF.h>
#include <Ice/IncomingAsyncF.h>
#include <Ice/Current.h>
-#include <Ice/StreamF.h>
#include <Ice/Format.h>
+namespace Ice
+{
+
+class OutputStream;
+class InpputStream;
+
+}
+
namespace IceInternal
{
class Incoming;
-class BasicStream;
class Direct;
class GCVisitor;
@@ -32,6 +38,8 @@ class GCVisitor;
namespace Ice
{
+ICE_API extern const Current noExplicitCurrent;
+
enum DispatchStatus
{
DispatchOK,
@@ -43,14 +51,14 @@ enum DispatchStatus
class ICE_API DispatchInterceptorAsyncCallback : public virtual IceUtil::Shared
{
public:
-
+
virtual bool response(bool) = 0;
virtual bool exception(const std::exception&) = 0;
virtual bool exception() = 0;
};
typedef IceUtil::Handle<DispatchInterceptorAsyncCallback> DispatchInterceptorAsyncCallbackPtr;
-class ICE_API Request
+class ICE_API Request
{
public:
@@ -58,63 +66,95 @@ public:
virtual const Current& getCurrent() = 0;
};
-class ICE_API Object : virtual public IceUtil::Shared
+
+#ifdef ICE_CPP11_MAPPING
+class ICE_API Object
{
public:
+ virtual ~Object() = default;
+
virtual bool operator==(const Object&) const;
virtual bool operator<(const Object&) const;
- virtual bool ice_isA(const std::string&, const Current& = Current()) const;
+ virtual bool ice_isA(std::string, const Current& = Ice::noExplicitCurrent) const;
DispatchStatus ___ice_isA(IceInternal::Incoming&, const Current&);
- virtual void ice_ping(const Current& = Current()) const;
+ virtual void ice_ping(const Current& = Ice::noExplicitCurrent) const;
DispatchStatus ___ice_ping(IceInternal::Incoming&, const Current&);
- virtual std::vector< std::string> ice_ids(const Current& = Current()) const;
+ virtual std::vector< std::string> ice_ids(const Current& = Ice::noExplicitCurrent) const;
DispatchStatus ___ice_ids(IceInternal::Incoming&, const Current&);
- virtual const std::string& ice_id(const Current& = Current()) const;
+ virtual const std::string& ice_id(const Current& = Ice::noExplicitCurrent) const;
DispatchStatus ___ice_id(IceInternal::Incoming&, const Current&);
- virtual Int ice_operationAttributes(const std::string&) const;
-
static const std::string& ice_staticId();
- virtual ObjectPtr ice_clone() const;
-
- virtual void ice_preMarshal();
- virtual void ice_postUnmarshal();
-
static std::string __all[];
virtual DispatchStatus ice_dispatch(Ice::Request&, const DispatchInterceptorAsyncCallbackPtr& = 0);
virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&);
- virtual void __write(IceInternal::BasicStream*) const;
- virtual void __read(IceInternal::BasicStream*);
+protected:
+
+ static void __checkMode(OperationMode, OperationMode);
+};
+#else
+class ICE_API Object : public virtual IceUtil::Shared
+{
+public:
+
+ virtual bool operator==(const Object&) const;
+ virtual bool operator<(const Object&) const;
- virtual void __write(const OutputStreamPtr&) const;
- virtual void __read(const InputStreamPtr&);
+ virtual bool ice_isA(const std::string&, const Current& = Ice::noExplicitCurrent) const;
+ DispatchStatus ___ice_isA(IceInternal::Incoming&, const Current&);
+
+ virtual void ice_ping(const Current& = Ice::noExplicitCurrent) const;
+ DispatchStatus ___ice_ping(IceInternal::Incoming&, const Current&);
+
+ virtual std::vector< std::string> ice_ids(const Current& = Ice::noExplicitCurrent) const;
+ DispatchStatus ___ice_ids(IceInternal::Incoming&, const Current&);
+
+ virtual const std::string& ice_id(const Current& = Ice::noExplicitCurrent) const;
+ DispatchStatus ___ice_id(IceInternal::Incoming&, const Current&);
+
+ virtual Int ice_operationAttributes(const std::string&) const;
+
+ virtual void __write(Ice::OutputStream*) const;
+ virtual void __read(Ice::InputStream*);
virtual bool __gcVisit(IceInternal::GCVisitor&) { return false; };
virtual void ice_collectable(bool) { };
+ virtual void ice_preMarshal();
+ virtual void ice_postUnmarshal();
+
+ static const std::string& ice_staticId();
+
+ virtual ObjectPtr ice_clone() const;
+
+ static std::string __all[];
+
+ virtual DispatchStatus ice_dispatch(Ice::Request&, const DispatchInterceptorAsyncCallbackPtr& = 0);
+ virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&);
+
protected:
Object() {} // This class is abstract.
virtual ~Object() {}
- virtual void __writeImpl(IceInternal::BasicStream*) const {}
- virtual void __readImpl(IceInternal::BasicStream*) {}
+protected:
- virtual void __writeImpl(const OutputStreamPtr&) const;
- virtual void __readImpl(const InputStreamPtr&);
+ virtual void __writeImpl(Ice::OutputStream*) const {}
+ virtual void __readImpl(Ice::InputStream*) {}
static void __checkMode(OperationMode, OperationMode);
};
+#endif
-class ICE_API Blobject : virtual public Object
+class ICE_API Blobject : public virtual Object
{
public:
@@ -126,7 +166,7 @@ public:
virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&);
};
-class ICE_API BlobjectArray : virtual public Object
+class ICE_API BlobjectArray : public virtual Object
{
public:
@@ -138,28 +178,37 @@ public:
virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&);
};
-class ICE_API BlobjectAsync : virtual public Object
+class ICE_API BlobjectAsync : public virtual Object
{
public:
+#ifdef ICE_CPP11_MAPPING
+ virtual void ice_invoke_async(std::vector<Byte>,
+ std::function<void (bool, std::vector<Byte>)>,
+ std::function<void (std::exception_ptr)>,
+ const Current&) = 0;
+#else
virtual void ice_invoke_async(const AMD_Object_ice_invokePtr&, const std::vector<Byte>&, const Current&) = 0;
-
+#endif
virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&);
};
-class ICE_API BlobjectArrayAsync : virtual public Object
+class ICE_API BlobjectArrayAsync : public virtual Object
{
public:
+#ifdef ICE_CPP11_MAPPING
+ virtual void ice_invoke_async(std::pair<const Byte*, const Byte*>,
+ std::function<void (bool, std::pair<const Byte*, const Byte*>)>,
+ std::function<void (std::exception_ptr)>,
+ const Current&) = 0;
+#else
virtual void ice_invoke_async(const AMD_Object_ice_invokePtr&, const std::pair<const Byte*, const Byte*>&,
const Current&) = 0;
-
+#endif
virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&);
};
-ICE_API void ice_writeObject(const OutputStreamPtr&, const ObjectPtr&);
-ICE_API void ice_readObject(const InputStreamPtr&, ObjectPtr&);
-
}
#endif