1
0
Fork 0
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:
Charles Lowell 2010-05-10 07:56:52 -05:00
parent 1b2c6e276c
commit 5194b11a5b
13 changed files with 66 additions and 36 deletions

View file

@ -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);
} }

View file

@ -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

View file

@ -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);
@ -68,9 +48,6 @@ extern "C" {
rb_define_method(V8_C_Message, "GetEndPosition", (VALUE(*)(...)) v8_Message_GetEndPosition, 0); rb_define_method(V8_C_Message, "GetEndPosition", (VALUE(*)(...)) v8_Message_GetEndPosition, 0);
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);
} }
} }

View file

@ -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);
} }

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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;

View file

@ -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);

View file

@ -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)));

View file

@ -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);

View file

@ -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);

View file

@ -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);