1 #ifndef OPENCV_FLANN_ANY_H_
2 #define OPENCV_FLANN_ANY_H_
44 virtual void clone(
void*
const* src,
void** dest) = 0;
45 virtual void move(
void*
const* src,
void** dest) = 0;
48 virtual const std::type_info&
type() = 0;
49 virtual void print(std::ostream& out,
void*
const* src) = 0;
51 #ifdef OPENCV_CAN_BREAK_BINARY_COMPATIBILITY
60 virtual const std::type_info&
type() {
return typeid(
T); }
70 new (dest)
T(* reinterpret_cast<T const*>(src));
72 virtual void clone(
void*
const*
src,
void** dest) { *dest = *
src; }
73 virtual void move(
void*
const*
src,
void** dest) { *dest = *
src; }
75 virtual void print(std::ostream& out,
void*
const*
src) { out << *reinterpret_cast<T const*>(
src); }
83 if (* x)
delete (*
reinterpret_cast<T**
>(
x)); *x = NULL;
87 *dest =
new T(*reinterpret_cast<T const*>(src));
89 virtual void clone(
void*
const*
src,
void** dest)
91 *dest =
new T(**reinterpret_cast<T* const*>(src));
93 virtual void move(
void*
const*
src,
void** dest)
95 (*
reinterpret_cast<T**
>(dest))->~T();
96 **
reinterpret_cast<T**
>(dest) = **reinterpret_cast<T* const*>(src);
99 virtual void print(std::ostream& out,
void*
const*
src) { out << *reinterpret_cast<T const*>(*src); }
104 out << int(*reinterpret_cast<flann_centers_init_t const*>(*src));
109 out << int(*reinterpret_cast<flann_algorithm_t const*>(*src));
135 #define SMALL_POLICY(TYPE) \
137 struct choose_policy<TYPE> { typedef small_any_policy<TYPE> type; \
171 template <
typename T>
173 : policy(anyimpl::
get_policy<anyimpl::empty_any>()), object(NULL)
180 : policy(anyimpl::
get_policy<anyimpl::empty_any>()), object(NULL)
185 : policy(anyimpl::
get_policy<anyimpl::empty_any>()), object(NULL)
192 : policy(anyimpl::
get_policy<anyimpl::empty_any>()), object(NULL)
208 policy->
clone(&x.object, &
object);
213 template <
typename T>
217 policy = anyimpl::get_policy<T>();
249 T*
r =
reinterpret_cast<T*
>(policy->
get_value(&
object));
258 T*
r =
reinterpret_cast<T*
>(policy->
get_value(const_cast<void **>(&
object)));
272 policy = anyimpl::get_policy<anyimpl::empty_any>();
278 return policy->
type() == x.policy->
type();
285 return policy->
type() ==
typeid(
T);
288 const std::type_info&
type()
const
290 return policy->
type();
293 friend std::ostream&
operator <<(std::ostream& out,
const any& any_val);
298 any_val.policy->
print(out,&any_val.object);
304 #endif // OPENCV_FLANN_ANY_H_
GLdouble GLdouble GLdouble r
const void * src
Definition: core_c.h:1568
virtual void print(std::ostream &out, void *const *src)=0
any & assign(const any &x)
Assignment function from another any.
Definition: any.h:204
virtual void move(void *const *src, void **dest)
Definition: any.h:73
const T & cast() const
Cast operator. You can only cast to the original type.
Definition: any.h:255
virtual void * get_value(void **src)=0
virtual void * get_value(void **src)
Definition: any.h:74
SMALL_POLICY(signed char)
virtual void clone(void *const *src, void **dest)
Definition: any.h:89
any & operator=(const char *x)
Definition: any.h:231
any(const any &x)
Copy constructor.
Definition: any.h:191
GLuint src
Definition: core_c.h:1650
virtual void copy_from_value(void const *src, void **dest)=0
CvRect r
Definition: core_c.h:1282
const CvMat const CvMat const CvMat CvMat CvMat CvMat CvMat CvSize CvMat CvMat * T
Definition: calib3d.hpp:270
virtual void static_delete(void **)
Definition: any.h:67
big_any_policy< T > type
Definition: any.h:115
any()
Empty constructor.
Definition: any.h:179
virtual ::size_t get_size()
Definition: any.h:59
virtual void static_delete(void **x)
Definition: any.h:81
any(const T &x)
Initializing constructor.
Definition: any.h:172
T & cast()
Cast operator. You can only cast to the original type.
Definition: any.h:246
any & operator=(const T &x)
Assignment operator.
Definition: any.h:224
virtual void copy_from_value(void const *src, void **dest)
Definition: any.h:85
virtual const std::type_info & type()=0
const std::type_info & type() const
Definition: any.h:288
any & swap(any &x)
Utility functions.
Definition: any.h:237
any & assign(const T &x)
Assignment function.
Definition: any.h:214
void reset()
Frees any allocated memory, and sets the value to NULL.
Definition: any.h:269
GLenum GLint x
Definition: core_c.h:632
virtual void * get_value(void **src)
Definition: any.h:98
virtual void clone(void *const *src, void **dest)
Definition: any.h:72
base_any_policy * get_policy()
This function will return a different policy for each type.
Definition: any.h:155
bool has_type()
Returns if the type is compatible with the policy.
Definition: any.h:283
virtual void copy_from_value(void const *src, void **dest)
Definition: any.h:68
void type
Definition: any.h:131
friend std::ostream & operator<<(std::ostream &out, const any &any_val)
Definition: any.h:296
virtual void print(std::ostream &out, void *const *src)
Definition: any.h:99
virtual void print(std::ostream &out, void *const *src)
Definition: any.h:75
any(const char *x)
Special initializing constructor for string literals.
Definition: any.h:184
virtual void move(void *const *src, void **dest)=0
virtual void static_delete(void **x)=0
virtual void clone(void *const *src, void **dest)=0
~any()
Destructor.
Definition: any.h:198
virtual void move(void *const *src, void **dest)
Definition: any.h:93
int x
Definition: highgui_c.h:186
bool empty() const
Returns true if the any contains no value.
Definition: any.h:263
virtual ~base_any_policy()
Definition: any.h:52
virtual ::size_t get_size()=0
std::ostream & operator<<(std::ostream &out, const any &any_val)
Definition: any.h:296
CV_EXPORTS void swap(Mat &a, Mat &b)
swaps two matrices
small_any_policy< T * > type
Definition: any.h:121
bool compatible(const any &x) const
Returns true if the two types are the same.
Definition: any.h:276
std::ostream & operator<<(std::ostream &out, const empty_any &)
Definition: any.h:34
virtual const std::type_info & type()
Definition: any.h:60