diff options
-rw-r--r-- | xfa/fxfa/parser/cxfa_node.cpp | 14 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_utils.cpp | 15 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_utils.h | 1 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_utils_unittest.cpp | 9 |
4 files changed, 11 insertions, 28 deletions
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp index 4402208900..ee2a6df071 100644 --- a/xfa/fxfa/parser/cxfa_node.cpp +++ b/xfa/fxfa/parser/cxfa_node.cpp @@ -145,10 +145,18 @@ WideString CXFA_Node::AttributeToName(XFA_Attribute attr) { // static XFA_Attribute CXFA_Node::NameToAttribute(const WideStringView& name) { - const XFA_ATTRIBUTEINFO* attr = XFA_GetAttributeByName(name); - if (!attr) + if (name.IsEmpty()) return XFA_Attribute::Unknown; - return attr->eName; + + auto* it = std::lower_bound(g_XFAAttributeData, + g_XFAAttributeData + g_iXFAAttributeCount, + FX_HashCode_GetW(name, false), + [](const XFA_ATTRIBUTEINFO& arg, uint32_t hash) { + return arg.uHash < hash; + }); + if (it != g_XFAAttributeData + g_iXFAAttributeCount && name == it->pName) + return it->eName; + return XFA_Attribute::Unknown; } CXFA_Node::CXFA_Node(CXFA_Document* pDoc, diff --git a/xfa/fxfa/parser/xfa_utils.cpp b/xfa/fxfa/parser/xfa_utils.cpp index 03b8943a1f..7fb5ff573d 100644 --- a/xfa/fxfa/parser/xfa_utils.cpp +++ b/xfa/fxfa/parser/xfa_utils.cpp @@ -268,21 +268,6 @@ bool XFA_GetAttributeDefaultValue(void*& pValue, return false; } -const XFA_ATTRIBUTEINFO* XFA_GetAttributeByName(const WideStringView& wsName) { - if (wsName.IsEmpty()) - return nullptr; - - auto* it = std::lower_bound(g_XFAAttributeData, - g_XFAAttributeData + g_iXFAAttributeCount, - FX_HashCode_GetW(wsName, false), - [](const XFA_ATTRIBUTEINFO& arg, uint32_t hash) { - return arg.uHash < hash; - }); - if (it != g_XFAAttributeData + g_iXFAAttributeCount && wsName == it->pName) - return it; - return nullptr; -} - const XFA_ATTRIBUTEINFO* XFA_GetAttributeByID(XFA_Attribute eName) { ASSERT(static_cast<uint8_t>(eName) < g_iXFAAttributeCount); return g_XFAAttributeData + static_cast<uint8_t>(eName); diff --git a/xfa/fxfa/parser/xfa_utils.h b/xfa/fxfa/parser/xfa_utils.h index 08092563e8..afc1076d35 100644 --- a/xfa/fxfa/parser/xfa_utils.h +++ b/xfa/fxfa/parser/xfa_utils.h @@ -54,7 +54,6 @@ bool XFA_GetAttributeDefaultValue(void*& pValue, XFA_Attribute eAttribute, XFA_AttributeType eType, uint32_t dwPacket); -const XFA_ATTRIBUTEINFO* XFA_GetAttributeByName(const WideStringView& wsName); const XFA_ATTRIBUTEINFO* XFA_GetAttributeByID(XFA_Attribute eName); const XFA_ATTRIBUTEENUMINFO* XFA_GetAttributeEnumByName( const WideStringView& wsName); diff --git a/xfa/fxfa/parser/xfa_utils_unittest.cpp b/xfa/fxfa/parser/xfa_utils_unittest.cpp index bd2c89d554..b27cdaa36e 100644 --- a/xfa/fxfa/parser/xfa_utils_unittest.cpp +++ b/xfa/fxfa/parser/xfa_utils_unittest.cpp @@ -23,15 +23,6 @@ TEST(XfaUtilsImpTest, XFA_MapRotation) { } } -TEST(XFAUtilsTest, GetAttributeByName) { - EXPECT_EQ(nullptr, XFA_GetAttributeByName(L"")); - EXPECT_EQ(nullptr, XFA_GetAttributeByName(L"nonesuch")); - EXPECT_EQ(XFA_Attribute::H, XFA_GetAttributeByName(L"h")->eName); - EXPECT_EQ(XFA_Attribute::Short, XFA_GetAttributeByName(L"short")->eName); - EXPECT_EQ(XFA_Attribute::DecipherOnly, - XFA_GetAttributeByName(L"decipherOnly")->eName); -} - TEST(XFAUtilsTest, GetAttributeEnumByName) { EXPECT_EQ(nullptr, XFA_GetAttributeEnumByName(L"")); EXPECT_EQ(nullptr, XFA_GetAttributeEnumByName(L"nonesuch")); |