summaryrefslogtreecommitdiffstats
path: root/tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h')
-rw-r--r--tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h303
1 files changed, 303 insertions, 0 deletions
diff --git a/tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h b/tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h
new file mode 100644
index 00000000..207edb9c
--- /dev/null
+++ b/tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h
@@ -0,0 +1,303 @@
+/****************************************************************************
+* *
+* 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_MODULE_CPP_REGISTRATION_H__
+#define __XN_MODULE_CPP_REGISTRATION_H__
+
+//---------------------------------------------------------------------------
+// Includes
+//---------------------------------------------------------------------------
+#include "XnModuleCppInterface.h"
+#include <XnUtils.h>
+
+using namespace xn;
+
+//---------------------------------------------------------------------------
+// Internal Macros
+//---------------------------------------------------------------------------
+/** Defines module instance name. */
+#define _XN_MODULE_INST g_pTheModule
+
+#define _CONCAT(a,b) a##b
+
+inline XnModuleNodeHandle __ModuleNodeToHandle(xn::ModuleProductionNode* pNode)
+{
+ return ((XnModuleNodeHandle)pNode);
+}
+
+#define __XN_EXPORT_NODE_COMMON(ExportedClass, ExportedName, Type) \
+ /** Create a static global instance. */ \
+ static ExportedClass* ExportedName = new ExportedClass(); \
+ \
+ void XN_CALLBACK_TYPE _CONCAT(ExportedClass,GetDescription)(XnProductionNodeDescription* pDescription) \
+ { \
+ ExportedName->GetDescription(pDescription); \
+ } \
+ \
+ XnStatus XN_CALLBACK_TYPE _CONCAT(ExportedClass,EnumerateProductionTrees) \
+ (XnContext* pContext, XnNodeInfoList* pTreesList, XnEnumerationErrors* pErrors) \
+ { \
+ Context context(pContext); \
+ NodeInfoList list(pTreesList); \
+ EnumerationErrors errors(pErrors); \
+ return ExportedName->EnumerateProductionTrees(context, list, pErrors == NULL ? NULL : &errors); \
+ } \
+ \
+ XnStatus XN_CALLBACK_TYPE _CONCAT(ExportedClass,Create)(XnContext* pContext, \
+ const XnChar* strInstanceName, \
+ const XnChar* strCreationInfo, \
+ XnNodeInfoList* pNeededTrees, \
+ const XnChar* strConfigurationDir, \
+ XnModuleNodeHandle* phInstance) \
+ { \
+ xn::NodeInfoList* pNeeded = NULL; \
+ if (pNeededTrees != NULL) \
+ { \
+ pNeeded = XN_NEW(xn::NodeInfoList, pNeededTrees); \
+ } \
+ ModuleProductionNode* pNode; \
+ Context context(pContext); \
+ XnStatus nRetVal = ExportedName->Create(context, strInstanceName, strCreationInfo, \
+ pNeeded, strConfigurationDir, &pNode); \
+ if (nRetVal != XN_STATUS_OK) \
+ { \
+ XN_DELETE(pNeeded); \
+ return (nRetVal); \
+ } \
+ *phInstance = __ModuleNodeToHandle(pNode); \
+ XN_DELETE(pNeeded); \
+ return (XN_STATUS_OK); \
+ } \
+ \
+ void XN_CALLBACK_TYPE _CONCAT(ExportedClass,Destroy)(XnModuleNodeHandle hInstance) \
+ { \
+ ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance; \
+ ExportedName->Destroy(pNode); \
+ } \
+ \
+ void XN_CALLBACK_TYPE _CONCAT(ExportedClass,GetExportedInterface)( \
+ XnModuleExportedProductionNodeInterface* pInterface) \
+ { \
+ pInterface->GetDescription = _CONCAT(ExportedClass,GetDescription); \
+ pInterface->EnumerateProductionTrees = _CONCAT(ExportedClass,EnumerateProductionTrees); \
+ pInterface->Create = _CONCAT(ExportedClass,Create); \
+ pInterface->Destroy = _CONCAT(ExportedClass,Destroy); \
+ pInterface->GetInterface.General = __ModuleGetGetInterfaceFunc(Type); \
+ } \
+ \
+ static XnStatus _CONCAT(ExportedClass,RegisterResult) = \
+ _XN_MODULE_INST->AddExportedNode(_CONCAT(ExportedClass,GetExportedInterface));
+
+#define _XN_EXPORT_NODE_COMMON(ExportedClass, Type) \
+ __XN_EXPORT_NODE_COMMON(ExportedClass, _g_##ExportedClass, Type)
+
+//---------------------------------------------------------------------------
+// Forward Declarations
+//---------------------------------------------------------------------------
+
+void XN_CALLBACK_TYPE __ModuleGetProductionNodeInterface(XnModuleProductionNodeInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetDeviceInterface(XnModuleDeviceInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetGeneratorInterface(XnModuleGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetMapGeneratorInterface(XnModuleMapGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetDepthGeneratorInterface(XnModuleDepthGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetImageGeneratorInterface(XnModuleImageGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetIRGeneratorInterface(XnModuleIRGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetUserGeneratorInterface(XnModuleUserGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetHandsGeneratorInterface(XnModuleHandsGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetGestureGeneratorInterface(XnModuleGestureGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetSceneAnalyzerInterface(XnModuleSceneAnalyzerInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetAudioGeneratorInterface(XnModuleAudioGeneratorInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetRecorderInterface(XnModuleRecorderInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetPlayerInterface(XnModulePlayerInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetCodecInterface(XnModuleCodecInterface* pInterface);
+void XN_CALLBACK_TYPE __ModuleGetScriptNodeInterface(XnModuleScriptNodeInterface* pInterface);
+
+//---------------------------------------------------------------------------
+// Utility Macros
+//---------------------------------------------------------------------------
+
+typedef void (XN_CALLBACK_TYPE *GetInterfaceFuncPtr)(void* pInterface);
+
+static GetInterfaceFuncPtr __ModuleGetGetInterfaceFunc(XnProductionNodeType type)
+{
+ // start with concrete type
+ if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_DEVICE))
+ return (GetInterfaceFuncPtr)__ModuleGetDeviceInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_DEPTH))
+ return (GetInterfaceFuncPtr)__ModuleGetDepthGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_IMAGE))
+ return (GetInterfaceFuncPtr)__ModuleGetImageGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_IR))
+ return (GetInterfaceFuncPtr)__ModuleGetIRGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_USER))
+ return (GetInterfaceFuncPtr)__ModuleGetUserGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_GESTURE))
+ return (GetInterfaceFuncPtr)__ModuleGetGestureGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_SCENE))
+ return (GetInterfaceFuncPtr)__ModuleGetSceneAnalyzerInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_AUDIO))
+ return (GetInterfaceFuncPtr)__ModuleGetAudioGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_RECORDER))
+ return (GetInterfaceFuncPtr)__ModuleGetRecorderInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_PLAYER))
+ return (GetInterfaceFuncPtr)__ModuleGetPlayerInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_HANDS))
+ return (GetInterfaceFuncPtr)__ModuleGetHandsGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_CODEC))
+ return (GetInterfaceFuncPtr)__ModuleGetCodecInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_SCRIPT))
+ return (GetInterfaceFuncPtr)__ModuleGetScriptNodeInterface;
+ // and continue with abstract ones
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_MAP_GENERATOR))
+ return (GetInterfaceFuncPtr)__ModuleGetMapGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_GENERATOR))
+ return (GetInterfaceFuncPtr)__ModuleGetGeneratorInterface;
+ else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_PRODUCTION_NODE))
+ return (GetInterfaceFuncPtr)__ModuleGetProductionNodeInterface;
+
+ // unknown
+ XN_ASSERT(FALSE);
+ return NULL;
+}
+
+/** Exports an OpenNI module from the DLL. */
+#if XN_PLATFORM_SUPPORTS_DYNAMIC_LIBS
+ #define XN_EXPORT_MODULE(ModuleClass) \
+ /** Declare the static variable */ \
+ ModuleClass __moduleInstance; \
+ Module* _XN_MODULE_INST = &__moduleInstance;
+#else
+ #define XN_EXPORT_MODULE(ModuleClass) \
+ /** Declare the static variable */ \
+ static ModuleClass __moduleInstance; \
+ static Module* _XN_MODULE_INST = &__moduleInstance;
+#endif
+
+/** Exports a node from the DLL. */
+#define XN_EXPORT_NODE(ExportedClass, nodeType) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, nodeType)
+
+/** Exports a device node from the DLL. */
+#define XN_EXPORT_DEVICE(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_DEVICE)
+
+/** Exports a depth generator from the DLL. */
+#define XN_EXPORT_DEPTH(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_DEPTH)
+
+/** Exports an image generator from the DLL. */
+#define XN_EXPORT_IMAGE(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_IMAGE)
+
+/** Exports an IR generator from the DLL. */
+#define XN_EXPORT_IR(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_IR)
+
+#define XN_EXPORT_USER(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_USER)
+
+#define XN_EXPORT_HANDS(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_HANDS)
+
+#define XN_EXPORT_GESTURE(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_GESTURE)
+
+#define XN_EXPORT_SCENE(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_SCENE)
+
+/** Exports an Audio generator from the DLL. */
+#define XN_EXPORT_AUDIO(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_AUDIO)
+
+/** Exports a Recorder from the DLL. */
+#define XN_EXPORT_RECORDER(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_RECORDER)
+
+/** Exports a Player from the DLL. */
+#define XN_EXPORT_PLAYER(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_PLAYER)
+
+#define XN_EXPORT_CODEC(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_CODEC)
+
+#define XN_EXPORT_SCRIPT(ExportedClass) \
+ _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_SCRIPT)
+
+//---------------------------------------------------------------------------
+// Exported C functions
+//---------------------------------------------------------------------------
+#if XN_PLATFORM_SUPPORTS_DYNAMIC_LIBS
+ #include <XnModuleCFunctions.h>
+ #define XN_MODULE_FUNC_TYPE XN_C_API_EXPORT
+ extern Module* _XN_MODULE_INST;
+#else
+ #define XN_MODULE_FUNC_TYPE static
+ static Module* _XN_MODULE_INST;
+#endif
+
+XN_MODULE_FUNC_TYPE XnStatus XN_C_DECL XN_MODULE_LOAD()
+{
+ XnStatus nRetVal = XN_STATUS_OK;
+
+ nRetVal = _XN_MODULE_INST->Load();
+ XN_IS_STATUS_OK(nRetVal);
+
+ return (XN_STATUS_OK);
+}
+
+XN_MODULE_FUNC_TYPE void XN_C_DECL XN_MODULE_UNLOAD()
+{
+ _XN_MODULE_INST->Unload();
+}
+
+XN_MODULE_FUNC_TYPE XnUInt32 XN_C_DECL XN_MODULE_GET_EXPORTED_NODES_COUNT()
+{
+ return _XN_MODULE_INST->GetExportedNodesCount();
+}
+
+XN_MODULE_FUNC_TYPE XnStatus XN_C_DECL XN_MODULE_GET_EXPORTED_NODES_ENTRY_POINTS(XnModuleGetExportedInterfacePtr* aEntryPoints, XnUInt32 nCount)
+{
+ return _XN_MODULE_INST->GetExportedNodes(aEntryPoints, nCount);
+}
+
+XN_MODULE_FUNC_TYPE void XN_C_DECL XN_MODULE_GET_OPEN_NI_VERSION(XnVersion* pVersion)
+{
+ pVersion->nMajor = XN_MAJOR_VERSION;
+ pVersion->nMinor = XN_MINOR_VERSION;
+ pVersion->nMaintenance = XN_MAINTENANCE_VERSION;
+ pVersion->nBuild = XN_BUILD_VERSION;
+}
+
+#if !XN_PLATFORM_SUPPORTS_DYNAMIC_LIBS
+#include <XnUtils.h>
+
+static XnOpenNIModuleInterface moduleInterface =
+{
+ XN_MODULE_LOAD,
+ XN_MODULE_UNLOAD,
+ XN_MODULE_GET_EXPORTED_NODES_COUNT,
+ XN_MODULE_GET_EXPORTED_NODES_ENTRY_POINTS,
+ XN_MODULE_GET_OPEN_NI_VERSION
+};
+static XnStatus registerResult = xnRegisterModuleWithOpenNI(&moduleInterface, NULL, __FILE__);
+#endif
+
+#endif // __XN_MODULE_CPP_REGISTRATION_H__