Chromium Code Reviews| Index: fxjs/include/cfxjse_value.h |
| diff --git a/fxjs/include/cfxjse_value.h b/fxjs/include/cfxjse_value.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7bb2c2d2353e1bcdba32b51592ec606b84851f17 |
| --- /dev/null |
| +++ b/fxjs/include/cfxjse_value.h |
| @@ -0,0 +1,102 @@ |
| +// 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 FXJS_INCLUDE_CFXJSE_VALUE_H_ |
| +#define FXJS_INCLUDE_CFXJSE_VALUE_H_ |
| + |
| +#include "v8/include/v8.h" |
| + |
| +#include "core/fxcrt/include/fx_string.h" |
| +#include "core/fxcrt/include/fx_system.h" |
| +#include "fxjs/cfxjse_isolatetracker.h" |
| +#include "fxjs/cfxjse_runtimedata.h" |
| + |
| +class CFXJSE_Class; |
| +class CFXJSE_HostObject; |
| + |
| +class CFXJSE_Value { |
| + public: |
| + explicit CFXJSE_Value(v8::Isolate* pIsolate); |
| + ~CFXJSE_Value(); |
| + |
| + FX_BOOL IsUndefined() const; |
|
dsinclair
2016/07/11 20:18:03
I moved the implementation of these into the cpp f
Tom Sepez
2016/07/11 22:12:28
How heavyweight are these? If they have scopes an
dsinclair
2016/07/12 13:38:30
Yup, all have scopes:
FX_BOOL CFXJSE_Value::IsUnd
|
| + FX_BOOL IsNull() const; |
| + FX_BOOL IsBoolean() const; |
| + FX_BOOL IsString() const; |
| + FX_BOOL IsNumber() const; |
| + FX_BOOL IsInteger() const; |
| + FX_BOOL IsObject() const; |
| + FX_BOOL IsArray() const; |
| + FX_BOOL IsFunction() const; |
| + FX_BOOL IsDate() const; |
| + FX_BOOL ToBoolean() const; |
| + FX_FLOAT ToFloat() const; |
| + double ToDouble() const; |
| + int32_t ToInteger() const; |
| + CFX_ByteString ToString() const; |
| + CFX_WideString ToWideString() const { |
| + return CFX_WideString::FromUTF8(ToString().AsStringC()); |
| + } |
| + CFXJSE_HostObject* ToHostObject(CFXJSE_Class* lpClass) const; |
| + |
| + void SetUndefined(); |
| + void SetNull(); |
| + void SetBoolean(FX_BOOL bBoolean); |
| + void SetInteger(int32_t nInteger); |
| + void SetDouble(double dDouble); |
| + void SetString(const CFX_ByteStringC& szString); |
| + void SetFloat(FX_FLOAT fFloat); |
| + void SetJSObject(); |
| + |
| + void SetObject(CFXJSE_HostObject* lpObject, CFXJSE_Class* pClass); |
| + void SetHostObject(CFXJSE_HostObject* lpObject, CFXJSE_Class* lpClass); |
| + void SetArray(uint32_t uValueCount, CFXJSE_Value** rgValues); |
| + void SetDate(double dDouble); |
| + |
| + FX_BOOL GetObjectProperty(const CFX_ByteStringC& szPropName, |
| + CFXJSE_Value* lpPropValue); |
| + FX_BOOL SetObjectProperty(const CFX_ByteStringC& szPropName, |
| + CFXJSE_Value* lpPropValue); |
| + FX_BOOL GetObjectPropertyByIdx(uint32_t uPropIdx, CFXJSE_Value* lpPropValue); |
| + FX_BOOL SetObjectProperty(uint32_t uPropIdx, CFXJSE_Value* lpPropValue); |
| + FX_BOOL DeleteObjectProperty(const CFX_ByteStringC& szPropName); |
| + FX_BOOL HasObjectOwnProperty(const CFX_ByteStringC& szPropName, |
| + FX_BOOL bUseTypeGetter); |
| + FX_BOOL SetObjectOwnProperty(const CFX_ByteStringC& szPropName, |
| + CFXJSE_Value* lpPropValue); |
| + FX_BOOL SetFunctionBind(CFXJSE_Value* lpOldFunction, CFXJSE_Value* lpNewThis); |
| + FX_BOOL Call(CFXJSE_Value* lpReceiver, |
| + CFXJSE_Value* lpRetValue, |
| + uint32_t nArgCount, |
| + CFXJSE_Value** lpArgs); |
| + |
| + v8::Isolate* GetIsolate() const { return m_pIsolate; } |
| + const v8::Global<v8::Value>& DirectGetValue() const { return m_hValue; } |
| + void ForceSetValue(v8::Local<v8::Value> hValue) { |
| + m_hValue.Reset(m_pIsolate, hValue); |
| + } |
| + void Assign(const CFXJSE_Value* lpValue) { |
| + ASSERT(lpValue); |
| + if (lpValue) { |
| + m_hValue.Reset(m_pIsolate, lpValue->m_hValue); |
| + } else { |
| + m_hValue.Reset(); |
| + } |
| + } |
| + |
| + private: |
| + friend class CFXJSE_Class; |
| + friend class CFXJSE_Context; |
| + |
| + CFXJSE_Value(); |
| + CFXJSE_Value(const CFXJSE_Value&); |
| + CFXJSE_Value& operator=(const CFXJSE_Value&); |
| + |
| + v8::Isolate* m_pIsolate; |
| + v8::Global<v8::Value> m_hValue; |
| +}; |
| + |
| +#endif // FXJS_INCLUDE_CFXJSE_VALUE_H_ |