summaryrefslogtreecommitdiffstats
path: root/tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnStringsHashT.h
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-09-26 09:17:09 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-09-26 09:21:30 +0300
commit88695159e16bdfb8424de99d482adf332a93740d (patch)
treebcf4c815b77f80534e9b1edd33bab3f57283647b /tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnStringsHashT.h
parentbb0e49c6bc7e4e650fc84366ff51ee47c8e5c530 (diff)
Kinect surface added to tests
- theme changing etc. to be added Change-Id: I26e72757c90b450aeeecf89ffdf39d312f6c2769 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnStringsHashT.h')
-rw-r--r--tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnStringsHashT.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnStringsHashT.h b/tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnStringsHashT.h
new file mode 100644
index 00000000..57602211
--- /dev/null
+++ b/tests/kinectsurface/QtKinectWrapper/OpenNI/Include/XnStringsHashT.h
@@ -0,0 +1,90 @@
+#ifndef _XN_STRINGS_HASH_T_H_
+#define _XN_STRINGS_HASH_T_H_
+
+//---------------------------------------------------------------------------
+// Includes
+//---------------------------------------------------------------------------
+#include "XnHashT.h"
+
+//---------------------------------------------------------------------------
+// Code
+//---------------------------------------------------------------------------
+class XnStringsHashKeyManager
+{
+public:
+ static XnHashCode Hash(const XnChar* const& key)
+ {
+ XnUInt32 nCRC = 0;
+ xnOSStrCRC32(key, &nCRC);
+
+ // convert from UINT32 to XnHashValue
+ return nCRC % (1 << (sizeof(XnHashCode)*8));
+ }
+
+ static XnInt32 Compare(const XnChar* const& key1, const XnChar* const& key2)
+ {
+ return strcmp(key1, key2);
+ }
+};
+
+template<class TValue>
+class XnStringsNodeAllocator
+{
+public:
+ typedef XnKeyValuePair<const XnChar*, TValue> TPair;
+ typedef XnLinkedNodeT<TPair> TLinkedNode;
+
+ static TLinkedNode* Allocate(TPair const& pair)
+ {
+ XnChar* pKeyCopy = xnOSStrDup(pair.Key());
+ if (pKeyCopy == NULL)
+ {
+ return NULL;
+ }
+
+ return XN_NEW(TLinkedNode, TPair(pKeyCopy, pair.Value()));
+ }
+
+ static void Deallocate(TLinkedNode* pNode)
+ {
+ XN_ASSERT(pNode != NULL);
+ XN_ASSERT(pNode->value.Key() != NULL);
+
+ xnOSFree(pNode->value.Key());
+ XN_DELETE(pNode);
+ }
+};
+
+template<class TValue>
+class XnStringsHashT : public XnHashT<const XnChar*, TValue, XnStringsHashKeyManager, XnStringsNodeAllocator<TValue> >
+{
+ typedef XnHashT<const XnChar*, TValue, XnStringsHashKeyManager, XnStringsNodeAllocator<TValue> > Base;
+
+public:
+ XnStringsHashT() : Base() {}
+
+ XnStringsHashT(const XnStringsHashT& other) : Base()
+ {
+ *this = other;
+ }
+
+ XnStringsHashT& operator=(const XnStringsHashT& other)
+ {
+ Base::operator=(other);
+ // no other members
+ return *this;
+ }
+};
+
+class XnStringsSet : public XnStringsHashT<void*>
+{
+ typedef XnStringsHashT<void*> Base;
+
+public:
+ XnStatus Set(const XnChar* key)
+ {
+ return Base::Set(key, NULL);
+ }
+};
+
+#endif // _XN_STRINGS_HASH_T_H_ \ No newline at end of file