Пример #1
0
CFX_MapPtrToPtr::CAssoc* CFX_MapPtrToPtr::NewAssoc() {
  if (!m_pFreeList) {
    CFX_Plex* newBlock = CFX_Plex::Create(m_pBlocks, m_nBlockSize,
                                          sizeof(CFX_MapPtrToPtr::CAssoc));
    CFX_MapPtrToPtr::CAssoc* pAssoc =
        (CFX_MapPtrToPtr::CAssoc*)newBlock->data();
    pAssoc += m_nBlockSize - 1;
    for (int i = m_nBlockSize - 1; i >= 0; i--, pAssoc--) {
      pAssoc->pNext = m_pFreeList;
      m_pFreeList = pAssoc;
    }
  }
  CFX_MapPtrToPtr::CAssoc* pAssoc = m_pFreeList;
  m_pFreeList = m_pFreeList->pNext;
  m_nCount++;
  ASSERT(m_nCount > 0);
  pAssoc->key = 0;
  pAssoc->value = 0;
  return pAssoc;
}
Пример #2
0
CFX_PtrList::CNode* CFX_PtrList::NewNode(CFX_PtrList::CNode* pPrev,
                                         CFX_PtrList::CNode* pNext) {
  if (m_pNodeFree == NULL) {
    CFX_Plex* pNewBlock =
        CFX_Plex::Create(m_pBlocks, m_nBlockSize, sizeof(CNode));
    CNode* pNode = (CNode*)pNewBlock->data();
    pNode += m_nBlockSize - 1;
    for (int i = m_nBlockSize - 1; i >= 0; i--, pNode--) {
      pNode->pNext = m_pNodeFree;
      m_pNodeFree = pNode;
    }
  }
  ASSERT(m_pNodeFree != NULL);
  CFX_PtrList::CNode* pNode = m_pNodeFree;
  m_pNodeFree = m_pNodeFree->pNext;
  pNode->pPrev = pPrev;
  pNode->pNext = pNext;
  m_nCount++;
  ASSERT(m_nCount > 0);
  pNode->data = 0;
  return pNode;
}