summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/Exception.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include/Ice/Exception.h')
-rw-r--r--cpp/include/Ice/Exception.h23
1 files changed, 14 insertions, 9 deletions
diff --git a/cpp/include/Ice/Exception.h b/cpp/include/Ice/Exception.h
index d06f576aae3..b957a91be0c 100644
--- a/cpp/include/Ice/Exception.h
+++ b/cpp/include/Ice/Exception.h
@@ -51,28 +51,32 @@ public:
virtual ~LocalException() throw();
#endif
- static const std::string& ice_staticId();
-
-#ifndef ICE_CPP11_MAPPING
+#ifdef ICE_CPP11_MAPPING
+ std::unique_ptr<LocalException> ice_clone() const;
+#else
virtual LocalException* ice_clone() const = 0;
#endif
+
+ static const std::string& ice_staticId();
};
class ICE_API UserException : public IceUtil::Exception
{
public:
- static const std::string& ice_staticId();
-
virtual void __write(::Ice::OutputStream*) const;
virtual void __read(::Ice::InputStream*);
virtual bool __usesClasses() const;
-#ifndef ICE_CPP11_MAPPING
+#ifdef ICE_CPP11_MAPPING
+ std::unique_ptr<UserException> ice_clone() const;
+#else
virtual UserException* ice_clone() const = 0;
#endif
+ static const std::string& ice_staticId();
+
protected:
virtual void __writeImpl(::Ice::OutputStream*) const {};
@@ -90,12 +94,13 @@ public:
virtual ~SystemException() throw();
#endif
- static const std::string& ice_staticId();
-
-#ifndef ICE_CPP11_MAPPING
+#ifdef ICE_CPP11_MAPPING
+ std::unique_ptr<SystemException> ice_clone() const;
+#else
virtual SystemException* ice_clone() const = 0;
#endif
+ static const std::string& ice_staticId();
};
}