279 return XN_STATUS_ILLEGAL_POSITION;
297 return XN_STATUS_ILLEGAL_POSITION;
319 for (; iter !=
end(); ++iter)
343 for (; iter !=
end(); ++iter)
378 return XN_STATUS_ILLEGAL_POSITION;
382 return XN_STATUS_IS_EMPTY;
501 Init(pNodeAllocator);
530 if (pNewNode == NULL)
532 return XN_STATUS_ALLOC_FAILED;
535 pNewNode->
Data() = val;
539 pWhere->
Next() = pNewNode;
559 #define XN_DECLARE_LIST_WITH_TRANSLATOR_DECL(decl, Type, ClassName, Translator) \ 560 class decl ClassName : public XnList \ 563 class decl ConstIterator : public XnList::ConstIterator \ 566 friend class ClassName; \ 567 inline ConstIterator(const ConstIterator& other) : XnList::ConstIterator(other) {} \ 568 inline ConstIterator& operator++() \ 570 ++(*(XnList::ConstIterator*)this); \ 573 inline ConstIterator operator++(int) \ 575 ConstIterator result = *this; \ 579 inline ConstIterator& operator--() \ 581 --(*(XnList::ConstIterator*)this); \ 584 inline ConstIterator operator--(int) \ 586 ConstIterator result = *this; \ 590 inline Type const& operator*() const \ 592 return Translator::GetFromValue(**((XnList::ConstIterator*)this)); \ 594 inline Type const* operator->() const { return (&**this); } \ 596 inline ConstIterator(XnNode* pNode) : XnList::ConstIterator(pNode) {} \ 597 inline ConstIterator(const XnList::ConstIterator& other) : \ 598 XnList::ConstIterator(other) \ 601 class decl Iterator : public ConstIterator \ 604 friend class ClassName; \ 605 Iterator(const Iterator& other) : ConstIterator(other) {} \ 606 inline Iterator& operator++() \ 608 ++(*(ConstIterator*)this); \ 611 inline Iterator operator++(int) \ 613 Iterator result = *this; \ 617 inline Iterator& operator--() \ 619 --(*(ConstIterator*)this); \ 622 inline Iterator operator--(int) \ 624 Iterator result = *this; \ 628 inline Type& operator*() const { return ((Type&)**(ConstIterator*)this); } \ 629 inline Type* operator->() const { return (&**this); } \ 631 inline Iterator(XnNode* pNode) : ConstIterator(pNode) {} \ 632 inline Iterator(const XnList::Iterator& other) : ConstIterator(other) {} \ 643 inline XnStatus AddFirst(Type const& value) \ 645 XnValue val = Translator::CreateValueCopy(value); \ 646 XnStatus nRetVal = XnList::AddFirst(val); \ 647 if (nRetVal != XN_STATUS_OK) \ 649 Translator::FreeValue(val); \ 652 return XN_STATUS_OK; \ 654 inline XnStatus AddLast(Type const& value) \ 656 XnValue val = Translator::CreateValueCopy(value); \ 657 XnStatus nRetVal = XnList::AddLast(val); \ 658 if (nRetVal != XN_STATUS_OK) \ 660 Translator::FreeValue(val); \ 663 return XN_STATUS_OK; \ 665 inline XnStatus AddAfter(ConstIterator where, Type const& value) \ 667 XnValue val = Translator::CreateValueCopy(value); \ 668 XnStatus nRetVal = XnList::AddAfter(where, val); \ 669 if (nRetVal != XN_STATUS_OK) \ 671 Translator::FreeValue(val); \ 674 return XN_STATUS_OK; \ 676 inline XnStatus AddBefore(ConstIterator where, Type const& value) \ 678 XnValue val = Translator::CreateValueCopy(value); \ 679 XnStatus nRetVal = XnList::AddBefore(where, val); \ 680 if (nRetVal != XN_STATUS_OK) \ 682 Translator::FreeValue(val); \ 685 return XN_STATUS_OK; \ 687 inline ConstIterator Find(Type const& value) const \ 689 XnValue _value = Translator::GetAsValue(value); \ 690 return XnList::Find(_value); \ 692 inline Iterator Find(Type const& value) \ 694 XnValue _value = Translator::GetAsValue(value); \ 695 return XnList::Find(_value); \ 697 inline XnStatus Remove(ConstIterator where) \ 699 XnValue val = Translator::GetAsValue(*where); \ 700 XnStatus nRetVal = XnList::Remove(where); \ 701 if (nRetVal != XN_STATUS_OK) return (nRetVal); \ 702 Translator::FreeValue(val); \ 703 return XN_STATUS_OK; \ 705 inline XnStatus Remove(Type const& value) \ 707 Iterator it = Find(value); \ 710 inline Iterator begin() { return XnList::begin(); } \ 711 inline ConstIterator begin() const { return XnList::begin(); } \ 712 inline Iterator end() { return XnList::end(); } \ 713 inline ConstIterator end() const { return XnList::end(); } \ 714 inline Iterator rbegin() { return XnList::rbegin(); } \ 715 inline ConstIterator rbegin() const { return XnList::rbegin(); } \ 716 inline Iterator rend() { return XnList::rend(); } \ 717 inline ConstIterator rend() const { return XnList::rend(); } \ 719 virtual XnStatus Remove(XnList::ConstIterator where) \ 721 return Remove(ConstIterator(where)); \ 724 XN_DISABLE_COPY_AND_ASSIGN(ClassName); \ 730 #define XN_DECLARE_LIST_WITH_TRANSLATOR(Type, ClassName, Translator) \ 731 XN_DECLARE_LIST_WITH_TRANSLATOR_DECL(, Type, ClassName, Translator) 737 #define XN_DECLARE_LIST_DECL(decl, Type, ClassName) \ 738 XN_DECLARE_DEFAULT_VALUE_TRANSLATOR_DECL(decl, Type, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) \ 739 XN_DECLARE_LIST_WITH_TRANSLATOR_DECL(decl, Type, ClassName, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) 744 #define XN_DECLARE_LIST(Type, ClassName) \ 745 XN_DECLARE_LIST_DECL(, Type, ClassName) XnValue & Data()
Definition: XnNode.h:68
XnNode * m_pBase
Definition: XnList.h:546
Iterator rend()
Definition: XnList.h:480
ConstIterator & operator++()
Definition: XnList.h:58
Definition: XnNodeAllocator.h:27
ConstIterator end() const
Definition: XnList.h:456
XnBool operator==(const ConstIterator &other) const
Definition: XnList.h:98
friend class XnNodeManager
Definition: XnList.h:494
XnStatus Remove(ConstIterator where, XnValue &value)
Definition: XnList.h:360
ConstIterator operator++(int)
Definition: XnList.h:67
#define XN_STATUS_OK
Definition: XnStatus.h:36
XnBool operator!=(const ConstIterator &other) const
Definition: XnList.h:107
ConstIterator rbegin() const
Definition: XnList.h:472
ConstIterator(XnNode *pNode)
Definition: XnList.h:143
ConstIterator begin() const
Definition: XnList.h:440
XnNode * GetNode()
Definition: XnList.h:132
XnList(INiNodeAllocator *pNodeAllocator)
Definition: XnList.h:499
ConstIterator operator--(int)
Definition: XnList.h:86
XnBool m_bOwnsAllocator
Definition: XnList.h:549
XnUInt32 XnStatus
Definition: XnStatus.h:33
XnStatus AddAfter(ConstIterator where, const XnValue &val)
Definition: XnList.h:275
virtual XnStatus Remove(ConstIterator where)
Definition: XnList.h:373
void * XnValue
Definition: XnDataTypes.h:35
XnNode * m_pCurrent
Definition: XnList.h:146
Iterator operator++(int)
Definition: XnList.h:175
#define XN_NEW(type,...)
Definition: XnOS.h:329
Iterator rbegin()
Definition: XnList.h:464
Iterator & operator++()
Definition: XnList.h:167
Iterator(XnNode *pNode)
Definition: XnList.h:211
ConstIterator rend() const
Definition: XnList.h:488
XnBool IsEmpty() const
Definition: XnList.h:412
Iterator & operator--()
Definition: XnList.h:185
XnStatus Clear()
Definition: XnList.h:401
XnValue & operator*() const
Definition: XnList.h:203
XnStatus AddBefore(ConstIterator where, const XnValue &val)
Definition: XnList.h:293
Iterator operator--(int)
Definition: XnList.h:193
XnNode *& Previous()
Definition: XnNode.h:59
XnStatus AddFirst(const XnValue &value)
Definition: XnList.h:249
Definition: IXnNodeAllocator.h:32
const XnValue & operator*() const
Definition: XnList.h:115
#define XN_DELETE(p)
Definition: XnOS.h:339
virtual ~XnList()
Definition: XnList.h:228
XnStatus AddLast(const XnValue &value)
Definition: XnList.h:261
XnList()
Definition: XnList.h:218
XnUInt32 Size() const
Definition: XnList.h:420
INiNodeAllocator * m_pNodeAllocator
Definition: XnList.h:548
Iterator Find(const XnValue &value)
Definition: XnList.h:311
ConstIterator(const ConstIterator &other)
Definition: XnList.h:53
void Init(INiNodeAllocator *pNodeAllocator)
Definition: XnList.h:505
virtual XnNode * Allocate()=0
ConstIterator Find(const XnValue &value) const
Definition: XnList.h:335
const XnNode * GetNode() const
Definition: XnList.h:124
ConstIterator & operator--()
Definition: XnList.h:77
XnNode *& Next()
Definition: XnNode.h:50
Iterator(const Iterator &other)
Definition: XnList.h:162
Iterator end()
Definition: XnList.h:448
Iterator begin()
Definition: XnList.h:432
#define XN_DISABLE_COPY_AND_ASSIGN(TypeName)
Definition: XnMacros.h:118
virtual void Deallocate(XnNode *pNode)=0
XnStatus Add(XnNode *pWhere, const XnValue &val)
Definition: XnList.h:526