// Copyright (c) 2009 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. #ifndef _V8_IMPL_H #define _V8_IMPL_H #include "include/cef.h" #include "v8/include/v8.h" class CefTrackObject; class CefV8ValueImpl : public CefThreadSafeBase { public: CefV8ValueImpl(); CefV8ValueImpl(v8::Handle value, CefTrackObject* tracker = NULL); virtual ~CefV8ValueImpl(); bool Attach(v8::Handle value, CefTrackObject* tracker = NULL); void Detach(); v8::Handle GetValue(); bool IsReservedKey(const std::wstring& key); virtual bool IsUndefined(); virtual bool IsNull(); virtual bool IsBool(); virtual bool IsInt(); virtual bool IsDouble(); virtual bool IsString(); virtual bool IsObject(); virtual bool IsArray(); virtual bool IsFunction(); virtual bool GetBoolValue(); virtual int GetIntValue(); virtual double GetDoubleValue(); virtual std::wstring GetStringValue(); virtual bool HasValue(const std::wstring& key); virtual bool HasValue(int index); virtual bool DeleteValue(const std::wstring& key); virtual bool DeleteValue(int index); virtual CefRefPtr GetValue(const std::wstring& key); virtual CefRefPtr GetValue(int index); virtual bool SetValue(const std::wstring& key, CefRefPtr value); virtual bool SetValue(int index, CefRefPtr value); virtual bool GetKeys(std::vector& keys); virtual CefRefPtr GetUserData(); virtual int GetArrayLength(); virtual std::wstring GetFunctionName(); virtual CefRefPtr GetFunctionHandler(); virtual bool ExecuteFunction(CefRefPtr object, const CefV8ValueList& arguments, CefRefPtr& retval, std::wstring& exception); protected: v8::Persistent v8_value_; CefTrackObject* tracker_; }; #endif //_V8_IMPL_H