[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/bubdm/ClearScript/master/ClearScriptV8/V8ObjectHolderImpl.cpp [Back]  [Original]

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.

#include "ClearScriptV8Native.h"

//-----------------------------------------------------------------------------
// V8ObjectHolderImpl implementation
//-----------------------------------------------------------------------------

V8ObjectHolderImpl::V8ObjectHolderImpl(const SharedPtr& spBinding, void* pvObject, const SharedPtr& spSharedObjectInfo):
    m_spBinding(spBinding),
    m_pvObject(pvObject),
    m_spSharedObjectInfo(spSharedObjectInfo)
{
}

//-----------------------------------------------------------------------------

V8ObjectHolderImpl* V8ObjectHolderImpl::Clone() const
{
    return new V8ObjectHolderImpl(m_spBinding, m_spBinding->GetIsolateImpl()->AddRefV8Object(m_pvObject), m_spSharedObjectInfo);
}

//-----------------------------------------------------------------------------

bool V8ObjectHolderImpl::IsSameIsolate(const SharedPtr& spThat) const
{
    SharedPtr spIsolateImpl;
    if (m_spBinding->TryGetIsolateImpl(spIsolateImpl))
    {
        return spIsolateImpl == spThat;
    }

    return false;
}

//-----------------------------------------------------------------------------

void* V8ObjectHolderImpl::GetObject() const
{
    return m_pvObject;
}

//-----------------------------------------------------------------------------

const SharedPtr& V8ObjectHolderImpl::GetSharedObjectInfo() const
{
    return m_spSharedObjectInfo;
}

//-----------------------------------------------------------------------------

V8Value V8ObjectHolderImpl::GetProperty(const StdString& name) const
{
    return m_spBinding->GetContextImpl()->GetV8ObjectProperty(m_pvObject, name);
}

//-----------------------------------------------------------------------------

void V8ObjectHolderImpl::SetProperty(const StdString& name, const V8Value& value) const
{
    m_spBinding->GetContextImpl()->SetV8ObjectProperty(m_pvObject, name, value);
}

//-----------------------------------------------------------------------------

bool V8ObjectHolderImpl::DeleteProperty(const StdString& name) const
{
    return m_spBinding->GetContextImpl()->DeleteV8ObjectProperty(m_pvObject, name);
}

//-----------------------------------------------------------------------------

void V8ObjectHolderImpl::GetPropertyNames(std::vector& names) const
{
    m_spBinding->GetContextImpl()->GetV8ObjectPropertyNames(m_pvObject, names);
}

//-----------------------------------------------------------------------------

V8Value V8ObjectHolderImpl::GetProperty(int index) const
{
    return m_spBinding->GetContextImpl()->GetV8ObjectProperty(m_pvObject, index);
}

//-----------------------------------------------------------------------------

void V8ObjectHolderImpl::SetProperty(int index, const V8Value& value) const
{
    m_spBinding->GetContextImpl()->SetV8ObjectProperty(m_pvObject, index, value);
}

//-----------------------------------------------------------------------------

bool V8ObjectHolderImpl::DeleteProperty(int index) const
{
    return m_spBinding->GetContextImpl()->DeleteV8ObjectProperty(m_pvObject, index);
}

//-----------------------------------------------------------------------------

void V8ObjectHolderImpl::GetPropertyIndices(std::vector& indices) const
{
    m_spBinding->GetContextImpl()->GetV8ObjectPropertyIndices(m_pvObject, indices);
}

//-----------------------------------------------------------------------------

V8Value V8ObjectHolderImpl::Invoke(bool asConstructor, const std::vector& args) const
{
    return m_spBinding->GetContextImpl()->InvokeV8Object(m_pvObject, asConstructor, args);
}

//-----------------------------------------------------------------------------

V8Value V8ObjectHolderImpl::InvokeMethod(const StdString& name, const std::vector& args) const
{
    return m_spBinding->GetContextImpl()->InvokeV8ObjectMethod(m_pvObject, name, args);
}

//-----------------------------------------------------------------------------

void V8ObjectHolderImpl::GetArrayBufferOrViewInfo(V8Value& arrayBuffer, size_t& offset, size_t& size, size_t& length) const
{
    m_spBinding->GetContextImpl()->GetV8ObjectArrayBufferOrViewInfo(m_pvObject, arrayBuffer, offset, size, length);
}

//-----------------------------------------------------------------------------

void V8ObjectHolderImpl::InvokeWithArrayBufferOrViewData(V8ObjectHelpers::ArrayBufferOrViewDataCallback* pCallback, void* pvArg) const
{
    m_spBinding->GetContextImpl()->InvokeWithV8ObjectArrayBufferOrViewData(m_pvObject, pCallback, pvArg);
}

//-----------------------------------------------------------------------------

V8ObjectHolderImpl::~V8ObjectHolderImpl()
{
    SharedPtr spIsolateImpl;
    if (m_spBinding->TryGetIsolateImpl(spIsolateImpl))
    {
        spIsolateImpl->ReleaseV8Object(m_pvObject);
    }
}

Web Proxy Viewer  |  New URL  |  Original Page