@@ -198,6 +198,148 @@ void Assert(bool condition, v8::Isolate* isolate = nullptr, std::string const &r
198
198
199
199
void StopExecutionAndLogStackTrace (v8::Isolate* isolate);
200
200
201
+
202
+
203
+
204
+ // Helpers from Node
205
+ inline v8::Local<v8::String> OneByteString (v8::Isolate* isolate,
206
+ const char * data,
207
+ int length) {
208
+ return v8::String::NewFromOneByte (isolate,
209
+ reinterpret_cast <const uint8_t *>(data),
210
+ v8::NewStringType::kNormal ,
211
+ length).ToLocalChecked ();
212
+ }
213
+ inline v8::Local<v8::String> OneByteString (v8::Isolate* isolate,
214
+ const signed char * data,
215
+ int length) {
216
+ return v8::String::NewFromOneByte (isolate,
217
+ reinterpret_cast <const uint8_t *>(data),
218
+ v8::NewStringType::kNormal ,
219
+ length).ToLocalChecked ();
220
+ }
221
+ inline v8::Local<v8::String> OneByteString (v8::Isolate* isolate,
222
+ const unsigned char * data,
223
+ int length) {
224
+ return v8::String::NewFromOneByte (
225
+ isolate, data, v8::NewStringType::kNormal , length)
226
+ .ToLocalChecked ();
227
+ }
228
+
229
+ // Convenience wrapper around v8::String::NewFromOneByte().
230
+ inline v8::Local<v8::String> OneByteString (v8::Isolate* isolate,
231
+ const char * data,
232
+ int length = -1 );
233
+ // For the people that compile with -funsigned-char.
234
+ inline v8::Local<v8::String> OneByteString (v8::Isolate* isolate,
235
+ const signed char * data,
236
+ int length = -1 );
237
+ inline v8::Local<v8::String> OneByteString (v8::Isolate* isolate,
238
+ const unsigned char * data,
239
+ int length = -1 );
240
+
241
+
242
+
243
+ v8::Local<v8::FunctionTemplate> NewFunctionTemplate (
244
+ v8::Isolate* isolate,
245
+ v8::FunctionCallback callback,
246
+ v8::Local<v8::Value> data = v8::Local<v8::Value>(),
247
+ v8::Local<v8::Signature> signature = v8::Local<v8::Signature>(),
248
+ v8::ConstructorBehavior behavior = v8::ConstructorBehavior::kAllow,
249
+ v8::SideEffectType side_effect = v8::SideEffectType::kHasSideEffect,
250
+ const v8::CFunction* c_function = nullptr);
251
+ // Convenience methods for NewFunctionTemplate().
252
+ void SetMethod (v8::Local<v8::Context> context,
253
+ v8::Local<v8::Object> that,
254
+ const char * name,
255
+ v8::FunctionCallback callback,
256
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
257
+ // Similar to SetProtoMethod but without receiver signature checks.
258
+ void SetMethod (v8::Isolate* isolate,
259
+ v8::Local<v8::Template> that,
260
+ const char * name,
261
+ v8::FunctionCallback callback,
262
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
263
+ void SetFastMethod (v8::Isolate* isolate,
264
+ v8::Local<v8::Template> that,
265
+ const char * name,
266
+ v8::FunctionCallback slow_callback,
267
+ const v8::CFunction* c_function,
268
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
269
+ void SetFastMethod (v8::Local<v8::Context> context,
270
+ v8::Local<v8::Object> that,
271
+ const char * name,
272
+ v8::FunctionCallback slow_callback,
273
+ const v8::CFunction* c_function,
274
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
275
+ void SetFastMethodNoSideEffect (v8::Isolate* isolate,
276
+ v8::Local<v8::Template> that,
277
+ const char * name,
278
+ v8::FunctionCallback slow_callback,
279
+ const v8::CFunction* c_function,
280
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
281
+ void SetFastMethodNoSideEffect (v8::Local<v8::Context> context,
282
+ v8::Local<v8::Object> that,
283
+ const char * name,
284
+ v8::FunctionCallback slow_callback,
285
+ const v8::CFunction* c_function,
286
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
287
+ void SetProtoMethod (v8::Isolate* isolate,
288
+ v8::Local<v8::FunctionTemplate> that,
289
+ const char * name,
290
+ v8::FunctionCallback callback,
291
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
292
+ void SetInstanceMethod (v8::Isolate* isolate,
293
+ v8::Local<v8::FunctionTemplate> that,
294
+ const char * name,
295
+ v8::FunctionCallback callback,
296
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
297
+ // Safe variants denote the function has no side effects.
298
+ void SetMethodNoSideEffect (v8::Local<v8::Context> context,
299
+ v8::Local<v8::Object> that,
300
+ const char * name,
301
+ v8::FunctionCallback callback,
302
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
303
+ void SetProtoMethodNoSideEffect (v8::Isolate* isolate,
304
+ v8::Local<v8::FunctionTemplate> that,
305
+ const char * name,
306
+ v8::FunctionCallback callback,
307
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
308
+ void SetMethodNoSideEffect (v8::Isolate* isolate,
309
+ v8::Local<v8::Template> that,
310
+ const char * name,
311
+ v8::FunctionCallback callback,
312
+ v8::Local<v8::Value> data = v8::Local<v8::Value>());
313
+ enum class SetConstructorFunctionFlag {
314
+ NONE,
315
+ SET_CLASS_NAME,
316
+ };
317
+ void SetConstructorFunction (v8::Local<v8::Context> context,
318
+ v8::Local<v8::Object> that,
319
+ const char * name,
320
+ v8::Local<v8::FunctionTemplate> tmpl,
321
+ SetConstructorFunctionFlag flag =
322
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
323
+ void SetConstructorFunction (v8::Local<v8::Context> context,
324
+ v8::Local<v8::Object> that,
325
+ v8::Local<v8::String> name,
326
+ v8::Local<v8::FunctionTemplate> tmpl,
327
+ SetConstructorFunctionFlag flag =
328
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
329
+ void SetConstructorFunction (v8::Isolate* isolate,
330
+ v8::Local<v8::Template> that,
331
+ const char * name,
332
+ v8::Local<v8::FunctionTemplate> tmpl,
333
+ SetConstructorFunctionFlag flag =
334
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
335
+ void SetConstructorFunction (v8::Isolate* isolate,
336
+ v8::Local<v8::Template> that,
337
+ v8::Local<v8::String> name,
338
+ v8::Local<v8::FunctionTemplate> tmpl,
339
+ SetConstructorFunctionFlag flag =
340
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
341
+
342
+
201
343
}
202
344
203
345
#endif /* Helpers_h */
0 commit comments