diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-11-27 19:36:26 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-11-27 19:36:26 +0000 |
commit | 9a48fd1aabf105b168f5d8fc26549ae0d41d002e (patch) | |
tree | 846dd27b25365fa1fcb3b9c7a66574f1b5ae166f /xfa/fxfa/parser/cxfa_node.cpp | |
parent | e6ccf2578ae04c796a69f3596e4b4730a45da378 (diff) | |
download | pdfium-9a48fd1aabf105b168f5d8fc26549ae0d41d002e.tar.xz |
Fold XFA_GetAttributeByName into CXFA_Node::NameToAttribute
This CL removes the xfa_utils helper and does the work directly in
CXFA_Node.
Change-Id: I4f7cac9cb6d2a53ac5627f50a2f066f79fc22a31
Reviewed-on: https://pdfium-review.googlesource.com/19290
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fxfa/parser/cxfa_node.cpp')
-rw-r--r-- | xfa/fxfa/parser/cxfa_node.cpp | 14 |
1 files changed, 11 insertions, 3 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, |