mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 22:23:01 +00:00
[ATL][ATL_APITEST] Add CAtlList::InsertBefore/After + test
This commit is contained in:
parent
7b5fab40c1
commit
ae69b1fda2
6 changed files with 318 additions and 0 deletions
|
@ -198,6 +198,10 @@ public:
|
|||
|
||||
E RemoveHead();
|
||||
E RemoveTail();
|
||||
|
||||
POSITION InsertBefore(_In_ POSITION pos, INARGTYPE element);
|
||||
POSITION InsertAfter(_In_ POSITION pos, INARGTYPE element);
|
||||
|
||||
void RemoveAll();
|
||||
void RemoveAt(_In_ POSITION pos);
|
||||
|
||||
|
@ -389,6 +393,50 @@ E CAtlList<E, ETraits>::RemoveTail()
|
|||
return Element;
|
||||
}
|
||||
|
||||
template<typename E, class ETraits>
|
||||
POSITION CAtlList<E, ETraits >::InsertBefore(_In_ POSITION pos, _In_ INARGTYPE element)
|
||||
{
|
||||
if (pos == NULL)
|
||||
return AddHead(element);
|
||||
|
||||
CNode* OldNode = (CNode*)pos;
|
||||
CNode* Node = CreateNode(element, OldNode->m_Prev, OldNode);
|
||||
|
||||
if (OldNode->m_Prev != NULL)
|
||||
{
|
||||
OldNode->m_Prev->m_Next = Node;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_HeadNode = Node;
|
||||
}
|
||||
OldNode->m_Prev = Node;
|
||||
|
||||
return (POSITION)Node;
|
||||
}
|
||||
|
||||
template<typename E, class ETraits>
|
||||
POSITION CAtlList<E, ETraits >::InsertAfter(_In_ POSITION pos, _In_ INARGTYPE element)
|
||||
{
|
||||
if (pos == NULL)
|
||||
return AddTail(element);
|
||||
|
||||
CNode* OldNode = (CNode*)pos;
|
||||
CNode* Node = CreateNode(element, OldNode, OldNode->m_Next);
|
||||
|
||||
if (OldNode->m_Next != NULL)
|
||||
{
|
||||
OldNode->m_Next->m_Prev = Node;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_TailNode = Node;
|
||||
}
|
||||
OldNode->m_Next = Node;
|
||||
|
||||
return (POSITION)Node;
|
||||
}
|
||||
|
||||
template<typename E, class ETraits>
|
||||
void CAtlList<E, ETraits >::RemoveAll()
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue