summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/cxfa_node.h
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-12-14 20:43:53 +0000
committerChromium commit bot <commit-bot@chromium.org>2017-12-14 20:43:53 +0000
commit51ef4a6ca3b4ae9b618cb1c96f84697a2bf4a2b1 (patch)
treea365a0c3f25fff2f6511fbc23fd0e4d6b8d4eada /xfa/fxfa/parser/cxfa_node.h
parent8489e901fb16fe508e23a36cd3eff93d8332c2a2 (diff)
downloadpdfium-51ef4a6ca3b4ae9b618cb1c96f84697a2bf4a2b1.tar.xz
Change CXFA_Node::GetChild to return proper types
Currently CXFA_Node::GetChild always returns a CXFA_Node* object. We know the type we want when we call GetChild, so this CL changes the code to add a template parameter to GetChild and return the correct CXFA_Node subtype for the desired element. Change-Id: I5aecf2e840504235dc246483abee48e0564841fe Reviewed-on: https://pdfium-review.googlesource.com/21210 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fxfa/parser/cxfa_node.h')
-rw-r--r--xfa/fxfa/parser/cxfa_node.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/xfa/fxfa/parser/cxfa_node.h b/xfa/fxfa/parser/cxfa_node.h
index 2b0b476d36..c2c7605e85 100644
--- a/xfa/fxfa/parser/cxfa_node.h
+++ b/xfa/fxfa/parser/cxfa_node.h
@@ -153,7 +153,12 @@ class CXFA_Node : public CXFA_Object {
void UpdateNameHash();
int32_t CountChildren(XFA_Element eType, bool bOnlyChild);
- CXFA_Node* GetChild(int32_t index, XFA_Element eType, bool bOnlyChild);
+
+ template <typename T>
+ T* GetChild(int32_t index, XFA_Element eType, bool bOnlyChild) {
+ return static_cast<T*>(GetChildInternal(index, eType, bOnlyChild));
+ }
+
int32_t InsertChild(int32_t index, CXFA_Node* pNode);
bool InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode);
bool RemoveChild(CXFA_Node* pNode, bool bNotify);
@@ -225,6 +230,9 @@ class CXFA_Node : public CXFA_Object {
void OnRemoved(bool bNotify);
pdfium::Optional<void*> GetDefaultValue(XFA_Attribute attr,
XFA_AttributeType eType) const;
+ CXFA_Node* GetChildInternal(int32_t index,
+ XFA_Element eType,
+ bool bOnlyChild);
const PropertyData* const m_Properties;
const AttributeData* const m_Attributes;