1
0
Fork 0
mirror of https://github.com/rubyjs/therubyracer synced 2023-03-27 23:21:42 -04:00
therubyracer/ext/v8/context.cc

67 lines
1.5 KiB
C++
Raw Normal View History

#include "rr.h"
namespace rr {
void Context::Init() {
ClassBuilder("Context").
defineSingletonMethod("New", &New).
defineMethod("Dispose", &Dispose).
defineMethod("Enter", &Enter).
defineMethod("Exit", &Exit).
store(&Class);
// TODO
// ClassBuilder("ExtensionConfiguration").
// defineSingletonMethod("new", &ExtensionConfiguration::initialize).
// store(&ExtensionConfiguration::Class);
}
VALUE Context::New(int argc, VALUE argv[], VALUE self) {
VALUE rb_isolate, extension_configuration, global_template, global_object;
rb_scan_args(argc, argv, "13", &rb_isolate, &extension_configuration, &global_template, &global_object);
Isolate isolate(rb_isolate);
Locker lock(isolate);
return Context(v8::Context::New(
isolate
// TODO
// ,
// ExtensionConfiguration(extension_configuration),
// *ObjectTemplate(global_template),
// *Object(global_object)
));
}
VALUE Context::Dispose(VALUE self) {
Context(self).dispose();
return Qnil;
}
VALUE Context::Enter(VALUE self) {
Context context(self);
Locker lock(context.getIsolate());
context->Enter();
return Qnil;
}
VALUE Context::Exit(VALUE self) {
Context context(self);
Locker lock(context.getIsolate());
context->Exit();
return Qnil;
}
// TODO
// template <> void Pointer<v8::ExtensionConfiguration>::unwrap(VALUE value) {
// Data_Get_Struct(value, class v8::ExtensionConfiguration, pointer);
// }
}