diff options
Diffstat (limited to 'tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnDataTypes.h')
-rw-r--r-- | tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnDataTypes.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnDataTypes.h b/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnDataTypes.h new file mode 100644 index 00000000..fcc3296c --- /dev/null +++ b/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnDataTypes.h @@ -0,0 +1,120 @@ +/**************************************************************************** +* * +* OpenNI 1.x Alpha * +* Copyright (C) 2011 PrimeSense Ltd. * +* * +* This file is part of OpenNI. * +* * +* OpenNI is free software: you can redistribute it and/or modify * +* it under the terms of the GNU Lesser General Public License as published * +* by the Free Software Foundation, either version 3 of the License, or * +* (at your option) any later version. * +* * +* OpenNI is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU Lesser General Public License for more details. * +* * +* You should have received a copy of the GNU Lesser General Public License * +* along with OpenNI. If not, see <http://www.gnu.org/licenses/>. * +* * +****************************************************************************/ +#ifndef _XN_DATA_TYPES_H_ +#define _XN_DATA_TYPES_H_ + +//--------------------------------------------------------------------------- +// Includes +//--------------------------------------------------------------------------- +#include "XnOS.h" + +//--------------------------------------------------------------------------- +// Types +//--------------------------------------------------------------------------- +/** + * The value type for all general data structures + */ +typedef void* XnValue; + +/** + * Declares a translator from @a Type to XnValue, with a name @a ClassName. The class is declared + * with the @a decl declspec. + */ +#define XN_DECLARE_DEFAULT_VALUE_TRANSLATOR_DECL(decl, Type, ClassName) \ + class decl ClassName \ + { \ + public: \ + XN_PRAGMA_START_DISABLED_WARNING_SECTION(XN_CONDITION_IS_CONST_WARNING_ID) \ + \ + static XnValue CreateValueCopy(Type const& orig) \ + { \ + if (sizeof(Type) > sizeof(XnValue)) \ + { \ + Type* pNew = XN_NEW(Type, orig); \ + return (XnValue)pNew; \ + } \ + else \ + { \ + XnValue result = 0; \ + xnOSMemCopy(&result, &orig, sizeof(Type)); \ + return result; \ + } \ + } \ + static void FreeValue(XnValue& Value) \ + { \ + if (sizeof(Type) > sizeof(XnValue)) \ + { \ + Type* p = (Type*)Value; \ + XN_DELETE(p); \ + } \ + } \ + static XnValue GetAsValue(Type const& orig) \ + { \ + if (sizeof(Type) > sizeof(XnValue)) \ + { \ + return (XnValue)&orig; \ + } \ + else \ + { \ + XnValue result = 0; \ + xnOSMemCopy(&result, &orig, sizeof(Type)); \ + return result; \ + } \ + } \ + static Type const& GetFromValue(const XnValue& Value) \ + { \ + if (sizeof(Type) > sizeof(XnValue)) \ + { \ + Type const* p = (Type const*)Value; \ + return *p; \ + } \ + else \ + { \ + Type const* p = (Type const*)&Value; \ + return *p; \ + } \ + } \ + static Type& GetFromValue(XnValue& Value) \ + { \ + if (sizeof(Type) > sizeof(XnValue)) \ + { \ + Type* p = (Type*)Value; \ + return *p; \ + } \ + else \ + { \ + Type* p = (Type*)&Value; \ + return *p; \ + } \ + } \ + XN_PRAGMA_STOP_DISABLED_WARNING_SECTION \ + }; + +/** + * Declares a translator from @a Type to XnValue, with a name @a ClassName. + */ +#define XN_DECLARE_DEFAULT_VALUE_TRANSLATOR(Type, ClassName) \ + XN_DECLARE_DEFAULT_VALUE_TRANSLATOR_DECL(, Type, ClassName) + +#define XN_DEFAULT_TRANSLATOR_NAME(ClassName) ClassName ## Translator + +#endif // _XN_DATA_TYPES_H_ |