8#ifdef ICE_CPP11_MAPPING
32 Value(
const Value&) =
default;
33 Value(Value&&) =
default;
34 Value& operator=(
const Value&) =
default;
35 Value& operator=(Value&&) =
default;
36 virtual ~Value() =
default;
42 virtual void ice_preMarshal();
48 virtual void ice_postUnmarshal();
54 virtual std::string ice_id()
const;
60 static const std::string& ice_staticId();
66 std::shared_ptr<Value> ice_clone()
const;
73 virtual std::shared_ptr<SlicedData> ice_getSlicedData()
const;
76 virtual void _iceWrite(Ice::OutputStream*)
const;
77 virtual void _iceRead(Ice::InputStream*);
83 virtual std::shared_ptr<Value> _iceCloneImpl()
const = 0;
87 virtual void _iceWriteImpl(Ice::OutputStream*)
const {}
88 virtual void _iceReadImpl(Ice::InputStream*) {}
93template<
typename T,
typename Base>
class ValueHelper :
public Base
99 ValueHelper() =
default;
101 std::shared_ptr<T> ice_clone()
const
103 return std::static_pointer_cast<T>(_iceCloneImpl());
106 virtual std::string ice_id()
const override
108 return T::ice_staticId();
113 virtual std::shared_ptr<Value> _iceCloneImpl()
const override
115 return std::make_shared<T>(
static_cast<const T&
>(*
this));
118 virtual void _iceWriteImpl(Ice::OutputStream* os)
const override
120 os->
startSlice(T::ice_staticId(), -1, std::is_same<Base, Ice::Value>::value ?
true :
false);
121 Ice::StreamWriter<T, Ice::OutputStream>::write(os,
static_cast<const T&
>(*
this));
123 Base::_iceWriteImpl(os);
126 virtual void _iceReadImpl(Ice::InputStream* is)
override
129 Ice::StreamReader<T, Ice::InputStream>::read(is,
static_cast<T&
>(*
this));
131 Base::_iceReadImpl(is);
#define ICE_API
Definition Config.h:197
void startSlice(const std::string &typeId, int compactId, bool last)
Writes the start of a value or exception slice.
Definition OutputStream.h:285
void endSlice()
Marks the end of a value or exception slice.
Definition OutputStream.h:294
Definition BuiltinSequences.h:113