summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-07-23 18:03:44 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-07-23 18:03:44 +0000
commit721f5fa5061f2dec8282b7bde48c9d4721208b7a (patch)
treeef73827b16830ae0fe3f535783aa34b194f8257a /xfa
parent3ba611a551efb23518ac16f8bb23ab5ac4ca2c59 (diff)
downloadpdfium-721f5fa5061f2dec8282b7bde48c9d4721208b7a.tar.xz
Replace CFXJSE_HostObject::type_ with polymorphic conversion methods
More foolproof technique, and saves one word in every instance at a cost of two pointers in every subclass vtable. Change-Id: Ied4f91d4d203b5e6d83abe751159eb7e55489bb5 Reviewed-on: https://pdfium-review.googlesource.com/38530 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fxfa/parser/cxfa_object.cpp9
-rw-r--r--xfa/fxfa/parser/cxfa_object.h3
2 files changed, 9 insertions, 3 deletions
diff --git a/xfa/fxfa/parser/cxfa_object.cpp b/xfa/fxfa/parser/cxfa_object.cpp
index a716c651f5..920e33860e 100644
--- a/xfa/fxfa/parser/cxfa_object.cpp
+++ b/xfa/fxfa/parser/cxfa_object.cpp
@@ -22,15 +22,18 @@ CXFA_Object::CXFA_Object(CXFA_Document* pDocument,
XFA_Element elementType,
const WideStringView& elementName,
std::unique_ptr<CJX_Object> jsObject)
- : CFXJSE_HostObject(kXFA),
- m_pDocument(pDocument),
+ : m_pDocument(pDocument),
m_objectType(objectType),
m_elementType(elementType),
m_elementNameHash(FX_HashCode_GetW(elementName, false)),
m_elementName(elementName),
m_pJSObject(std::move(jsObject)) {}
-CXFA_Object::~CXFA_Object() {}
+CXFA_Object::~CXFA_Object() = default;
+
+CXFA_Object* CXFA_Object::AsCXFAObject() {
+ return this;
+}
WideString CXFA_Object::GetSOMExpression() {
CFXJSE_Engine* pScriptContext = m_pDocument->GetScriptContext();
diff --git a/xfa/fxfa/parser/cxfa_object.h b/xfa/fxfa/parser/cxfa_object.h
index 20412dcbf7..023516a05e 100644
--- a/xfa/fxfa/parser/cxfa_object.h
+++ b/xfa/fxfa/parser/cxfa_object.h
@@ -36,6 +36,9 @@ class CXFA_Object : public CFXJSE_HostObject {
public:
~CXFA_Object() override;
+ // CFXJSE_HostObject:
+ CXFA_Object* AsCXFAObject() override;
+
CXFA_Document* GetDocument() const { return m_pDocument.Get(); }
XFA_ObjectType GetObjectType() const { return m_objectType; }