From df4f30eaaa469c3703118f89579d506209a49237 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 14 Dec 2017 20:51:03 +0000 Subject: Add types to the CXFA_Node::Get*{Child|Sibling}* methods This CL templates the various Get methods in CXFA_Node in order to return the correct node type. Change-Id: I4f50df6dd9213873deb8f8f262eaf579c6c4ca7d Reviewed-on: https://pdfium-review.googlesource.com/21230 Reviewed-by: Henrique Nakashima Commit-Queue: dsinclair --- xfa/fxfa/parser/cxfa_node.h | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'xfa/fxfa/parser/cxfa_node.h') diff --git a/xfa/fxfa/parser/cxfa_node.h b/xfa/fxfa/parser/cxfa_node.h index c2c7605e85..c9f1505f2e 100644 --- a/xfa/fxfa/parser/cxfa_node.h +++ b/xfa/fxfa/parser/cxfa_node.h @@ -183,12 +183,23 @@ class CXFA_Node : public CXFA_Object { CXFA_WidgetData* GetContainerWidgetData(); bool GetLocaleName(WideString& wsLocaleName); XFA_AttributeEnum GetIntact(); + CXFA_Node* GetFirstChildByName(const WideStringView& wsNodeName) const; CXFA_Node* GetFirstChildByName(uint32_t dwNodeNameHash) const; - CXFA_Node* GetFirstChildByClass(XFA_Element eType) const; + template + T* GetFirstChildByClass(XFA_Element eType) const { + return static_cast(GetFirstChildByClassInternal(eType)); + } CXFA_Node* GetNextSameNameSibling(uint32_t dwNodeNameHash) const; - CXFA_Node* GetNextSameNameSibling(const WideStringView& wsNodeName) const; - CXFA_Node* GetNextSameClassSibling(XFA_Element eType) const; + template + T* GetNextSameNameSibling(const WideStringView& wsNodeName) const { + return static_cast(GetNextSameNameSiblingInternal(wsNodeName)); + } + template + T* GetNextSameClassSibling(XFA_Element eType) const { + return static_cast(GetNextSameClassSiblingInternal(eType)); + } + int32_t GetNodeSameNameIndex() const; int32_t GetNodeSameClassIndex() const; CXFA_Node* GetInstanceMgrOfSubform(); @@ -233,6 +244,10 @@ class CXFA_Node : public CXFA_Object { CXFA_Node* GetChildInternal(int32_t index, XFA_Element eType, bool bOnlyChild); + CXFA_Node* GetFirstChildByClassInternal(XFA_Element eType) const; + CXFA_Node* GetNextSameNameSiblingInternal( + const WideStringView& wsNodeName) const; + CXFA_Node* GetNextSameClassSiblingInternal(XFA_Element eType) const; const PropertyData* const m_Properties; const AttributeData* const m_Attributes; -- cgit v1.2.3