From 591ed144f8dfe4b2915f01f1cc725f584d498a3f Mon Sep 17 00:00:00 2001 From: tsepez Date: Fri, 6 Jan 2017 10:29:49 -0800 Subject: Remove CFX_MapPtrToPtr and templates. All usage is now replaced with stl equivalents. Move one definition from fx_basic.h to where it's actually needed. Review-Url: https://codereview.chromium.org/2612773007 --- BUILD.gn | 3 - core/fxcrt/fx_basic.h | 102 ---------------------------- core/fxcrt/fx_basic_maps.cpp | 158 ------------------------------------------- core/fxcrt/fx_basic_plex.cpp | 26 ------- core/fxcrt/plex.h | 19 ------ xfa/fxfa/parser/xfa_object.h | 2 + 6 files changed, 2 insertions(+), 308 deletions(-) delete mode 100644 core/fxcrt/fx_basic_maps.cpp delete mode 100644 core/fxcrt/fx_basic_plex.cpp delete mode 100644 core/fxcrt/plex.h diff --git a/BUILD.gn b/BUILD.gn index b4627619f4..53236f50f2 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -730,7 +730,6 @@ static_library("fxcrt") { "core/fxcrt/fx_basic_coords.cpp", "core/fxcrt/fx_basic_gcc.cpp", "core/fxcrt/fx_basic_memmgr.cpp", - "core/fxcrt/fx_basic_plex.cpp", "core/fxcrt/fx_basic_utf.cpp", "core/fxcrt/fx_basic_util.cpp", "core/fxcrt/fx_basic_wstring.cpp", @@ -755,7 +754,6 @@ static_library("fxcrt") { "core/fxcrt/fxcrt_stream.cpp", "core/fxcrt/fxcrt_windows.cpp", "core/fxcrt/fxcrt_windows.h", - "core/fxcrt/plex.h", "core/fxcrt/xml_int.h", ] configs += [ ":pdfium_core_config" ] @@ -772,7 +770,6 @@ static_library("fxcrt") { "core/fxcrt/fx_arabic.cpp", "core/fxcrt/fx_arabic.h", "core/fxcrt/fx_arb.h", - "core/fxcrt/fx_basic_maps.cpp", ] } } diff --git a/core/fxcrt/fx_basic.h b/core/fxcrt/fx_basic.h index 3b09489d71..5adcf701c5 100644 --- a/core/fxcrt/fx_basic.h +++ b/core/fxcrt/fx_basic.h @@ -335,108 +335,6 @@ class CFX_FixedBufGrow { std::unique_ptr m_pGrowData; }; -#ifdef PDF_ENABLE_XFA -class CFX_MapPtrToPtr { - protected: - struct CAssoc { - CAssoc* pNext; - void* key; - void* value; - }; - - public: - explicit CFX_MapPtrToPtr(int nBlockSize = 10); - ~CFX_MapPtrToPtr(); - - int GetCount() const { return m_nCount; } - bool IsEmpty() const { return m_nCount == 0; } - - bool Lookup(void* key, void*& rValue) const; - - void* GetValueAt(void* key) const; - - void*& operator[](void* key); - - void SetAt(void* key, void* newValue) { (*this)[key] = newValue; } - - bool RemoveKey(void* key); - - void RemoveAll(); - - FX_POSITION GetStartPosition() const { - return m_nCount == 0 ? nullptr : (FX_POSITION)-1; - } - - void GetNextAssoc(FX_POSITION& rNextPosition, - void*& rKey, - void*& rValue) const; - - uint32_t GetHashTableSize() const { return m_nHashTableSize; } - - void InitHashTable(uint32_t hashSize, bool bAllocNow = true); - - protected: - CAssoc** m_pHashTable; - - uint32_t m_nHashTableSize; - - int m_nCount; - - CAssoc* m_pFreeList; - - struct CFX_Plex* m_pBlocks; - - int m_nBlockSize; - - uint32_t HashKey(void* key) const; - - CAssoc* NewAssoc(); - - void FreeAssoc(CAssoc* pAssoc); - - CAssoc* GetAssocAt(void* key, uint32_t& hash) const; -}; - -template -class CFX_MapPtrTemplate : public CFX_MapPtrToPtr { - public: - CFX_MapPtrTemplate() : CFX_MapPtrToPtr(10) {} - - bool Lookup(KeyType key, ValueType& rValue) const { - void* pValue = nullptr; - if (!CFX_MapPtrToPtr::Lookup((void*)(uintptr_t)key, pValue)) { - return false; - } - rValue = (ValueType)(uintptr_t)pValue; - return true; - } - - ValueType& operator[](KeyType key) { - return (ValueType&)CFX_MapPtrToPtr::operator[]((void*)(uintptr_t)key); - } - - void SetAt(KeyType key, ValueType newValue) { - CFX_MapPtrToPtr::SetAt((void*)(uintptr_t)key, (void*)(uintptr_t)newValue); - } - - bool RemoveKey(KeyType key) { - return CFX_MapPtrToPtr::RemoveKey((void*)(uintptr_t)key); - } - - void GetNextAssoc(FX_POSITION& rNextPosition, - KeyType& rKey, - ValueType& rValue) const { - void* pKey = nullptr; - void* pValue = nullptr; - CFX_MapPtrToPtr::GetNextAssoc(rNextPosition, pKey, pValue); - rKey = (KeyType)(uintptr_t)pKey; - rValue = (ValueType)(uintptr_t)pValue; - } -}; - -typedef void (*PD_CALLBACK_FREEDATA)(void* pData); -#endif // PDF_ENABLE_XFA - class CFX_BitStream { public: void Init(const uint8_t* pData, uint32_t dwSize); diff --git a/core/fxcrt/fx_basic_maps.cpp b/core/fxcrt/fx_basic_maps.cpp deleted file mode 100644 index 149951aa2e..0000000000 --- a/core/fxcrt/fx_basic_maps.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/fxcrt/fx_basic.h" -#include "core/fxcrt/plex.h" - -CFX_MapPtrToPtr::CFX_MapPtrToPtr(int nBlockSize) - : m_pHashTable(nullptr), - m_nHashTableSize(17), - m_nCount(0), - m_pFreeList(nullptr), - m_pBlocks(nullptr), - m_nBlockSize(nBlockSize) { - ASSERT(m_nBlockSize > 0); -} - -void CFX_MapPtrToPtr::RemoveAll() { - FX_Free(m_pHashTable); - m_pHashTable = nullptr; - m_nCount = 0; - m_pFreeList = nullptr; - if (m_pBlocks) { - m_pBlocks->FreeDataChain(); - m_pBlocks = nullptr; - } -} - -CFX_MapPtrToPtr::~CFX_MapPtrToPtr() { - RemoveAll(); - ASSERT(m_nCount == 0); -} -uint32_t CFX_MapPtrToPtr::HashKey(void* key) const { - return ((uint32_t)(uintptr_t)key) >> 4; -} -void CFX_MapPtrToPtr::GetNextAssoc(FX_POSITION& rNextPosition, - void*& rKey, - void*& rValue) const { - ASSERT(m_pHashTable); - CAssoc* pAssocRet = (CAssoc*)rNextPosition; - ASSERT(pAssocRet); - if (pAssocRet == (CAssoc*)-1) { - for (uint32_t nBucket = 0; nBucket < m_nHashTableSize; nBucket++) { - pAssocRet = m_pHashTable[nBucket]; - if (pAssocRet) - break; - } - ASSERT(pAssocRet); - } - CAssoc* pAssocNext = pAssocRet->pNext; - for (uint32_t nBucket = (HashKey(pAssocRet->key) % m_nHashTableSize) + 1; - nBucket < m_nHashTableSize && !pAssocNext; nBucket++) { - pAssocNext = m_pHashTable[nBucket]; - } - rNextPosition = (FX_POSITION)pAssocNext; - rKey = pAssocRet->key; - rValue = pAssocRet->value; -} -bool CFX_MapPtrToPtr::Lookup(void* key, void*& rValue) const { - uint32_t nHash; - CAssoc* pAssoc = GetAssocAt(key, nHash); - if (!pAssoc) { - return false; - } - rValue = pAssoc->value; - return true; -} - -void* CFX_MapPtrToPtr::GetValueAt(void* key) const { - uint32_t nHash; - CAssoc* pAssoc = GetAssocAt(key, nHash); - return pAssoc ? pAssoc->value : nullptr; -} - -void*& CFX_MapPtrToPtr::operator[](void* key) { - uint32_t nHash; - CAssoc* pAssoc = GetAssocAt(key, nHash); - if (!pAssoc) { - if (!m_pHashTable) - InitHashTable(m_nHashTableSize); - pAssoc = NewAssoc(); - pAssoc->key = key; - pAssoc->pNext = m_pHashTable[nHash]; - m_pHashTable[nHash] = pAssoc; - } - return pAssoc->value; -} -CFX_MapPtrToPtr::CAssoc* CFX_MapPtrToPtr::GetAssocAt(void* key, - uint32_t& nHash) const { - nHash = HashKey(key) % m_nHashTableSize; - if (!m_pHashTable) { - return nullptr; - } - CAssoc* pAssoc; - for (pAssoc = m_pHashTable[nHash]; pAssoc; pAssoc = pAssoc->pNext) { - if (pAssoc->key == key) - return pAssoc; - } - return nullptr; -} -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; -} -void CFX_MapPtrToPtr::InitHashTable(uint32_t nHashSize, bool bAllocNow) { - ASSERT(m_nCount == 0); - ASSERT(nHashSize > 0); - FX_Free(m_pHashTable); - m_pHashTable = nullptr; - if (bAllocNow) { - m_pHashTable = FX_Alloc(CAssoc*, nHashSize); - } - m_nHashTableSize = nHashSize; -} -bool CFX_MapPtrToPtr::RemoveKey(void* key) { - if (!m_pHashTable) { - return false; - } - CAssoc** ppAssocPrev; - ppAssocPrev = &m_pHashTable[HashKey(key) % m_nHashTableSize]; - CAssoc* pAssoc; - for (pAssoc = *ppAssocPrev; pAssoc; pAssoc = pAssoc->pNext) { - if (pAssoc->key == key) { - *ppAssocPrev = pAssoc->pNext; - FreeAssoc(pAssoc); - return true; - } - ppAssocPrev = &pAssoc->pNext; - } - return false; -} -void CFX_MapPtrToPtr::FreeAssoc(CFX_MapPtrToPtr::CAssoc* pAssoc) { - pAssoc->pNext = m_pFreeList; - m_pFreeList = pAssoc; - m_nCount--; - ASSERT(m_nCount >= 0); - if (m_nCount == 0) { - RemoveAll(); - } -} diff --git a/core/fxcrt/fx_basic_plex.cpp b/core/fxcrt/fx_basic_plex.cpp deleted file mode 100644 index cb6fde6ca0..0000000000 --- a/core/fxcrt/fx_basic_plex.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/fxcrt/fx_memory.h" -#include "core/fxcrt/plex.h" - -CFX_Plex* CFX_Plex::Create(CFX_Plex*& pHead, - uint32_t nMax, - uint32_t cbElement) { - CFX_Plex* p = - (CFX_Plex*)FX_Alloc(uint8_t, sizeof(CFX_Plex) + nMax * cbElement); - p->pNext = pHead; - pHead = p; - return p; -} -void CFX_Plex::FreeDataChain() { - CFX_Plex* p = this; - while (p) { - CFX_Plex* old = p; - p = p->pNext; - FX_Free(old); - } -} diff --git a/core/fxcrt/plex.h b/core/fxcrt/plex.h deleted file mode 100644 index 8d00ef569e..0000000000 --- a/core/fxcrt/plex.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_FXCRT_PLEX_H_ -#define CORE_FXCRT_PLEX_H_ - -#include "core/fxcrt/fx_system.h" - -struct CFX_Plex { - CFX_Plex* pNext; - void* data() { return this + 1; } - static CFX_Plex* Create(CFX_Plex*& head, uint32_t nMax, uint32_t cbElement); - void FreeDataChain(); -}; - -#endif // CORE_FXCRT_PLEX_H_ diff --git a/xfa/fxfa/parser/xfa_object.h b/xfa/fxfa/parser/xfa_object.h index 8be19ec2e1..cc116505e0 100644 --- a/xfa/fxfa/parser/xfa_object.h +++ b/xfa/fxfa/parser/xfa_object.h @@ -128,6 +128,8 @@ enum XFA_SOM_MESSAGETYPE { using CXFA_NodeArray = CFX_ArrayTemplate; using CXFA_NodeStack = CFX_StackTemplate; using CXFA_NodeSet = std::unordered_set; + +typedef void (*PD_CALLBACK_FREEDATA)(void* pData); typedef void (*PD_CALLBACK_DUPLICATEDATA)(void*& pData); struct XFA_MAPDATABLOCKCALLBACKINFO { -- cgit v1.2.3