summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/cxfa_node.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-11-30 20:50:20 +0000
committerChromium commit bot <commit-bot@chromium.org>2017-11-30 20:50:20 +0000
commit0ae8e03cc2d310ba0ba19b878ea448f17a577cdb (patch)
treee52a04144fd4945e3c90aadaeb11f4892f52baa2 /xfa/fxfa/parser/cxfa_node.cpp
parent9a2267d2531f4e75a6bcafb48abacfefe8a4a555 (diff)
downloadpdfium-0ae8e03cc2d310ba0ba19b878ea448f17a577cdb.tar.xz
Create CXFA_Node::NameToAttributeEnum
This CL removes XFA_GetAttributeEnumByName and moves the functionality into CXFA_Node::NameToAttriuteEnum. Change-Id: Id1484103c62bf7728d5406c22fb9d83fc0e032e1 Reviewed-on: https://pdfium-review.googlesource.com/19791 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.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 99f0eea5a8..f24bddb990 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -141,6 +141,21 @@ WideString CXFA_Node::AttributeEnumToName(XFA_ATTRIBUTEENUM item) {
return g_XFAEnumData[static_cast<int32_t>(item)].pName;
}
+// static
+pdfium::Optional<XFA_ATTRIBUTEENUM> CXFA_Node::NameToAttributeEnum(
+ const WideStringView& name) {
+ if (name.IsEmpty())
+ return {};
+
+ auto* it = std::lower_bound(g_XFAEnumData, g_XFAEnumData + g_iXFAEnumCount,
+ FX_HashCode_GetW(name, false),
+ [](const XFA_ATTRIBUTEENUMINFO& arg,
+ uint32_t hash) { return arg.uHash < hash; });
+ if (it != g_XFAEnumData + g_iXFAEnumCount && name == it->pName)
+ return {it->eName};
+ return {};
+}
+
CXFA_Node::CXFA_Node(CXFA_Document* pDoc,
uint16_t ePacket,
uint32_t validPackets,