/** * Appends a new node into a given node level * * @param Node pointer to node to get the level * @param newNode pointer to node to be added */ void VDFTree::AppendNode(VDFNode *Node, VDFNode *newNode) { VDFNode *lastNode; if(Node == NULL) return; lastNode = GetLastNode(Node); lastNode->nextNode = newNode; newNode->parentNode = lastNode->parentNode; newNode->previousNode = lastNode; }
void CheckedWallsList::PushNode(UINT Dir) { CheckedWallsNode *pNode = GetLastNode(true); // Allocate the new node pNode->Next = new CheckedWallsNode; NumNodesAllocated++; CheckedWallsNode *pNewNode = pNode->Next; // Update pointers pNewNode->Next = NULL; pNewNode->Prev = pNode; // Copy the cell data pNewNode->Dir = Dir; }
bool CheckedWallsList::PopNode() { CheckedWallsNode *pNode = GetLastNode(true); // If this the root node, we're done... if(pNode == NULL || pNode == &Root){return false;} // return faillure // Update pointers pNode->Prev->Next = NULL; // Delete the node SAFE_DELETE_OBJECT(pNode); NumNodesAllocated--; // return success return true; }
UINT CObjectList::AddObject(CObject* pObject) { OBJECT_NODE* pNode; OBJECT_NODE* pNodeNew; if(pObject==NULL) return 0; if(m_pRootNode) { pNode = GetLastNode(); pNodeNew = new OBJECT_NODE; if(pNodeNew == NULL) { printf("%s: New Node Allocation Failure\r\n"); return 0; } pNode->pNext = pNodeNew; pNodeNew->pPrev = pNode; pNodeNew->pNext = NULL; pNodeNew->pObject = pObject; m_nObjectCount++; } else { m_pRootNode = new OBJECT_NODE; if(m_pRootNode == NULL) { printf("%s: Root Node Allocation Failure\r\n"); return 0; } m_pRootNode->pPrev = NULL; //m_pRootNode; m_pRootNode->pNext = NULL; m_pRootNode->pObject = pObject; m_nObjectCount = 1; } pObject->m_id = m_nObjectCount; // printf("%s: type=%d object added at %d\r\n", __func__, pObject->m_type, pObject->m_id); return pObject->m_id; }