Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Side by Side Diff: xfa/fde/css/fde_cssdeclaration.cpp

Issue 1990363003: Use std::unordered_map for CFDE_CSSStyleSheet::m_StringCache (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fde/css/fde_cssdeclaration.h ('k') | xfa/fde/css/fde_cssstylesheet.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fde/css/fde_cssdeclaration.h" 7 #include "xfa/fde/css/fde_cssdeclaration.h"
8 8
9 #include "core/fxcrt/include/fx_ext.h" 9 #include "core/fxcrt/include/fx_ext.h"
10 #include "xfa/fgas/crt/fgas_system.h" 10 #include "xfa/fgas/crt/fgas_system.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 } 46 }
47 wsName = pProperty->pwsName; 47 wsName = pProperty->pwsName;
48 wsValue = pProperty->pwsValue; 48 wsValue = pProperty->pwsValue;
49 pos = (FX_POSITION)pProperty->pNext; 49 pos = (FX_POSITION)pProperty->pNext;
50 } 50 }
51 const FX_WCHAR* CFDE_CSSDeclaration::CopyToLocal( 51 const FX_WCHAR* CFDE_CSSDeclaration::CopyToLocal(
52 const FDE_CSSPROPERTYARGS* pArgs, 52 const FDE_CSSPROPERTYARGS* pArgs,
53 const FX_WCHAR* pszValue, 53 const FX_WCHAR* pszValue,
54 int32_t iValueLen) { 54 int32_t iValueLen) {
55 ASSERT(iValueLen > 0); 55 ASSERT(iValueLen > 0);
56 CFX_MapPtrToPtr* pCache = pArgs->pStringCache; 56 std::unordered_map<uint32_t, FX_WCHAR*>* pCache = pArgs->pStringCache;
57 void* pKey = NULL; 57 uint32_t key = 0;
58 if (pCache) { 58 if (pCache) {
59 void* pszCached = NULL; 59 key = FX_HashCode_GetW(CFX_WideStringC(pszValue, iValueLen), false);
60 pKey = (void*)(uintptr_t)FX_HashCode_GetW( 60 auto it = pCache->find(key);
61 CFX_WideStringC(pszValue, iValueLen), false); 61 if (it != pCache->end())
62 if (pCache->Lookup(pKey, pszCached)) { 62 return it->second;
63 return (const FX_WCHAR*)pszCached;
64 }
65 } 63 }
66 FX_WCHAR* psz = 64 FX_WCHAR* psz =
67 (FX_WCHAR*)pArgs->pStaticStore->Alloc((iValueLen + 1) * sizeof(FX_WCHAR)); 65 (FX_WCHAR*)pArgs->pStaticStore->Alloc((iValueLen + 1) * sizeof(FX_WCHAR));
68 if (psz == NULL) {
69 return NULL;
70 }
71 FXSYS_wcsncpy(psz, pszValue, iValueLen); 66 FXSYS_wcsncpy(psz, pszValue, iValueLen);
72 psz[iValueLen] = '\0'; 67 psz[iValueLen] = '\0';
73 if (pCache) { 68 if (pCache)
74 pCache->SetAt(pKey, psz); 69 (*pCache)[key] = psz;
75 } 70
76 return psz; 71 return psz;
77 } 72 }
78 IFDE_CSSPrimitiveValue* CFDE_CSSDeclaration::NewNumberValue( 73 IFDE_CSSPrimitiveValue* CFDE_CSSDeclaration::NewNumberValue(
79 IFX_MemoryAllocator* pStaticStore, 74 IFX_MemoryAllocator* pStaticStore,
80 FDE_CSSPRIMITIVETYPE eUnit, 75 FDE_CSSPRIMITIVETYPE eUnit,
81 FX_FLOAT fValue) const { 76 FX_FLOAT fValue) const {
82 static CFDE_CSSPrimitiveValue s_ZeroValue(FDE_CSSPRIMITIVETYPE_Number, 0.0f); 77 static CFDE_CSSPrimitiveValue s_ZeroValue(FDE_CSSPRIMITIVETYPE_Number, 0.0f);
83 if (eUnit == FDE_CSSPRIMITIVETYPE_Number && FXSYS_fabs(fValue) < 0.001f) { 78 if (eUnit == FDE_CSSPRIMITIVETYPE_Number && FXSYS_fabs(fValue) < 0.001f) {
84 return &s_ZeroValue; 79 return &s_ZeroValue;
85 } 80 }
(...skipping 1284 matching lines...) Expand 10 before | Expand all | Expand 10 after
1370 return FALSE; 1365 return FALSE;
1371 } else if (pOverflowY == NULL) { 1366 } else if (pOverflowY == NULL) {
1372 pOverflowY = NewEnumValue(pStaticStore, pOverflowX->GetEnum()); 1367 pOverflowY = NewEnumValue(pStaticStore, pOverflowX->GetEnum());
1373 } 1368 }
1374 AddPropertyHolder(pStaticStore, FDE_CSSPROPERTY_OverflowX, pOverflowX, 1369 AddPropertyHolder(pStaticStore, FDE_CSSPROPERTY_OverflowX, pOverflowX,
1375 bImportant); 1370 bImportant);
1376 AddPropertyHolder(pStaticStore, FDE_CSSPROPERTY_OverflowY, pOverflowY, 1371 AddPropertyHolder(pStaticStore, FDE_CSSPROPERTY_OverflowY, pOverflowY,
1377 bImportant); 1372 bImportant);
1378 return TRUE; 1373 return TRUE;
1379 } 1374 }
OLDNEW
« no previous file with comments | « xfa/fde/css/fde_cssdeclaration.h ('k') | xfa/fde/css/fde_cssstylesheet.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698