mirror of
https://github.com/rubyjs/therubyracer
synced 2023-03-27 23:21:42 -04:00
move initializations into approprate places
This commit is contained in:
parent
1b2c6e276c
commit
5194b11a5b
13 changed files with 66 additions and 36 deletions
|
@ -1,7 +1,7 @@
|
||||||
#include "rr.h"
|
#include "rr.h"
|
||||||
|
|
||||||
VALUE rr_define_class(const char *name) {
|
VALUE rr_define_class(const char *name, VALUE superclass) {
|
||||||
VALUE V8 = rb_define_module("V8");
|
VALUE V8 = rb_define_module("V8");
|
||||||
VALUE V8_C = rb_define_module_under(V8, "C");
|
VALUE V8_C = rb_define_module_under(V8, "C");
|
||||||
return rb_define_class_under(V8_C, name, rb_cObject);
|
return rb_define_class_under(V8_C, name, superclass);
|
||||||
}
|
}
|
|
@ -6,6 +6,6 @@
|
||||||
#define RR_DEFINE_METHOD(klass, name, impl, argc) rb_define_method(klass, name, (VALUE(*)(...))impl, argc)
|
#define RR_DEFINE_METHOD(klass, name, impl, argc) rb_define_method(klass, name, (VALUE(*)(...))impl, argc)
|
||||||
#define RR_DEFINE_SINGLETON_METHOD(object, name, impl, argc) rb_define_singleton_method(object, name, (VALUE(*)(...))impl, argc)
|
#define RR_DEFINE_SINGLETON_METHOD(object, name, impl, argc) rb_define_singleton_method(object, name, (VALUE(*)(...))impl, argc)
|
||||||
|
|
||||||
VALUE rr_define_class(const char *name);
|
VALUE rr_define_class(const char *name, VALUE superclass = rb_cObject);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -32,32 +32,12 @@ extern "C" {
|
||||||
VALUE rb_mNative = rb_define_module_under(rb_mModule, "C");
|
VALUE rb_mNative = rb_define_module_under(rb_mModule, "C");
|
||||||
|
|
||||||
rr_init_cxt();
|
rr_init_cxt();
|
||||||
//native String
|
rr_init_str();
|
||||||
VALUE V8__C__String = rb_define_class_under(rb_mNative, "String", rb_cObject);
|
rr_init_script();
|
||||||
rb_define_singleton_method(V8__C__String, "new", (VALUE(*)(...)) v8_str_new, 1);
|
rr_init_template();
|
||||||
rb_define_method(V8__C__String, "to_s", (VALUE(*)(...)) v8_str_to_s, 0);
|
rr_init_obj();
|
||||||
|
rr_init_func();
|
||||||
|
|
||||||
VALUE V8__C__Script = rb_define_class_under(rb_mNative, "Script", rb_cObject);
|
|
||||||
rb_define_singleton_method(V8__C__Script, "new", (VALUE(*)(...)) v8_script_new, 1);
|
|
||||||
rb_define_method(V8__C__Script, "Run", (VALUE(*)(...)) v8_script_Run, 0);
|
|
||||||
|
|
||||||
VALUE V8__C__Template = rb_define_class_under(rb_mNative, "Template", rb_cObject);
|
|
||||||
rb_define_method(V8__C__Template, "Set", (VALUE(*)(...))v8_Template_Set, 2);
|
|
||||||
|
|
||||||
VALUE V8__C__ObjectTemplate = rb_define_class_under(rb_mNative, "ObjectTemplate", V8__C__Template);
|
|
||||||
rb_define_singleton_method(V8__C__ObjectTemplate, "new", (VALUE(*)(...))v8_ObjectTemplate_New, 0);
|
|
||||||
|
|
||||||
VALUE V8__C__FunctionTemplate = rb_define_class_under(rb_mNative, "FunctionTemplate", V8__C__Template);
|
|
||||||
rb_define_singleton_method(V8__C__FunctionTemplate, "new", (VALUE(*)(...))v8_FunctionTemplate_New, -1);
|
|
||||||
rb_define_method(V8__C__FunctionTemplate, "GetFunction", (VALUE(*)(...))v8_FunctionTemplate_GetFunction, 0);
|
|
||||||
|
|
||||||
V8_C_Object = rb_define_class_under(rb_mNative, "Object", rb_cObject);
|
|
||||||
rb_define_singleton_method(V8_C_Object, "new", (VALUE(*)(...))v8_Object_New, 0);
|
|
||||||
rb_define_method(V8_C_Object, "Get", (VALUE(*)(...))v8_Object_Get, 1);
|
|
||||||
rb_define_method(V8_C_Object, "Set", (VALUE(*)(...))v8_Object_Set, 2);
|
|
||||||
rb_define_method(V8_C_Object, "GetPropertyNames", (VALUE(*)(...)) v8_Object_GetPropertyNames, 0);
|
|
||||||
rb_define_method(V8_C_Object, "ToString", (VALUE(*)(...)) v8_Object_ToString, 0);
|
|
||||||
rb_define_method(V8_C_Object, "context", (VALUE(*)(...)) v8_Object_context, 0);
|
|
||||||
|
|
||||||
V8_C_Message = rb_define_class_under(rb_mNative, "Message", rb_cObject);
|
V8_C_Message = rb_define_class_under(rb_mNative, "Message", rb_cObject);
|
||||||
rb_define_method(V8_C_Message, "Get", (VALUE(*)(...))v8_Message_Get, 0);
|
rb_define_method(V8_C_Message, "Get", (VALUE(*)(...))v8_Message_Get, 0);
|
||||||
|
@ -69,8 +49,5 @@ extern "C" {
|
||||||
rb_define_method(V8_C_Message, "GetStartColumn", (VALUE(*)(...)) v8_Message_GetStartColumn, 0);
|
rb_define_method(V8_C_Message, "GetStartColumn", (VALUE(*)(...)) v8_Message_GetStartColumn, 0);
|
||||||
rb_define_method(V8_C_Message, "GetEndColumn", (VALUE(*)(...)) v8_Message_GetEndColumn, 0);
|
rb_define_method(V8_C_Message, "GetEndColumn", (VALUE(*)(...)) v8_Message_GetEndColumn, 0);
|
||||||
|
|
||||||
|
|
||||||
V8_C_Function = rb_define_class_under(rb_mNative, "Function", V8_C_Object);
|
|
||||||
rb_define_method(V8_C_Function, "Call", (VALUE(*)(...))v8_C_Function_Call, -1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
|
|
||||||
#include "converters.h"
|
#include "converters.h"
|
||||||
#include "v8_func.h"
|
#include "v8_func.h"
|
||||||
|
#include "v8_obj.h"
|
||||||
|
|
||||||
using namespace v8;
|
using namespace v8;
|
||||||
|
|
||||||
VALUE V8_C_Function;
|
VALUE V8_C_Function;
|
||||||
|
|
||||||
|
void rr_init_func() {
|
||||||
|
V8_C_Function = rr_define_class("Function", V8_C_Object);
|
||||||
|
rb_define_method(V8_C_Function, "Call", (VALUE(*)(...))v8_C_Function_Call, -1);
|
||||||
|
}
|
||||||
|
|
||||||
VALUE V8_Wrap_Function(Handle<Function> f) {
|
VALUE V8_Wrap_Function(Handle<Function> f) {
|
||||||
return V8_Ref_Create(V8_C_Function, f);
|
return V8_Ref_Create(V8_C_Function, f);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
#ifndef _RUBY_V8_FUNCTION_
|
#ifndef _RUBY_V8_FUNCTION_
|
||||||
#define _RUBY_V8_FUNCTION_
|
#define _RUBY_V8_FUNCTION_
|
||||||
|
|
||||||
|
#include "rr.h"
|
||||||
#include "v8.h"
|
#include "v8.h"
|
||||||
#include "ruby.h"
|
|
||||||
#include "v8_ref.h"
|
#include "v8_ref.h"
|
||||||
|
|
||||||
extern VALUE V8_C_Function;
|
extern VALUE V8_C_Function;
|
||||||
|
|
||||||
|
void rr_init_func();
|
||||||
|
|
||||||
VALUE V8_Wrap_Function(v8::Handle<v8::Function> f);
|
VALUE V8_Wrap_Function(v8::Handle<v8::Function> f);
|
||||||
|
|
||||||
VALUE v8_C_Function_Call(int argc, VALUE *argv, VALUE self);
|
VALUE v8_C_Function_Call(int argc, VALUE *argv, VALUE self);
|
||||||
|
|
|
@ -8,6 +8,16 @@ using namespace v8;
|
||||||
|
|
||||||
VALUE V8_C_Object;
|
VALUE V8_C_Object;
|
||||||
|
|
||||||
|
void rr_init_obj() {
|
||||||
|
V8_C_Object = rr_define_class("Object");
|
||||||
|
rb_define_singleton_method(V8_C_Object, "new", (VALUE(*)(...))v8_Object_New, 0);
|
||||||
|
rb_define_method(V8_C_Object, "Get", (VALUE(*)(...))v8_Object_Get, 1);
|
||||||
|
rb_define_method(V8_C_Object, "Set", (VALUE(*)(...))v8_Object_Set, 2);
|
||||||
|
rb_define_method(V8_C_Object, "GetPropertyNames", (VALUE(*)(...)) v8_Object_GetPropertyNames, 0);
|
||||||
|
rb_define_method(V8_C_Object, "ToString", (VALUE(*)(...)) v8_Object_ToString, 0);
|
||||||
|
rb_define_method(V8_C_Object, "context", (VALUE(*)(...)) v8_Object_context, 0);
|
||||||
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
Local<Object> unwrap(VALUE robj) {
|
Local<Object> unwrap(VALUE robj) {
|
||||||
return V8_Ref_Get<Object>(robj);
|
return V8_Ref_Get<Object>(robj);
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
#ifndef _RUBY_V8_OBJECT_
|
#ifndef _RUBY_V8_OBJECT_
|
||||||
#define _RUBY_V8_OBJECT_
|
#define _RUBY_V8_OBJECT_
|
||||||
|
|
||||||
#include "ruby.h"
|
#include "rr.h"
|
||||||
|
|
||||||
extern VALUE V8_C_Object;
|
extern VALUE V8_C_Object;
|
||||||
|
|
||||||
|
void rr_init_obj();
|
||||||
|
|
||||||
VALUE v8_Object_New(VALUE clazz);
|
VALUE v8_Object_New(VALUE clazz);
|
||||||
VALUE v8_Object_Get(VALUE self, VALUE key);
|
VALUE v8_Object_Get(VALUE self, VALUE key);
|
||||||
VALUE v8_Object_Set(VALUE self, VALUE key, VALUE value);
|
VALUE v8_Object_Set(VALUE self, VALUE key, VALUE value);
|
||||||
|
|
|
@ -5,6 +5,11 @@
|
||||||
|
|
||||||
using namespace v8;
|
using namespace v8;
|
||||||
|
|
||||||
|
void rr_init_script() {
|
||||||
|
VALUE Script = rr_define_class("Script");
|
||||||
|
RR_DEFINE_SINGLETON_METHOD(Script, "new", v8_script_new, 1);
|
||||||
|
RR_DEFINE_METHOD(Script, "Run", v8_script_Run, 0);
|
||||||
|
}
|
||||||
|
|
||||||
VALUE v8_script_new(VALUE self, VALUE source) {
|
VALUE v8_script_new(VALUE self, VALUE source) {
|
||||||
HandleScope handles;
|
HandleScope handles;
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
#ifndef _RUBY_V8_SCRIPT_
|
#ifndef _RUBY_V8_SCRIPT_
|
||||||
#define _RUBY_V8_SCRIPT_
|
#define _RUBY_V8_SCRIPT_
|
||||||
|
|
||||||
#include "ruby.h"
|
#include "rr.h"
|
||||||
|
|
||||||
|
void rr_init_script();
|
||||||
|
|
||||||
VALUE v8_script_new(VALUE self, VALUE source);
|
VALUE v8_script_new(VALUE self, VALUE source);
|
||||||
VALUE v8_script_Run(VALUE self);
|
VALUE v8_script_Run(VALUE self);
|
||||||
|
|
|
@ -5,6 +5,12 @@
|
||||||
|
|
||||||
using namespace v8;
|
using namespace v8;
|
||||||
|
|
||||||
|
void rr_init_str() {
|
||||||
|
VALUE String = rr_define_class("String");
|
||||||
|
RR_DEFINE_SINGLETON_METHOD(String, "new", v8_str_new, 1);
|
||||||
|
RR_DEFINE_METHOD(String, "to_s", v8_str_to_s, 0);
|
||||||
|
}
|
||||||
|
|
||||||
VALUE v8_str_new(VALUE clazz, VALUE str) {
|
VALUE v8_str_new(VALUE clazz, VALUE str) {
|
||||||
HandleScope handles;
|
HandleScope handles;
|
||||||
return V8_Ref_Create(clazz, String::New(RSTRING_PTR(str)));
|
return V8_Ref_Create(clazz, String::New(RSTRING_PTR(str)));
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
#ifndef _RUBY_V8_STR_
|
#ifndef _RUBY_V8_STR_
|
||||||
#define _RUBY_V8_STR_
|
#define _RUBY_V8_STR_
|
||||||
|
|
||||||
#include "ruby.h"
|
#include "rr.h"
|
||||||
|
|
||||||
|
void rr_init_str();
|
||||||
|
|
||||||
VALUE v8_str_new(VALUE clazz, VALUE str);
|
VALUE v8_str_new(VALUE clazz, VALUE str);
|
||||||
VALUE v8_str_to_s(VALUE self);
|
VALUE v8_str_to_s(VALUE self);
|
||||||
|
|
|
@ -8,6 +8,20 @@
|
||||||
|
|
||||||
using namespace v8;
|
using namespace v8;
|
||||||
|
|
||||||
|
|
||||||
|
void rr_init_template() {
|
||||||
|
VALUE Template = rr_define_class("Template");
|
||||||
|
rb_define_method(Template, "Set", (VALUE(*)(...))v8_Template_Set, 2);
|
||||||
|
|
||||||
|
VALUE ObjectTemplate = rr_define_class("ObjectTemplate", Template);
|
||||||
|
rb_define_singleton_method(ObjectTemplate, "new", (VALUE(*)(...))v8_ObjectTemplate_New, 0);
|
||||||
|
|
||||||
|
VALUE FunctionTemplate = rr_define_class("FunctionTemplate", Template);
|
||||||
|
rb_define_singleton_method(FunctionTemplate, "new", (VALUE(*)(...))v8_FunctionTemplate_New, -1);
|
||||||
|
rb_define_method(FunctionTemplate, "GetFunction", (VALUE(*)(...))v8_FunctionTemplate_GetFunction, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Local<ObjectTemplate> Racer_Create_V8_ObjectTemplate(VALUE value) {
|
Local<ObjectTemplate> Racer_Create_V8_ObjectTemplate(VALUE value) {
|
||||||
Local<ObjectTemplate> tmpl = ObjectTemplate::New();
|
Local<ObjectTemplate> tmpl = ObjectTemplate::New();
|
||||||
// tmpl->SetInternalFieldCount(2);
|
// tmpl->SetInternalFieldCount(2);
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
#ifndef _RUBY_V8_TEMPLATE_
|
#ifndef _RUBY_V8_TEMPLATE_
|
||||||
#define _RUBY_V8_TEMPLATE_
|
#define _RUBY_V8_TEMPLATE_
|
||||||
|
|
||||||
|
#include "rr.h"
|
||||||
|
|
||||||
|
void rr_init_template();
|
||||||
|
|
||||||
v8::Local<v8::ObjectTemplate> Racer_Create_V8_ObjectTemplate(VALUE object);
|
v8::Local<v8::ObjectTemplate> Racer_Create_V8_ObjectTemplate(VALUE object);
|
||||||
|
|
||||||
VALUE v8_Template_Set(VALUE self, VALUE name, VALUE value);
|
VALUE v8_Template_Set(VALUE self, VALUE name, VALUE value);
|
||||||
|
|
Loading…
Add table
Reference in a new issue