Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cfxjse_value.h
Go to the documentation of this file.
1// Copyright 2014 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef FXJS_XFA_CFXJSE_VALUE_H_
8#define FXJS_XFA_CFXJSE_VALUE_H_
9
10#include <stdint.h>
11
12#include <memory>
13#include <vector>
14
15#include "core/fxcrt/fx_string.h"
16#include "core/fxcrt/unowned_ptr.h"
17#include "third_party/base/check.h"
18#include "v8/include/v8-forward.h"
19#include "v8/include/v8-persistent-handle.h"
20
21class CFXJSE_Class;
23
25 public:
27 CFXJSE_Value(v8::Isolate* pIsolate, v8::Local<v8::Value> value);
29
30 bool IsEmpty() const;
31 bool IsUndefined(v8::Isolate* pIsolate) const;
32 bool IsNull(v8::Isolate* pIsolate) const;
33 bool IsBoolean(v8::Isolate* pIsolate) const;
34 bool IsString(v8::Isolate* pIsolate) const;
35 bool IsNumber(v8::Isolate* pIsolate) const;
36 bool IsInteger(v8::Isolate* pIsolate) const;
37 bool IsObject(v8::Isolate* pIsolate) const;
38 bool IsArray(v8::Isolate* pIsolate) const;
39 bool IsFunction(v8::Isolate* pIsolate) const;
40 bool ToBoolean(v8::Isolate* pIsolate) const;
41 float ToFloat(v8::Isolate* pIsolate) const;
42 double ToDouble(v8::Isolate* pIsolate) const;
43 int32_t ToInteger(v8::Isolate* pIsolate) const;
44 ByteString ToString(v8::Isolate* pIsolate) const;
45 WideString ToWideString(v8::Isolate* pIsolate) const {
46 return WideString::FromUTF8(ToString(pIsolate).AsStringView());
47 }
48 CFXJSE_HostObject* ToHostObject(v8::Isolate* pIsolate) const;
49
50 void SetUndefined(v8::Isolate* pIsolate);
51 void SetNull(v8::Isolate* pIsolate);
52 void SetBoolean(v8::Isolate* pIsolate, bool bBoolean);
53 void SetInteger(v8::Isolate* pIsolate, int32_t nInteger);
54 void SetDouble(v8::Isolate* pIsolate, double dDouble);
55 void SetString(v8::Isolate* pIsolate, ByteStringView szString);
56 void SetFloat(v8::Isolate* pIsolate, float fFloat);
57
58 void SetHostObject(v8::Isolate* pIsolate,
59 CFXJSE_HostObject* pObject,
60 CFXJSE_Class* pClass);
61
62 void SetArray(v8::Isolate* pIsolate,
63 const std::vector<std::unique_ptr<CFXJSE_Value>>& values);
64
65 bool GetObjectProperty(v8::Isolate* pIsolate,
66 ByteStringView szPropName,
67 CFXJSE_Value* pPropValue);
68 bool SetObjectProperty(v8::Isolate* pIsolate,
69 ByteStringView szPropName,
70 CFXJSE_Value* pPropValue);
71 bool GetObjectPropertyByIdx(v8::Isolate* pIsolate,
72 uint32_t uPropIdx,
73 CFXJSE_Value* pPropValue);
74 void DeleteObjectProperty(v8::Isolate* pIsolate, ByteStringView szPropName);
75 bool SetObjectOwnProperty(v8::Isolate* pIsolate,
76 ByteStringView szPropName,
77 CFXJSE_Value* pPropValue);
78
79 // Return empty local on error.
81 v8::Isolate* pIsolate,
82 v8::Local<v8::Function> hOldFunction,
83 v8::Local<v8::Object> lpNewThis);
84
85 v8::Local<v8::Value> GetValue(v8::Isolate* pIsolate) const;
86 const v8::Global<v8::Value>& DirectGetValue() const { return m_hValue; }
87 void ForceSetValue(v8::Isolate* pIsolate, v8::Local<v8::Value> hValue) {
88 m_hValue.Reset(pIsolate, hValue);
89 }
90
91 private:
92 CFXJSE_Value(const CFXJSE_Value&) = delete;
93 CFXJSE_Value& operator=(const CFXJSE_Value&) = delete;
94
95 v8::Global<v8::Value> m_hValue;
96};
97
98#endif // FXJS_XFA_CFXJSE_VALUE_H_
void FXJSE_ClearObjectBinding(v8::Local< v8::Object > hJSObject)
CFXJSE_HostObject * FXJSE_RetrieveObjectBinding(v8::Local< v8::Value > hValue)
void FXJSE_UpdateObjectBinding(v8::Local< v8::Object > hObject, CFXJSE_HostObject *pNewBinding)
const FXJSE_CLASS_DESCRIPTOR kNormalClassDescriptor
const FXJSE_CLASS_DESCRIPTOR kGlobalClassDescriptor
const FXJSE_CLASS_DESCRIPTOR kVariablesClassDescriptor
const FXJSE_CLASS_DESCRIPTOR kFormCalcDescriptor
bool IsName(ByteStringView name) const
const CFXJSE_Context * GetContext() const
static CFXJSE_Class * Create(CFXJSE_Context *pContext, const FXJSE_CLASS_DESCRIPTOR *pClassDescriptor, bool bIsJSGlobal)
UnownedPtr< const CFXJSE_Context > const m_pContext
v8::Global< v8::FunctionTemplate > m_hTemplate
ByteString m_szClassName
CFXJSE_Class(const CFXJSE_Context *pContext)
v8::Local< v8::FunctionTemplate > GetTemplate(v8::Isolate *pIsolate)
UnownedPtr< const FXJSE_CLASS_DESCRIPTOR > m_pClassDescriptor
v8::Local< v8::Object > GetGlobalObject()
v8::Local< v8::Context > GetContext()
ExecutionResult ExecuteScript(ByteStringView bsScript, v8::Local< v8::Object > pNewThisObject)
void AddClass(std::unique_ptr< CFXJSE_Class > pClass)
static std::unique_ptr< CFXJSE_Context > Create(v8::Isolate *pIsolate, const FXJSE_CLASS_DESCRIPTOR *pGlobalClass, CFXJSE_HostObject *pGlobalObject, CXFA_ThisProxy *pProxy)
v8::Isolate * GetIsolate() const
CFXJSE_Class * GetClassByName(ByteStringView szName) const
CFXJSE_ScopeUtil_Context & operator=(const CFXJSE_ScopeUtil_Context &)=delete
CFXJSE_ScopeUtil_Context(const CFXJSE_ScopeUtil_Context &)=delete
CFXJSE_ScopeUtil_Context(CFXJSE_Context *pContext)
CFXJSE_ScopeUtil_IsolateHandleContext(CFXJSE_Context *pContext)
CFXJSE_ScopeUtil_IsolateHandleContext(const CFXJSE_ScopeUtil_IsolateHandleContext &)=delete
CFXJSE_ScopeUtil_IsolateHandleContext & operator=(const CFXJSE_ScopeUtil_IsolateHandleContext &)=delete
CFXJSE_ScopeUtil_IsolateHandleRootContext(const CFXJSE_ScopeUtil_IsolateHandleRootContext &)=delete
CFXJSE_ScopeUtil_IsolateHandleRootContext(v8::Isolate *pIsolate)
CFXJSE_ScopeUtil_IsolateHandleRootContext & operator=(const CFXJSE_ScopeUtil_IsolateHandleRootContext &)=delete
CFXJSE_ScopeUtil_IsolateHandle & operator=(const CFXJSE_ScopeUtil_IsolateHandle &)=delete
CFXJSE_ScopeUtil_IsolateHandle(const CFXJSE_ScopeUtil_IsolateHandle &)=delete
CFXJSE_ScopeUtil_IsolateHandle(v8::Isolate *pIsolate)
CFXJSE_ScopeUtil_RootContext & operator=(const CFXJSE_ScopeUtil_RootContext &)=delete
CFXJSE_ScopeUtil_RootContext(const CFXJSE_ScopeUtil_RootContext &)=delete
CFXJSE_ScopeUtil_RootContext(v8::Isolate *pIsolate)
bool IsBoolean(v8::Isolate *pIsolate) const
CFXJSE_Value(v8::Isolate *pIsolate, v8::Local< v8::Value > value)
void SetArray(v8::Isolate *pIsolate, const std::vector< std::unique_ptr< CFXJSE_Value > > &values)
CFXJSE_HostObject * ToHostObject(v8::Isolate *pIsolate) const
bool GetObjectProperty(v8::Isolate *pIsolate, ByteStringView szPropName, CFXJSE_Value *pPropValue)
bool SetObjectOwnProperty(v8::Isolate *pIsolate, ByteStringView szPropName, CFXJSE_Value *pPropValue)
WideString ToWideString(v8::Isolate *pIsolate) const
bool IsString(v8::Isolate *pIsolate) const
const v8::Global< v8::Value > & DirectGetValue() const
bool IsArray(v8::Isolate *pIsolate) const
void SetInteger(v8::Isolate *pIsolate, int32_t nInteger)
bool GetObjectPropertyByIdx(v8::Isolate *pIsolate, uint32_t uPropIdx, CFXJSE_Value *pPropValue)
void ForceSetValue(v8::Isolate *pIsolate, v8::Local< v8::Value > hValue)
int32_t ToInteger(v8::Isolate *pIsolate) const
bool SetObjectProperty(v8::Isolate *pIsolate, ByteStringView szPropName, CFXJSE_Value *pPropValue)
bool IsFunction(v8::Isolate *pIsolate) const
static v8::Local< v8::Function > NewBoundFunction(v8::Isolate *pIsolate, v8::Local< v8::Function > hOldFunction, v8::Local< v8::Object > lpNewThis)
bool IsUndefined(v8::Isolate *pIsolate) const
double ToDouble(v8::Isolate *pIsolate) const
bool IsObject(v8::Isolate *pIsolate) const
void SetDouble(v8::Isolate *pIsolate, double dDouble)
bool IsNull(v8::Isolate *pIsolate) const
void SetFloat(v8::Isolate *pIsolate, float fFloat)
void SetString(v8::Isolate *pIsolate, ByteStringView szString)
bool IsEmpty() const
ByteString ToString(v8::Isolate *pIsolate) const
void SetNull(v8::Isolate *pIsolate)
void DeleteObjectProperty(v8::Isolate *pIsolate, ByteStringView szPropName)
void SetHostObject(v8::Isolate *pIsolate, CFXJSE_HostObject *pObject, CFXJSE_Class *pClass)
float ToFloat(v8::Isolate *pIsolate) const
bool ToBoolean(v8::Isolate *pIsolate) const
void SetUndefined(v8::Isolate *pIsolate)
v8::Local< v8::Value > GetValue(v8::Isolate *pIsolate) const
bool IsInteger(v8::Isolate *pIsolate) const
void SetBoolean(v8::Isolate *pIsolate, bool bBoolean)
bool IsNumber(v8::Isolate *pIsolate) const
bool HasReturn() const
Definition cjs_result.h:44
bool HasError() const
Definition cjs_result.h:41
static ByteString Format(const char *pFormat,...)
FXJSE_ClassPropType
Definition fxjse.h:31
Definition fxv8.h:22
void ThrowExceptionHelper(v8::Isolate *pIsolate, WideStringView str)
Definition fxv8.cpp:333
const char kClassTag[]
Definition fxjse.cpp:18
const char kFuncTag[]
Definition fxjse.cpp:17
std::unique_ptr< CFXJSE_Value > value
ExecutionResult & operator=(ExecutionResult &&that) noexcept
ExecutionResult(ExecutionResult &&that) noexcept
ExecutionResult(bool sts, std::unique_ptr< CFXJSE_Value > val)
FXJSE_PropTypeGetter dynPropTypeGetter
Definition fxjse.h:84
FXJSE_PropSetter dynPropSetter
Definition fxjse.h:86
const char * tag
Definition fxjse.h:80
FXJSE_MethodCallback dynMethodCall
Definition fxjse.h:87
const char * name
Definition fxjse.h:81
FXJSE_FuncCallback callbackProc
Definition fxjse.h:76
const char * tag
Definition fxjse.h:74