summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/xfa_resolvenode_rs.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/parser/xfa_resolvenode_rs.h')
-rw-r--r--xfa/fxfa/parser/xfa_resolvenode_rs.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/xfa/fxfa/parser/xfa_resolvenode_rs.h b/xfa/fxfa/parser/xfa_resolvenode_rs.h
new file mode 100644
index 0000000000..809ba95ff6
--- /dev/null
+++ b/xfa/fxfa/parser/xfa_resolvenode_rs.h
@@ -0,0 +1,68 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef XFA_FXFA_PARSER_XFA_RESOLVENODE_RS_H_
+#define XFA_FXFA_PARSER_XFA_RESOLVENODE_RS_H_
+
+#include "fxjs/include/cfxjse_value.h"
+#include "xfa/fxfa/include/fxfa.h"
+#include "xfa/fxfa/parser/cxfa_valuearray.h"
+
+#define XFA_RESOLVENODE_Children 0x0001
+#define XFA_RESOLVENODE_Attributes 0x0004
+#define XFA_RESOLVENODE_Properties 0x0008
+#define XFA_RESOLVENODE_Siblings 0x0020
+#define XFA_RESOLVENODE_Parent 0x0040
+#define XFA_RESOLVENODE_AnyChild 0x0080
+#define XFA_RESOLVENODE_ALL 0x0100
+#define XFA_RESOLVENODE_CreateNode 0x0400
+#define XFA_RESOLVENODE_Bind 0x0800
+#define XFA_RESOLVENODE_BindNew 0x1000
+
+enum XFA_SCRIPTLANGTYPE {
+ XFA_SCRIPTLANGTYPE_Formcalc = XFA_SCRIPTTYPE_Formcalc,
+ XFA_SCRIPTLANGTYPE_Javascript = XFA_SCRIPTTYPE_Javascript,
+ XFA_SCRIPTLANGTYPE_Unkown = XFA_SCRIPTTYPE_Unkown,
+};
+
+enum XFA_RESOVENODE_RSTYPE {
+ XFA_RESOVENODE_RSTYPE_Nodes,
+ XFA_RESOVENODE_RSTYPE_Attribute,
+ XFA_RESOLVENODE_RSTYPE_CreateNodeOne,
+ XFA_RESOLVENODE_RSTYPE_CreateNodeAll,
+ XFA_RESOLVENODE_RSTYPE_CreateNodeMidAll,
+ XFA_RESOVENODE_RSTYPE_ExistNodes,
+};
+
+struct XFA_RESOLVENODE_RS {
+ XFA_RESOLVENODE_RS();
+ ~XFA_RESOLVENODE_RS();
+
+ int32_t GetAttributeResult(CXFA_ValueArray& valueArray) const {
+ if (pScriptAttribute && pScriptAttribute->eValueType == XFA_SCRIPT_Object) {
+ v8::Isolate* pIsolate = valueArray.m_pIsolate;
+ for (int32_t i = 0; i < nodes.GetSize(); i++) {
+ std::unique_ptr<CFXJSE_Value> pValue(new CFXJSE_Value(pIsolate));
+ (nodes[i]->*(pScriptAttribute->lpfnCallback))(
+ pValue.get(), FALSE, (XFA_ATTRIBUTE)pScriptAttribute->eAttribute);
+ valueArray.Add(pValue.release());
+ }
+ }
+ return valueArray.GetSize();
+ }
+
+ CXFA_ObjArray nodes;
+ XFA_RESOVENODE_RSTYPE dwFlags;
+ const XFA_SCRIPTATTRIBUTEINFO* pScriptAttribute;
+};
+
+inline XFA_RESOLVENODE_RS::XFA_RESOLVENODE_RS()
+ : dwFlags(XFA_RESOVENODE_RSTYPE_Nodes), pScriptAttribute(nullptr) {}
+
+inline XFA_RESOLVENODE_RS::~XFA_RESOLVENODE_RS() {
+ nodes.RemoveAll();
+}
+#endif // XFA_FXFA_PARSER_XFA_RESOLVENODE_RS_H_