- object in heap for large (ie. size in bytes more than
- WX_ANY_VALUE_BUFFER_SIZE) or 'non-movable' data types. Pointers, integers,
- bools etc. are fitted in the wxAny's own buffer without need for any extra
- allocation. Use following code to declare your own data type as 'movable':
-
- @code
- #include "wx/meta/movable.h"
- WX_DECLARE_TYPE_MOVABLE(MyClass)
- @endcode
-
- However, you must be aware that 'movable' means such data that can be
- copied with memcpy() without corrupting program integrity. For instance,
- movable objects usually cannot contain pointers or references to other
- data. wxRect, wxPoint, and wxSize are good examples of movable classes.
-
- Note that pointers to any and all classes are already automatically
- declared as movable data.
-
- @warning Caveat with shared libraries (DLLs): If you have a scenario where
- you use wxAny across application's shared library and application
- itself (or, with another of your shared libraries), then you must
- use wxDECLARE_ANY_TYPE() macro in your shared library code to
- correctly make sure that the wxAnyValueType implementation is
- generated correctly. Failure to do this will result in breakage
- of the wxAny type recognition with type in question. Below is an
- example how to use the macro.
- @code
- // In your shared library/DLL-only
- wxDECLARE_ANY_TYPE(MyClass, WXEXPORT)
-
- // In your shared library/DLL source code
- WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<MyClass>)
-
- // In code using said shared library/DLL
- wxDECLARE_ANY_TYPE(MyClass, WXIMPORT)
- @endcode