From 1f9a3755711d9285d308e99b5da9ba9f114ef6d2 Mon Sep 17 00:00:00 2001 From: Charles Lowell Date: Tue, 18 May 2010 20:57:16 +0300 Subject: [PATCH] make all native classes have a private new --- ext/v8/rr.cpp | 4 +++- ext/v8/v8_cxt.cpp | 1 - ext/v8/v8_obj.cpp | 2 +- lib/v8/context.rb | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ext/v8/rr.cpp b/ext/v8/rr.cpp index 2c1221b..c76bb43 100644 --- a/ext/v8/rr.cpp +++ b/ext/v8/rr.cpp @@ -12,7 +12,9 @@ using namespace v8; VALUE rr_define_class(const char *name, VALUE superclass) { VALUE V8 = rb_define_module("V8"); VALUE V8_C = rb_define_module_under(V8, "C"); - return rb_define_class_under(V8_C, name, superclass); + VALUE klass = rb_define_class_under(V8_C, name, superclass); + rb_funcall(klass, rb_intern("private_class_method"), 1, rb_str_new2("new")); + return klass; } VALUE rr_str_to_perl_case(VALUE str) { diff --git a/ext/v8/v8_cxt.cpp b/ext/v8/v8_cxt.cpp index 47c45ff..d415624 100644 --- a/ext/v8/v8_cxt.cpp +++ b/ext/v8/v8_cxt.cpp @@ -77,7 +77,6 @@ namespace { void rr_init_cxt() { VALUE ContextClass = V8_C_Context = rr_define_class("Context"); - rr_define_singleton_method(ContextClass, "new", New, -1); rr_define_singleton_method(ContextClass, "New", New, -1); rr_define_singleton_method(ContextClass, "InContext", InContext, 0); rr_define_singleton_method(ContextClass, "GetEntered", GetEntered, 0); diff --git a/ext/v8/v8_obj.cpp b/ext/v8/v8_obj.cpp index 3b03b5b..b3d1859 100644 --- a/ext/v8/v8_obj.cpp +++ b/ext/v8/v8_obj.cpp @@ -30,7 +30,7 @@ namespace { void rr_init_obj() { rr_cV8_C_Object = rr_define_class("Object", rr_cV8_C_Value); rb_define_attr(rr_cV8_C_Object, "context", 1, 0); - rr_define_singleton_method(rr_cV8_C_Object, "new", v8_Object_New, 0); + rr_define_singleton_method(rr_cV8_C_Object, "New", v8_Object_New, 0); rr_define_method(rr_cV8_C_Object, "Get", Get, 1); rr_define_method(rr_cV8_C_Object, "Set", v8_Object_Set, 2); rr_define_method(rr_cV8_C_Object, "GetPropertyNames", v8_Object_GetPropertyNames, 0); diff --git a/lib/v8/context.rb b/lib/v8/context.rb index d22f293..674dae7 100644 --- a/lib/v8/context.rb +++ b/lib/v8/context.rb @@ -4,7 +4,7 @@ module V8 class Context attr_reader :native def initialize(opts = {}) - @native = C::Context.new(opts[:with]) + @native = C::Context::New(opts[:with]) end def open