Move definition of XFA_SCRIPTATTRIBUTEINFO into cjx_object.h.
This allows compilers targeting the MS ABI to select the correct inheritance
model for the member function pointer type XFA_ATTRIBUTE_CALLBACK using the
complete type of CJX_Object. It will allow us to enable the new Clang flag
-fcomplete-member-pointers globally.
Bug: chromium:847724
Change-Id: I90cedde8c5355e5eb896a93f0e43e6a1e1d09dbc
Reviewed-on: https://pdfium-review.googlesource.com/35190
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/xfa/cjx_object.h b/fxjs/xfa/cjx_object.h
index 1c5e405..44df6c4 100644
--- a/fxjs/xfa/cjx_object.h
+++ b/fxjs/xfa/cjx_object.h
@@ -22,6 +22,7 @@
class CFXJSE_Value;
class CFX_V8;
+class CJX_Object;
class CXFA_CalcData;
class CXFA_Document;
class CXFA_LayoutItem;
@@ -285,4 +286,16 @@
size_t calc_recursion_count_ = 0;
};
+typedef void (CJX_Object::*XFA_ATTRIBUTE_CALLBACK)(CFXJSE_Value* pValue,
+ bool bSetting,
+ XFA_Attribute eAttribute);
+
+struct XFA_SCRIPTATTRIBUTEINFO {
+ uint32_t uHash;
+ const wchar_t* pName;
+ XFA_ATTRIBUTE_CALLBACK callback;
+ XFA_Attribute attribute;
+ XFA_ScriptType eValueType;
+};
+
#endif // FXJS_XFA_CJX_OBJECT_H_
diff --git a/xfa/fxfa/fxfa_basic.h b/xfa/fxfa/fxfa_basic.h
index d040bb3..78392d5 100644
--- a/xfa/fxfa/fxfa_basic.h
+++ b/xfa/fxfa/fxfa_basic.h
@@ -9,9 +9,9 @@
#include "fxjs/fxjse.h"
-class CJX_Object;
class CXFA_Measurement;
enum class XFA_ObjectType;
+struct XFA_SCRIPTATTRIBUTEINFO;
enum XFA_HashCode : uint32_t {
XFA_HASHCODE_None = 0,
@@ -964,20 +964,9 @@
Unknown = 255,
};
-typedef void (CJX_Object::*XFA_ATTRIBUTE_CALLBACK)(CFXJSE_Value* pValue,
- bool bSetting,
- XFA_Attribute eAttribute);
enum class XFA_ScriptType : uint8_t {
Basic,
Object,
};
-struct XFA_SCRIPTATTRIBUTEINFO {
- uint32_t uHash;
- const wchar_t* pName;
- XFA_ATTRIBUTE_CALLBACK callback;
- XFA_Attribute attribute;
- XFA_ScriptType eValueType;
-};
-
#endif // XFA_FXFA_FXFA_BASIC_H_