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

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

#include "ClearScriptV8Native.h"

//-----------------------------------------------------------------------------
// HostObjectUtil implementation
//-----------------------------------------------------------------------------

void* HostObjectUtil::AddRef(void* pvObject)
{
    return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, AddRefHostObject, pvObject);
}

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

void HostObjectUtil::Release(void* pvObject)
{
    V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(ReleaseHostObject, pvObject);
}

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

HostObjectUtil::Invocability HostObjectUtil::GetInvocability(void* pvObject)
{
    return V8_SPLIT_PROXY_MANAGED_INVOKE(Invocability, GetHostObjectInvocability, pvObject);
}

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

V8Value HostObjectUtil::GetProperty(void* pvObject, const StdString& name, bool& isCacheable)
{
    V8Value value(V8Value::Nonexistent);
    StdBool tempIsCacheable;
    V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectNamedProperty, pvObject, name, value, tempIsCacheable);
    isCacheable = (tempIsCacheable != 0);
    return value;
}

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

void HostObjectUtil::SetProperty(void* pvObject, const StdString& name, const V8Value& value)
{
    V8Value::Decoded decodedValue;
    value.Decode(decodedValue);
    V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(SetHostObjectNamedProperty, pvObject, name, decodedValue);
}

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

bool HostObjectUtil::DeleteProperty(void* pvObject, const StdString& name)
{
    return V8_SPLIT_PROXY_MANAGED_INVOKE(StdBool, DeleteHostObjectNamedProperty, pvObject, name);
}

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

void HostObjectUtil::GetPropertyNames(void* pvObject, std::vector& names)
{
    V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectPropertyNames, pvObject, names);
}

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

V8Value HostObjectUtil::GetProperty(void* pvObject, int32_t index)
{
    V8Value value(V8Value::Nonexistent);
    V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectIndexedProperty, pvObject, index, value);
    return value;
}

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

void HostObjectUtil::SetProperty(void* pvObject, int32_t index, const V8Value& value)
{
    V8Value::Decoded decodedValue;
    value.Decode(decodedValue);
    V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(SetHostObjectIndexedProperty, pvObject, index, decodedValue);
}

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

bool HostObjectUtil::DeleteProperty(void* pvObject, int32_t index)
{
    return V8_SPLIT_PROXY_MANAGED_INVOKE(StdBool, DeleteHostObjectIndexedProperty, pvObject, index);
}

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

void HostObjectUtil::GetPropertyIndices(void* pvObject, std::vector& indices)
{
    V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectPropertyIndices, pvObject, indices);
}

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

V8Value HostObjectUtil::Invoke(void* pvObject, bool asConstructor, size_t argCount, const V8Value* pArgs)
{
    V8Value result(V8Value::Nonexistent);

    if (argCount < 1)
    {
        V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObject, pvObject, asConstructor, 0, nullptr, result);
    }
    else if (argCount 

Web Proxy Viewer  |  New URL  |  Original Page