Index: xfa/src/fdp/src/css/fde_csscache.cpp |
diff --git a/xfa/src/fdp/src/css/fde_csscache.cpp b/xfa/src/fdp/src/css/fde_csscache.cpp |
index 8c5668047ffcab54381aaadd73cabe81365ae4a9..b04758649f91eff81da82321c8ea4cc7be749e9f 100644 |
--- a/xfa/src/fdp/src/css/fde_csscache.cpp |
+++ b/xfa/src/fdp/src/css/fde_csscache.cpp |
@@ -17,21 +17,16 @@ _FDE_CSSCACHEITEM::~_FDE_CSSCACHEITEM() { |
IFDE_CSSStyleSheetCache* IFDE_CSSStyleSheetCache::Create() { |
return new CFDE_CSSStyleSheetCache; |
} |
+ |
CFDE_CSSStyleSheetCache::CFDE_CSSStyleSheetCache() |
: m_pFixedStore(NULL), m_iMaxItems(5) {} |
+ |
CFDE_CSSStyleSheetCache::~CFDE_CSSStyleSheetCache() { |
- FX_POSITION pos = m_Stylesheets.GetStartPosition(); |
- if (pos != NULL) { |
- CFX_ByteString szKey; |
- void* pValue; |
- while (pos != NULL) { |
- m_Stylesheets.GetNextAssoc(pos, szKey, pValue); |
- FDE_DeleteWith(FDE_CSSCACHEITEM, m_pFixedStore, |
- (FDE_LPCSSCACHEITEM)pValue); |
- } |
- m_Stylesheets.RemoveAll(); |
+ for (const auto& pair : m_Stylesheets) { |
+ FDE_DeleteWith(FDE_CSSCACHEITEM, m_pFixedStore, pair.second); |
} |
- if (m_pFixedStore != NULL) { |
+ m_Stylesheets.clear(); |
+ if (m_pFixedStore) { |
m_pFixedStore->Release(); |
} |
} |
@@ -43,9 +38,9 @@ void CFDE_CSSStyleSheetCache::AddStyleSheet(const CFX_ByteStringC& szKey, |
FX_ALLOCTYPE_Fixed, FX_MAX(10, m_iMaxItems), sizeof(FDE_CSSCACHEITEM)); |
FXSYS_assert(m_pFixedStore != NULL); |
} |
- void* pValue = NULL; |
- if (m_Stylesheets.Lookup(szKey, pValue)) { |
- FDE_LPCSSCACHEITEM pItem = (FDE_LPCSSCACHEITEM)pValue; |
+ auto it = m_Stylesheets.find(szKey); |
+ if (it != m_Stylesheets.end()) { |
+ FDE_LPCSSCACHEITEM pItem = it->second; |
if (pItem->pStylesheet != pStyleSheet) { |
pItem->pStylesheet->Release(); |
pItem->pStylesheet = pStyleSheet; |
@@ -53,56 +48,48 @@ void CFDE_CSSStyleSheetCache::AddStyleSheet(const CFX_ByteStringC& szKey, |
pItem->dwActivity = 0; |
} |
} else { |
- while (m_Stylesheets.GetCount() >= m_iMaxItems) { |
+ while (static_cast<int32_t>(m_Stylesheets.size()) >= m_iMaxItems) { |
RemoveLowestActivityItem(); |
} |
- FDE_LPCSSCACHEITEM pItem = |
+ m_Stylesheets[szKey] = |
FDE_NewWith(m_pFixedStore) FDE_CSSCACHEITEM(pStyleSheet); |
- FXSYS_assert(pItem != NULL); |
- m_Stylesheets.SetAt(szKey, pItem); |
} |
} |
IFDE_CSSStyleSheet* CFDE_CSSStyleSheetCache::GetStyleSheet( |
const CFX_ByteStringC& szKey) const { |
- void* pValue = NULL; |
- if (m_Stylesheets.Lookup(szKey, pValue)) { |
- FDE_LPCSSCACHEITEM pItem = (FDE_LPCSSCACHEITEM)pValue; |
- pItem->dwActivity++; |
- pItem->pStylesheet->AddRef(); |
- return pItem->pStylesheet; |
+ auto it = m_Stylesheets.find(szKey); |
+ if (it == m_Stylesheets.end()) { |
+ return nullptr; |
} |
- return NULL; |
+ FDE_LPCSSCACHEITEM pItem = it->second; |
+ pItem->dwActivity++; |
+ pItem->pStylesheet->AddRef(); |
+ return pItem->pStylesheet; |
} |
void CFDE_CSSStyleSheetCache::RemoveStyleSheet(const CFX_ByteStringC& szKey) { |
- void* pValue = NULL; |
- if (!m_Stylesheets.Lookup(szKey, pValue)) { |
+ auto it = m_Stylesheets.find(szKey); |
+ if (it == m_Stylesheets.end()) { |
return; |
} |
- FDE_DeleteWith(FDE_CSSCACHEITEM, m_pFixedStore, (FDE_LPCSSCACHEITEM)pValue); |
- m_Stylesheets.RemoveKey(szKey); |
+ FDE_DeleteWith(FDE_CSSCACHEITEM, m_pFixedStore, it->second); |
+ m_Stylesheets.erase(it); |
} |
void CFDE_CSSStyleSheetCache::RemoveLowestActivityItem() { |
- FX_POSITION pos = m_Stylesheets.GetStartPosition(); |
- CFX_ByteString szKey; |
- void* pValue; |
- FDE_LPCSSCACHEITEM pItem = NULL; |
- CFX_ByteString szItem; |
- while (pos != NULL) { |
- m_Stylesheets.GetNextAssoc(pos, szKey, pValue); |
- switch (szKey.GetID()) { |
+ auto found = m_Stylesheets.end(); |
+ for (auto it = m_Stylesheets.begin(); it != m_Stylesheets.end(); ++it) { |
+ switch (it->first.GetID()) { |
case FXBSTR_ID('#', 'U', 'S', 'E'): |
case FXBSTR_ID('#', 'A', 'G', 'E'): |
continue; |
} |
- FDE_LPCSSCACHEITEM p = (FDE_LPCSSCACHEITEM)pValue; |
- if (pItem == NULL || pItem->dwActivity > p->dwActivity) { |
- szItem = szKey; |
- pItem = p; |
+ if (found == m_Stylesheets.end() || |
+ it->second->dwActivity > found->second->dwActivity) { |
+ found = it; |
} |
} |
- if (pItem != NULL) { |
- FDE_DeleteWith(FDE_CSSCACHEITEM, m_pFixedStore, pItem); |
- m_Stylesheets.RemoveKey(szItem); |
+ if (found != m_Stylesheets.end()) { |
+ FDE_DeleteWith(FDE_CSSCACHEITEM, m_pFixedStore, found->second); |
+ m_Stylesheets.erase(found); |
} |
} |
_FDE_CSSTAGCACHE::_FDE_CSSTAGCACHE(_FDE_CSSTAGCACHE* parent, |