FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
ClearScriptForUnity3d/ClearScriptV8/HostObjectUtil.cpp at Unity3D · vovgou/ClearScriptForUnity3d · GitHub
vovgou
/
ClearScriptForUnity3d
Public
forked from
ClearFoundry/ClearScript
Notifications
You must be signed in to change notification settings
Fork
2
Star
1
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
ClearScriptForUnity3d
/
ClearScriptV8
/
HostObjectUtil.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
240 lines (192 loc) · 8.77 KB
Breadcrumbs
ClearScriptForUnity3d
/
ClearScriptV8
/
HostObjectUtil.cpp
Copy path
File metadata and controls
240 lines (192 loc) · 8.77 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
//
Copyright (c) Microsoft Corporation. All rights reserved.
//
Licensed under the MIT license.
#
include
"
ClearScriptV8Native.h
"
//
-----------------------------------------------------------------------------
//
HostObjectUtilNativeImpl
//
-----------------------------------------------------------------------------
class
HostObjectUtilNativeImpl
:
public
IHostObjectUtil
{
PROHIBIT_COPY
(HostObjectUtilNativeImpl)
PROHIBIT_HEAP
(HostObjectUtilNativeImpl)
public:
static
IHostObjectUtil&
GetInstance
()
noexcept
{
return
s_Instance;
}
virtual
void
*
AddRef
(
void
* pvObject)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(
void
*, AddRefHostObject, pvObject);
}
virtual
void
Release
(
void
* pvObject)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW
(ReleaseHostObject, pvObject);
}
virtual
V8Value
GetProperty
(
void
* pvObject,
const
StdString& name)
override
{
V8Value
value
(V8Value::Nonexistent);
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(GetHostObjectNamedProperty, pvObject, name, value);
return
value;
}
virtual
V8Value
GetProperty
(
void
* pvObject,
const
StdString& name,
bool
& isCacheable)
override
{
V8Value
value
(V8Value::Nonexistent);
StdBool tempIsCacheable;
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(GetHostObjectNamedPropertyWithCacheability, pvObject, name, value, tempIsCacheable);
isCacheable = tempIsCacheable;
return
value;
}
virtual
void
SetProperty
(
void
* pvObject,
const
StdString& name,
const
V8Value& value)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(SetHostObjectNamedProperty, pvObject, name, value);
}
virtual
bool
DeleteProperty
(
void
* pvObject,
const
StdString& name)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE
(StdBool, DeleteHostObjectNamedProperty, pvObject, name);
}
virtual
void
GetPropertyNames
(
void
* pvObject, std::vector<StdString>& names)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(GetHostObjectPropertyNames, pvObject, names);
}
virtual
V8Value
GetProperty
(
void
* pvObject,
int32_t
index)
override
{
V8Value
value
(V8Value::Nonexistent);
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(GetHostObjectIndexedProperty, pvObject, index, value);
return
value;
}
virtual
void
SetProperty
(
void
* pvObject,
int32_t
index,
const
V8Value& value)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(SetHostObjectIndexedProperty, pvObject, index, value);
}
virtual
bool
DeleteProperty
(
void
* pvObject,
int32_t
index)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE
(StdBool, DeleteHostObjectIndexedProperty, pvObject, index);
}
virtual
void
GetPropertyIndices
(
void
* pvObject, std::vector<
int32_t
>& indices)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(GetHostObjectPropertyIndices, pvObject, indices);
}
virtual
V8Value
Invoke
(
void
* pvObject,
bool
asConstructor,
const
std::vector<V8Value>& args)
override
{
V8Value
result
(V8Value::Nonexistent);
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(InvokeHostObject, pvObject, asConstructor, args, result);
return
result;
}
virtual
V8Value
InvokeMethod
(
void
* pvObject,
const
StdString& name,
const
std::vector<V8Value>& args)
override
{
V8Value
result
(V8Value::Nonexistent);
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(InvokeHostObjectMethod, pvObject, name, args, result);
return
result;
}
virtual
Invocability
GetInvocability
(
void
* pvObject)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE
(Invocability, GetHostObjectInvocability, pvObject);
}
virtual
V8Value
GetEnumerator
(
void
* pvObject)
override
{
V8Value
result
(V8Value::Nonexistent);
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(GetEnumeratorForHostObject, pvObject, result);
return
result;
}
virtual
bool
AdvanceEnumerator
(
void
* pvEnumerator, V8Value& value)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE
(StdBool, AdvanceEnumerator, pvEnumerator, value);
}
virtual
void
*
CreateV8ObjectCache
()
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(
void
*, CreateV8ObjectCache);
}
virtual
void
CacheV8Object
(
void
* pvCache,
void
* pvObject,
void
* pvV8Object)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW
(CacheV8Object, pvCache, pvObject, pvV8Object);
}
virtual
void
*
GetCachedV8Object
(
void
* pvCache,
void
* pvObject)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(
void
*, GetCachedV8Object, pvCache, pvObject);
}
virtual
void
GetAllCachedV8Objects
(
void
* pvCache, std::vector<
void
*>& v8ObjectPtrs)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW
(GetAllCachedV8Objects, pvCache, v8ObjectPtrs);
}
virtual
bool
RemoveV8ObjectCacheEntry
(
void
* pvCache,
void
* pvObject)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(StdBool, RemoveV8ObjectCacheEntry, pvCache, pvObject);
}
virtual
void
*
CreateDebugAgent
(
const
StdString& name,
const
StdString& version,
int32_t
port,
bool
remote, DebugCallback&& callback)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(
void
*, CreateDebugAgent, name, version, port, remote,
new
V8DebugCallbackHandle
(
new
DebugCallback
(
std::move
(callback))));
}
virtual
void
SendDebugMessage
(
void
* pvAgent,
const
StdString& content)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW
(SendDebugMessage, pvAgent, content);
}
virtual
void
DestroyDebugAgent
(
void
* pvAgent)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW
(DestroyDebugAgent, pvAgent);
}
virtual
void
QueueNativeCallback
(NativeCallback&& callback)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW
(QueueNativeCallback,
new
NativeCallbackHandle
(
new
NativeCallback
(
std::move
(callback))));
}
virtual
void
*
CreateNativeCallbackTimer
(
int32_t
dueTime,
int32_t
period, NativeCallback&& callback)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(
void
*, CreateNativeCallbackTimer, dueTime, period,
new
NativeCallbackHandle
(
new
NativeCallback
(
std::move
(callback))));
}
virtual
bool
ChangeNativeCallbackTimer
(
void
* pvTimer,
int32_t
dueTime,
int32_t
period)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(StdBool, ChangeNativeCallbackTimer, pvTimer, dueTime, period);
}
virtual
void
DestroyNativeCallbackTimer
(
void
* pvTimer)
override
{
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW
(DestroyNativeCallbackTimer, pvTimer);
}
virtual
StdString
LoadModule
(
const
V8DocumentInfo& sourceDocumentInfo,
const
StdString& specifier, V8DocumentInfo& documentInfo)
override
{
StdString resourceName;
StdString sourceMapUrl;
uint64_t
uniqueId;
StdBool isModule;
StdString code;
void
* pvDocumentInfo;
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(LoadModule, sourceDocumentInfo.
GetDocumentInfo
(), specifier, resourceName, sourceMapUrl, uniqueId, isModule, code, pvDocumentInfo);
documentInfo =
V8DocumentInfo
(
std::move
(resourceName),
std::move
(sourceMapUrl), uniqueId, isModule, pvDocumentInfo);
return
code;
}
virtual
std::vector<std::pair<StdString, V8Value>>
CreateModuleContext
(
const
V8DocumentInfo& documentInfo)
override
{
std::vector<StdString> names;
std::vector<V8Value> values;
V8_SPLIT_PROXY_MANAGED_INVOKE_VOID
(CreateModuleContext, documentInfo.
GetDocumentInfo
(), names, values);
auto
count =
std::min
(names.
size
(), values.
size
());
std::vector<std::pair<StdString, V8Value>> context;
context.
reserve
(count);
for
(
size_t
index =
0
; index < count; index++)
{
context.
emplace_back
(names[index], values[index]);
}
return
context;
}
virtual
size_t
GetMaxScriptCacheSize
()
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(
int32_t
, GetMaxScriptCacheSize);
}
virtual
size_t
GetMaxModuleCacheSize
()
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(
int32_t
, GetMaxModuleCacheSize);
}
virtual
bool
TryParseInt32
(
const
StdString& text,
int32_t
& result)
override
{
return
V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW
(StdBool, TryParseInt32, text, result);
}
private:
HostObjectUtilNativeImpl
()
noexcept
=
default
;
static
HostObjectUtilNativeImpl s_Instance;
};
//
-----------------------------------------------------------------------------
HostObjectUtilNativeImpl HostObjectUtilNativeImpl::s_Instance;
//
-----------------------------------------------------------------------------
//
HostObjectUtil implementation
//
-----------------------------------------------------------------------------
IHostObjectUtil&
HostObjectUtil::GetInstance
()
noexcept
{
return
HostObjectUtilNativeImpl::GetInstance
();
}
Back
|
FazBrowse Home
|
New Git URL