6 #ifndef TAPKEE_POLICY_H_ 7 #define TAPKEE_POLICY_H_ 11 namespace tapkee_internal
18 virtual void*
getValue(
void**)
const = 0;
19 virtual void free(
void**)
const = 0;
20 virtual void clone(
void*
const*,
void**)
const = 0;
21 virtual void move(
void*
const*,
void**)
const = 0;
29 *dest =
new T(*reinterpret_cast<T const*>(src));
31 inline virtual void*
getValue(
void** src)
const 35 inline virtual void free(
void** src)
const 38 delete (*
reinterpret_cast<T**
>(src));
41 virtual void clone(
void*
const* src,
void** dest)
const 44 (*
reinterpret_cast<T**
>(dest))->~T();
45 *dest =
new T(**reinterpret_cast<T* const*>(src));
47 inline virtual void move(
void*
const* src,
void** dest)
const 49 (*
reinterpret_cast<T**
>(dest))->~T();
50 **
reinterpret_cast<T**
>(dest) = **reinterpret_cast<T* const*>(src);
64 virtual bool isInRange(
void*
const*,
void*,
void*)
const = 0;
65 virtual bool isEqual(
void*
const*,
void*)
const = 0;
66 virtual bool isNotEqual(
void*
const*,
void*)
const = 0;
67 virtual bool isPositive(
void*
const*)
const = 0;
68 virtual bool isNonNegative(
void *
const*)
const = 0;
69 virtual bool isNegative(
void*
const*)
const = 0;
70 virtual bool isNonPositive(
void *
const*)
const = 0;
71 virtual bool isGreater(
void*
const*,
void*)
const = 0;
72 virtual bool isLesser(
void*
const*,
void*)
const = 0;
78 virtual bool isInRange(
void*
const*,
void*,
void*)
const 82 virtual bool isEqual(
void*
const*,
void*)
const 116 #define default_policy_for(Type) \ 118 struct PointerCheckerPolicyImpl<Type> : public CheckerPolicyBase \ 120 inline Type value(void* v) const \ 122 return *reinterpret_cast<Type*>(v); \ 124 virtual bool isInRange(void* const* src, void* lower, void* upper) const \ 126 Type v = value(*src); \ 127 Type l = value(lower); \ 128 Type u = value(upper); \ 129 return (v>=l) && (v<u); \ 131 virtual bool isEqual(void* const* src, void* other_src) const \ 133 Type v = value(*src); \ 134 Type ov = value(other_src); \ 137 virtual bool isNotEqual(void* const* src, void* other_src) const \ 139 Type v = value(*src); \ 140 Type ov = value(other_src); \ 143 virtual bool isPositive(void* const* src) const \ 145 Type v = value(*src); \ 148 virtual bool isNonNegative(void* const* src) const \ 150 Type v = value(*src); \ 153 virtual bool isNegative(void* const* src) const \ 155 Type v = value(*src); \ 158 virtual bool isNonPositive(void* const* src) const \ 160 Type v = value(*src); \ 163 virtual bool isGreater(void* const* src, void* lower) const \ 165 Type v = value(*src); \ 166 return (v>value(lower)); \ 168 virtual bool isLesser(void* const* src, void* upper) const \ 170 Type v = value(*src); \ 171 return (v<value(upper)); \ 179 template <
typename T>
virtual void * getValue(void **) const =0
virtual ~TypePolicyBase()
virtual void move(void *const *src, void **dest) const
virtual bool isNonNegative(void *const *) const
virtual bool isGreater(void *const *, void *) const
virtual bool isPositive(void *const *) const
TypePolicyBase * getPolicy()
virtual void free(void **) const =0
virtual void copyFromValue(void const *, void **) const =0
virtual ~CheckerPolicyBase()
virtual void free(void **src) const
virtual void clone(void *const *src, void **dest) const
virtual bool isInRange(void *const *, void *, void *) const
virtual bool isEqual(void *const *, void *) const
virtual void clone(void *const *, void **) const =0
virtual void * getValue(void **src) const
virtual bool isNotEqual(void *const *, void *) const
virtual void copyFromValue(void const *src, void **dest) const
virtual bool isNonPositive(void *const *) const
virtual bool isLesser(void *const *, void *) const
virtual void move(void *const *, void **) const =0
#define default_policy_for(Type)
virtual bool isNegative(void *const *) const
CheckerPolicyBase * getCheckerPolicy()