summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/cxfa_node.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-11-27 19:36:26 +0000
committerChromium commit bot <commit-bot@chromium.org>2017-11-27 19:36:26 +0000
commit9a48fd1aabf105b168f5d8fc26549ae0d41d002e (patch)
tree846dd27b25365fa1fcb3b9c7a66574f1b5ae166f /xfa/fxfa/parser/cxfa_node.cpp
parente6ccf2578ae04c796a69f3596e4b4730a45da378 (diff)
downloadpdfium-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.cpp14
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,