4template<
class TYPE,
class ARG_TYPE>
5typename list<TYPE, ARG_TYPE>::node * list<TYPE, ARG_TYPE>::add_head(ARG_TYPE newElement)
10 typename list < TYPE, ARG_TYPE >::node * pnodeNew = aaa_primitive_new
typename list < TYPE, ARG_TYPE >::node(newElement,
nullptr, this->m_phead);
12 if(this->m_phead !=
nullptr)
13 this->m_phead->m_pprevious = pnodeNew;
15 this->m_ptail = pnodeNew;
17 this->m_phead = pnodeNew;
25template<
class TYPE,
class ARG_TYPE>
26typename list<TYPE, ARG_TYPE>::node * list<TYPE, ARG_TYPE>::add_tail(ARG_TYPE newElement)
30 auto pnodeNew = aaa_primitive_new
typename list < TYPE, ARG_TYPE >::node(newElement, this->m_ptail,
nullptr);
32 pnodeNew->m_value = newElement;
34 if (this->m_ptail !=
nullptr)
35 this->m_ptail->m_pnext = pnodeNew;
37 this->m_phead = pnodeNew;
39 this->m_ptail = pnodeNew;
48template<
class TYPE,
class ARG_TYPE>
49typename list<TYPE, ARG_TYPE>::node * list<TYPE, ARG_TYPE>::insert_before(
typename list<TYPE, ARG_TYPE>::node * position, ARG_TYPE newElement)
53 if (position ==
nullptr)
54 return add_head(newElement);
57 auto pOldNode = position;
58 auto pnodeNew = aaa_primitive_new
typename list < TYPE, ARG_TYPE >::node(newElement, pOldNode->m_pprevious, pOldNode);
59 pnodeNew->m_value = newElement;
61 if (pOldNode->m_pprevious !=
nullptr)
63 ASSERT(is_memory_segment_ok(pOldNode->m_pprevious,
sizeof(
typename list < TYPE, ARG_TYPE >::node)));
64 pOldNode->m_pprevious->m_pnext = pnodeNew;
68 ASSERT(pOldNode == this->m_phead);
69 this->m_phead = pnodeNew;
71 pOldNode->m_pprevious = pnodeNew;
75template<
class TYPE,
class ARG_TYPE>
76typename list<TYPE, ARG_TYPE>::node * list<TYPE, ARG_TYPE>::insert_after(
typename list<TYPE, ARG_TYPE>::node * position, ARG_TYPE newElement)
80 if (position ==
nullptr)
81 return add_tail(newElement);
84 auto pOldNode = position;
85 ASSERT(is_memory_segment_ok(pOldNode,
sizeof(
typename list < TYPE, ARG_TYPE >::node)));
86 auto pnodeNew = aaa_primitive_new
typename list < TYPE, ARG_TYPE >::node(newElement, pOldNode, pOldNode->m_pnext);
87 pnodeNew->m_value = newElement;
89 if (pOldNode->m_pnext !=
nullptr)
91 ASSERT(is_memory_segment_ok(pOldNode->m_pnext,
sizeof(
typename list < TYPE, ARG_TYPE >::node)));
92 pOldNode->m_pnext->m_pprevious = pnodeNew;
96 ASSERT(pOldNode == this->m_ptail);
97 this->m_ptail = pnodeNew;
99 pOldNode->m_pnext = pnodeNew;
127template<
class TYPE,
class ARG_TYPE>
128void list<TYPE, ARG_TYPE>::dump(dump_context& dumpcontext)
const
131 matter::dump(dumpcontext);