Example #1
0
/**
 *  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;
}
Example #4
0
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;
}