summaryrefslogtreecommitdiffstats
path: root/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnList.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnList.h')
-rw-r--r--tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnList.h749
1 files changed, 0 insertions, 749 deletions
diff --git a/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnList.h b/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnList.h
deleted file mode 100644
index 82665f83..00000000
--- a/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnList.h
+++ /dev/null
@@ -1,749 +0,0 @@
-/****************************************************************************
-* *
-* 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_LIST_H
-#define _XN_LIST_H
-
-//---------------------------------------------------------------------------
-// Includes
-//---------------------------------------------------------------------------
-#include <XnDataTypes.h>
-#include <IXnNodeAllocator.h>
-#include <XnNodeAllocator.h>
-#include <XnNode.h>
-#include <XnStatusCodes.h>
-
-//---------------------------------------------------------------------------
-// Types
-//---------------------------------------------------------------------------
-
-/**
- * The linked list
- */
-class XnList
-{
-public:
- class ConstIterator
- {
- public:
- friend class XnList;
-
- /**
- * Copy constructor
- *
- * @param other [in] instance to copy from
- */
- ConstIterator(const ConstIterator& other) : m_pCurrent(other.m_pCurrent) {}
-
- /**
- * Support ++iterator, go to the next object in the list
- */
- ConstIterator& operator++()
- {
- m_pCurrent = m_pCurrent->Next();
- return *this;
- }
-
- /**
- * Support iterator++, go to the next object in the list, returning the old value
- */
- ConstIterator operator++(int)
- {
- ConstIterator other(m_pCurrent);
- m_pCurrent = m_pCurrent->Next();
- return other;
- }
-
- /**
- * Support --iterator, go to the next object in the list
- */
- ConstIterator& operator--()
- {
- m_pCurrent = m_pCurrent->Previous();
- return *this;
- }
-
- /**
- * Support iterator--, go to the next object in the list, returning the old value
- */
- ConstIterator operator--(int)
- {
- ConstIterator other = *this;
- --*this;
- return other;
- }
-
- /**
- * Operator to check if 2 iterators point to the same object
- *
- * @param other [in] instance to compare with
- */
- XnBool operator==(const ConstIterator& other) const
- {
- return m_pCurrent == other.m_pCurrent;
- }
- /**
- * Operator to check if 2 iterators point to different objects
- *
- * @param other [in] instance to compare with
- */
- XnBool operator!=(const ConstIterator& other) const
- {
- return m_pCurrent != other.m_pCurrent;
- }
-
- /**
- * Get the value of the current object (const version)
- */
- const XnValue& operator*() const
- {
- return m_pCurrent->Data();
- }
-
-
- /**
- * Get the entire current object (const version)
- */
- const XnNode* GetNode() const
- {
- return m_pCurrent;
- }
-
- /**
- * Get the entire current object (non-const version)
- */
- XnNode* GetNode()
- {
- return m_pCurrent;
- }
-
- protected:
- /**
- * constructor to be used from inside the XnList. It points to the node supplied.
- *
- * @param pNode [in] The XnNode to which to currently point
- */
- ConstIterator(XnNode* pNode) : m_pCurrent(pNode) {}
-
- /** The current XnNode */
- XnNode* m_pCurrent;
- };
-
- /**
- * Iterator to the XnList
- */
- class Iterator : public ConstIterator
- {
- public:
- friend class XnList;
-
- /**
- * Copy constructor
- *
- * @param other [in] instance to copy from
- */
- inline Iterator(const Iterator& other) : ConstIterator(other) {}
-
- /**
- * Support ++iterator, go to the next object in the list
- */
- inline Iterator& operator++()
- {
- ++(*(ConstIterator*)this);
- return (*this);
- }
- /**
- * Support iterator++, go to the next object in the list, returning the old value
- */
- inline Iterator operator++(int)
- {
- Iterator result = *this;
- ++*this;
- return (result);
- }
-
- /**
- * Support --iterator, go to the next object in the list
- */
- inline Iterator& operator--()
- {
- --(*(ConstIterator*)this);
- return (*this);
- }
- /**
- * Support iterator--, go to the next object in the list, returning the old value
- */
- inline Iterator operator--(int)
- {
- Iterator result = *this;
- --*this;
- return (result);
- }
-
- /**
- * Get the value of the current object
- */
- inline XnValue& operator*() const { return ((XnValue&)**(ConstIterator*)this); }
-
- protected:
- /**
- * constructor to be used from inside the XnList. It points to the node supplied.
- *
- * @param pNode [in] The XnNode to which to currently point
- */
- inline Iterator(XnNode* pNode) : ConstIterator(pNode) {}
- };
-
-public:
- /**
- * Constructor. Initialize internal representations
- */
- XnList()
- {
- //Default node allocator is XnNodeAllocator
- Init(XN_NEW(XnNodeAllocator));
- m_bOwnsAllocator = TRUE;
- }
-
- /**
- * Destructor. Destroy internal representations
- */
- virtual ~XnList()
- {
- Clear();
-
- // Return base node to the pool
- m_pNodeAllocator->Deallocate(m_pBase);
-
- if (m_bOwnsAllocator)
- {
- //We created the allocator in this object, so we must release it
- XN_DELETE(m_pNodeAllocator);
- }
- }
-
- /**
- * Add a new value at the beginning of list
- *
- * @param value [in] The value to add to the head of the list
- *
- * @return XN_STATUS_ALLOC_FAILED Failed to add to the list because no nodes are available.
- */
- XnStatus AddFirst(const XnValue& value)
- {
- return Add(m_pBase, value);
- }
-
- /**
- * Add a new value at the end of the list
- *
- * @param value [in] The value to add to the tail of the list
- *
- * @return XN_STATUS_ALLOC_FAILED Failed to add to the list because no nodes are available.
- */
- XnStatus AddLast(const XnValue& value)
- {
- return Add(rbegin().m_pCurrent, value);
- }
-
- /**
- * Add a new value after the object pointed to by the iterator
- *
- * @param where [in] iterator to the position after which to add the new value
- * @param val [in] The value to add to the list
- *
- * @return XN_STATUS_ALLOC_FAILED Failed to add to the list because no nodes are available,
- * XN_STATUS_ILLEGAL_POSITION iterator is invalid
- */
- XnStatus AddAfter(ConstIterator where, const XnValue& val)
- {
- if (where == end())
- {
- return XN_STATUS_ILLEGAL_POSITION;
- }
-
- return Add(where.m_pCurrent, val);
- }
-
- /**
- * Add a new value before the object pointed to by the iterator
- *
- * @param where [in] iterator to the position before which to add the new value
- * @param val [in] The value to add to the list
- *
- * @return XN_STATUS_ALLOC_FAILED Failed to add to the list because no nodes are available,
- */
- XnStatus AddBefore(ConstIterator where, const XnValue& val)
- {
- if (where == end())
- {
- return XN_STATUS_ILLEGAL_POSITION;
- }
-
- return Add(where.m_pCurrent->Previous(), val);
- }
-
-
- /**
- * Get an iterator pointing to a value in the list.
- *
- * @param value [in] The searched value
- *
- * @return end() if value doesn't exist
- */
- Iterator Find(const XnValue& value)
- {
- if (IsEmpty())
- {
- return end();
- }
-
- Iterator iter = begin();
- for (; iter != end(); ++iter)
- {
- if (*iter == value)
- break;
- }
- return iter;
- }
-
-
- /**
- * Get an iterator pointing to a value in the list.
- *
- * @param value [in] The searched value
- *
- * @return end() if value doesn't exist
- */
- ConstIterator Find(const XnValue& value) const
- {
- if (IsEmpty())
- {
- return end();
- }
-
- ConstIterator iter = begin();
- for (; iter != end(); ++iter)
- {
- if (*iter == value)
- break;
- }
- return iter;
- }
-
-
- /**
- * Remove a value from the list
- *
- * @param where [in] Iterator pointing to an entry in the list
- * @param value [out] The value that was in the removed entry
- *
- * @return XN_STATUS_ILLEGAL_POSITION iterator was invalid
- */
- XnStatus Remove(ConstIterator where, XnValue& value)
- {
- value = *where;
- return Remove(where);
- }
-
- /**
- * Remove a value from the list
- *
- * @param where [in] Iterator pointing to an entry in the list
- *
- * @return XN_STATUS_ILLEGAL_POSITION iterator was invalid
- */
- virtual XnStatus Remove(ConstIterator where)
- {
- // Verify iterator is valid
- if (where == end())
- {
- return XN_STATUS_ILLEGAL_POSITION;
- }
- if (IsEmpty())
- {
- return XN_STATUS_IS_EMPTY;
- }
-
- XnNode* pToRemove = where.m_pCurrent;
-
- // Connect other nodes to bypass the one removed
- pToRemove->Previous()->Next() = pToRemove->Next();
- pToRemove->Next()->Previous() = pToRemove->Previous();
-
- // Return removed node to the pool
- m_pNodeAllocator->Deallocate(pToRemove);
-
- return XN_STATUS_OK;
- }
-
-
- /**
- * Remove all entries from the list
- */
- XnStatus Clear()
- {
- while (!IsEmpty())
- Remove(begin());
-
- return XN_STATUS_OK;
- }
-
- /**
- * Check if list is empty
- */
- XnBool IsEmpty() const
- {
- return (begin() == end());
- }
-
- /**
- * Current size of the list
- */
- XnUInt32 Size() const
- {
- XnUInt32 nSize = 0;
- for (ConstIterator iter = begin(); iter != end(); ++iter, ++nSize)
- ;
-
- return nSize;
- }
-
- /**
- * An iterator to the first entry of the list (non-const version)
- */
- Iterator begin()
- {
- return Iterator(m_pBase->Next());
- }
-
- /**
- * An iterator to the first entry of the list (const version)
- */
- ConstIterator begin() const
- {
- return ConstIterator(m_pBase->Next());
- }
-
- /**
- * An iterator 1to the end of the list (non-const version). The position is invalid.
- */
- Iterator end()
- {
- return Iterator(m_pBase);
- }
-
- /**
- * An iterator to the end of the list (const version). The position is invalid.
- */
- ConstIterator end() const
- {
- return ConstIterator(m_pBase);
- }
-
- /**
- * An iterator to the last entry of the list (non-const version)
- */
- Iterator rbegin()
- {
- return Iterator(m_pBase->Previous());
- }
-
- /**
- * An iterator to the last entry of the list (const version)
- */
- ConstIterator rbegin() const
- {
- return ConstIterator(m_pBase->Previous());
- }
-
- /**
- * An iterator to the beginning of the list (non-const version). This position is invalid
- */
- Iterator rend()
- {
- return Iterator(m_pBase);
- }
-
- /**
- * An iterator to the beginning of the list (const version). This position is invalid
- */
- ConstIterator rend() const
- {
- return ConstIterator(m_pBase);
- }
-
-protected:
- friend class XnNodeManager;
-
- /**
- * Constructor. Initialize internal representations
- */
- XnList(INiNodeAllocator* pNodeAllocator)
- {
- Init(pNodeAllocator);
- m_bOwnsAllocator = FALSE;
- }
-
- void Init(INiNodeAllocator* pNodeAllocator)
- {
- m_pNodeAllocator = pNodeAllocator;
- // Allocate a node to act as base node.
- m_pBase = m_pNodeAllocator->Allocate();
- if (m_pBase == NULL)
- {
- // OZOZ: Allocation failed in ctor...
- }
-
- m_pBase->Next() = m_pBase->Previous() = m_pBase;
- }
-
- /**
- * Add a new value to the list
- *
- * @param pWhere [in] The XnNode after which to add the new value
- * @param val [in] The value to add to the list
- *
- * @return XN_STATUS_ALLOC_FAILED Failed to add to the list because no nodes are available,
- */
- XnStatus Add(XnNode* pWhere, const XnValue& val)
- {
- // Get a node from the pool for the entry
- XnNode* pNewNode = m_pNodeAllocator->Allocate();
- if (pNewNode == NULL)
- {
- return XN_STATUS_ALLOC_FAILED;
- }
- // push new node to position
- pNewNode->Data() = val;
- pNewNode->Next() = pWhere->Next();
- pNewNode->Previous() = pWhere;
- pWhere->Next()->Previous() = pNewNode;
- pWhere->Next() = pNewNode;
-
- return XN_STATUS_OK;
- }
-
-
- /** The base node for the list */
- XnNode* m_pBase;
-
- INiNodeAllocator* m_pNodeAllocator;
- XnBool m_bOwnsAllocator;
-
-private:
- XN_DISABLE_COPY_AND_ASSIGN(XnList);
-};
-
-/**
-* Declares a list of type @a Type, which is named @a ClassName. The list uses translator @a Translator,
-* and is declared using the @a decl declspec.
-*/
-#define XN_DECLARE_LIST_WITH_TRANSLATOR_DECL(decl, Type, ClassName, Translator) \
- class decl ClassName : public XnList \
- { \
- public: \
- class decl ConstIterator : public XnList::ConstIterator \
- { \
- public: \
- friend class ClassName; \
- inline ConstIterator(const ConstIterator& other) : XnList::ConstIterator(other) {} \
- inline ConstIterator& operator++() \
- { \
- ++(*(XnList::ConstIterator*)this); \
- return (*this); \
- } \
- inline ConstIterator operator++(int) \
- { \
- ConstIterator result = *this; \
- ++*this; \
- return result; \
- } \
- inline ConstIterator& operator--() \
- { \
- --(*(XnList::ConstIterator*)this); \
- return (*this); \
- } \
- inline ConstIterator operator--(int) \
- { \
- ConstIterator result = *this; \
- --*this; \
- return result; \
- } \
- inline Type const& operator*() const \
- { \
- return Translator::GetFromValue(**((XnList::ConstIterator*)this)); \
- } \
- inline Type const* operator->() const { return (&**this); } \
- protected: \
- inline ConstIterator(XnNode* pNode) : XnList::ConstIterator(pNode) {} \
- inline ConstIterator(const XnList::ConstIterator& other) : \
- XnList::ConstIterator(other) \
- {} \
- }; \
- class decl Iterator : public ConstIterator \
- { \
- public: \
- friend class ClassName; \
- Iterator(const Iterator& other) : ConstIterator(other) {} \
- inline Iterator& operator++() \
- { \
- ++(*(ConstIterator*)this); \
- return (*this); \
- } \
- inline Iterator operator++(int) \
- { \
- Iterator result = *this; \
- ++*this; \
- return result; \
- } \
- inline Iterator& operator--() \
- { \
- --(*(ConstIterator*)this); \
- return (*this); \
- } \
- inline Iterator operator--(int) \
- { \
- Iterator result = *this; \
- --*this; \
- return result; \
- } \
- inline Type& operator*() const { return ((Type&)**(ConstIterator*)this); } \
- inline Type* operator->() const { return (&**this); } \
- protected: \
- inline Iterator(XnNode* pNode) : ConstIterator(pNode) {} \
- inline Iterator(const XnList::Iterator& other) : ConstIterator(other) {} \
- }; \
- public: \
- ClassName() \
- { \
- } \
- ~ClassName() \
- { \
- while (!IsEmpty()) \
- Remove(begin()); \
- } \
- inline XnStatus AddFirst(Type const& value) \
- { \
- XnValue val = Translator::CreateValueCopy(value); \
- XnStatus nRetVal = XnList::AddFirst(val); \
- if (nRetVal != XN_STATUS_OK) \
- { \
- Translator::FreeValue(val); \
- return (nRetVal); \
- } \
- return XN_STATUS_OK; \
- } \
- inline XnStatus AddLast(Type const& value) \
- { \
- XnValue val = Translator::CreateValueCopy(value); \
- XnStatus nRetVal = XnList::AddLast(val); \
- if (nRetVal != XN_STATUS_OK) \
- { \
- Translator::FreeValue(val); \
- return (nRetVal); \
- } \
- return XN_STATUS_OK; \
- } \
- inline XnStatus AddAfter(ConstIterator where, Type const& value) \
- { \
- XnValue val = Translator::CreateValueCopy(value); \
- XnStatus nRetVal = XnList::AddAfter(where, val); \
- if (nRetVal != XN_STATUS_OK) \
- { \
- Translator::FreeValue(val); \
- return (nRetVal); \
- } \
- return XN_STATUS_OK; \
- } \
- inline XnStatus AddBefore(ConstIterator where, Type const& value) \
- { \
- XnValue val = Translator::CreateValueCopy(value); \
- XnStatus nRetVal = XnList::AddBefore(where, val); \
- if (nRetVal != XN_STATUS_OK) \
- { \
- Translator::FreeValue(val); \
- return (nRetVal); \
- } \
- return XN_STATUS_OK; \
- } \
- inline ConstIterator Find(Type const& value) const \
- { \
- XnValue _value = Translator::GetAsValue(value); \
- return XnList::Find(_value); \
- } \
- inline Iterator Find(Type const& value) \
- { \
- XnValue _value = Translator::GetAsValue(value); \
- return XnList::Find(_value); \
- } \
- inline XnStatus Remove(ConstIterator where) \
- { \
- XnValue val = Translator::GetAsValue(*where); \
- XnStatus nRetVal = XnList::Remove(where); \
- if (nRetVal != XN_STATUS_OK) return (nRetVal); \
- Translator::FreeValue(val); \
- return XN_STATUS_OK; \
- } \
- inline XnStatus Remove(Type const& value) \
- { \
- Iterator it = Find(value); \
- return Remove(it); \
- } \
- inline Iterator begin() { return XnList::begin(); } \
- inline ConstIterator begin() const { return XnList::begin(); } \
- inline Iterator end() { return XnList::end(); } \
- inline ConstIterator end() const { return XnList::end(); } \
- inline Iterator rbegin() { return XnList::rbegin(); } \
- inline ConstIterator rbegin() const { return XnList::rbegin(); } \
- inline Iterator rend() { return XnList::rend(); } \
- inline ConstIterator rend() const { return XnList::rend(); } \
- protected: \
- virtual XnStatus Remove(XnList::ConstIterator where) \
- { \
- return Remove(ConstIterator(where)); \
- } \
- private: \
- XN_DISABLE_COPY_AND_ASSIGN(ClassName); \
- };
-
-/**
-* Declares a list of type @a Type, which is named @a ClassName. The list uses translator @a Translator.
-*/
-#define XN_DECLARE_LIST_WITH_TRANSLATOR(Type, ClassName, Translator) \
- XN_DECLARE_LIST_WITH_TRANSLATOR_DECL(, Type, ClassName, Translator)
-
-/**
-* Declares a list of type @a Type, which is named @a ClassName. The list uses creates a default translator
-* and is declared using the @a decl declspec.
-*/
-#define XN_DECLARE_LIST_DECL(decl, Type, ClassName) \
- XN_DECLARE_DEFAULT_VALUE_TRANSLATOR_DECL(decl, Type, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) \
- XN_DECLARE_LIST_WITH_TRANSLATOR_DECL(decl, Type, ClassName, XN_DEFAULT_TRANSLATOR_NAME(ClassName))
-
-/**
-* Declares a list of type @a Type, which is named @a ClassName. The list uses creates a default translator.
-*/
-#define XN_DECLARE_LIST(Type, ClassName) \
- XN_DECLARE_LIST_DECL(, Type, ClassName)
-
-#endif // _XN_LIST_H
-