// // Copyright (c) ZeroC, Inc. All rights reserved. // #ifndef ICE_EXCEPTION_HELPERS_H #define ICE_EXCEPTION_HELPERS_H #ifdef ICE_CPP11_MAPPING // C++11 mapping #include #include namespace Ice { class LocalException; /** * Helper template for the implementation of Ice::LocalException. It implements ice_id. * \headerfile Ice/Ice.h */ template class LocalExceptionHelper : public IceUtil::ExceptionHelper { public: using IceUtil::ExceptionHelper::ExceptionHelper; virtual std::string ice_id() const override { return T::ice_staticId(); } }; /** * Helper template for the implementation of Ice::UserException. It implements ice_id. * \headerfile Ice/Ice.h */ template class UserExceptionHelper : public IceUtil::ExceptionHelper { public: using IceUtil::ExceptionHelper::ExceptionHelper; virtual std::string ice_id() const override { return T::ice_staticId(); } protected: /// \cond STREAM virtual void _writeImpl(Ice::OutputStream* os) const override { os->startSlice(T::ice_staticId(), -1, std::is_same::value ? true : false); Ice::StreamWriter::write(os, static_cast(*this)); os->endSlice(); B::_writeImpl(os); } virtual void _readImpl(Ice::InputStream* is) override { is->startSlice(); Ice::StreamReader::read(is, static_cast(*this)); is->endSlice(); B::_readImpl(is); } /// \endcond }; } #endif // C++11 mapping end #endif