Files
lserp_cs_5.0/插件库/Cef3.24/Classes.Handlers/CefV8Accessor.cs
T
2026-07-10 15:25:05 +08:00

83 lines
2.9 KiB
C#

namespace Cef3
{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Cef3.Interop;
/// <summary>
/// Interface that should be implemented to handle V8 function calls. The methods
/// of this class will be called on the thread associated with the V8 function.
/// </summary>
public abstract unsafe partial class CefV8Accessor
{
private int get(cef_v8accessor_t* self, cef_string_t* name, cef_v8value_t* @object, cef_v8value_t** retval, cef_string_t* exception)
{
CheckSelf(self);
var m_name = cef_string_t.ToString(name);
var m_obj = CefV8Value.FromNative(@object);
CefV8Value m_returnValue;
string mException;
var handled = Get(m_name, m_obj, out m_returnValue, out mException);
if (handled)
{
if (mException != null)
{
cef_string_t.Copy(mException, exception);
}
else if (m_returnValue != null)
{
*retval = m_returnValue.ToNative();
}
}
return handled ? 1 : 0;
}
/// <summary>
/// Handle retrieval the accessor value identified by |name|. |object| is the
/// receiver ('this' object) of the accessor. If retrieval succeeds set
/// |retval| to the return value. If retrieval fails set |exception| to the
/// exception that will be thrown. Return true if accessor retrieval was
/// handled.
/// </summary>
protected abstract bool Get(string name, CefV8Value obj, out CefV8Value returnValue, out string exception);
private int set(cef_v8accessor_t* self, cef_string_t* name, cef_v8value_t* @object, cef_v8value_t* value, cef_string_t* exception)
{
CheckSelf(self);
var m_name = cef_string_t.ToString(name);
var m_obj = CefV8Value.FromNative(@object);
var m_value = CefV8Value.FromNative(value);
string mException;
var handled = this.Set(m_name, m_obj, m_value, out mException);
if (handled)
{
if (mException != null)
{
cef_string_t.Copy(mException, exception);
}
}
return handled ? 1 : 0;
}
/// <summary>
/// Handle assignment of the accessor value identified by |name|. |object| is
/// the receiver ('this' object) of the accessor. |value| is the new value
/// being assigned to the accessor. If assignment fails set |exception| to the
/// exception that will be thrown. Return true if accessor assignment was
/// handled.
/// </summary>
protected abstract bool Set(string name, CefV8Value obj, CefV8Value value, out string exception);
}
}