29 #ifndef STICHWORT_POLICY_H_ 30 #define STICHWORT_POLICY_H_ 37 namespace stichwort_internal
39 namespace streams_sfinae
49 template <
class T>
yes check(T
const&);
52 template <
typename S,
typename T>
65 virtual void*
getValue(
void**)
const = 0;
66 virtual void free(
void**)
const = 0;
67 virtual void clone(
void*
const*,
void**)
const = 0;
68 virtual void move(
void*
const*,
void**)
const = 0;
69 virtual std::string
repr(
void **)
const = 0;
72 template <
typename T,
bool>
83 *dest =
new T(*reinterpret_cast<T const*>(src));
85 inline virtual void*
getValue(
void** src)
const 89 inline virtual void free(
void** src)
const 92 delete (*
reinterpret_cast<T**
>(src));
95 virtual void clone(
void*
const* src,
void** dest)
const 98 (*
reinterpret_cast<T**
>(dest))->~T();
99 *dest =
new T(**reinterpret_cast<T* const*>(src));
101 inline virtual void move(
void*
const* src,
void** dest)
const 103 (*
reinterpret_cast<T**
>(dest))->~T();
104 **
reinterpret_cast<T**
>(dest) = **reinterpret_cast<T* const*>(src);
106 inline virtual std::string
repr(
void** src)
const 117 return "uninitialized";
120 template <
typename T>
126 T* vp =
reinterpret_cast<T*
>(vv);
128 std::stringstream ss;
134 template <
typename T>
139 return "(can't obtain value)";
143 template <
typename T>
virtual void * getValue(void **) const =0
TypePolicyBase * getPolicy()
The namespace that contains implementations for the keywords.
virtual void clone(void *const *src, void **dest) const
virtual void copyFromValue(void const *, void **) const =0
std::string operator()(const TypePolicyBase *const, void **) const
virtual void move(void *const *, void **) const =0
no operator<<(const any_wrapper &, const any_wrapper &)
std::string operator()(const TypePolicyBase *const impl, void **src) const
virtual std::string repr(void **src) const
virtual void free(void **src) const
virtual ~TypePolicyBase()
virtual void * getValue(void **src) const
virtual void move(void *const *src, void **dest) const
virtual std::string repr(void **) const =0
virtual void free(void **) const =0
std::string operator()(const TypePolicyBase *const impl, void **src) const
virtual void copyFromValue(void const *src, void **dest) const
virtual void clone(void *const *, void **) const =0