From adec237865ca1633ee02dbfd1c33879363b08218 Mon Sep 17 00:00:00 2001 From: Charles Lowell Date: Tue, 18 May 2010 15:45:36 +0300 Subject: [PATCH] move context to new style --- ext/v8/v8_cxt.cpp | 25 +++++++++++++++++-------- ext/v8/v8_cxt.h | 1 - 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/ext/v8/v8_cxt.cpp b/ext/v8/v8_cxt.cpp index 8e67f1f..47c45ff 100644 --- a/ext/v8/v8_cxt.cpp +++ b/ext/v8/v8_cxt.cpp @@ -65,17 +65,26 @@ namespace { unwrap(self)->Exit(); return self; } + + VALUE IsEntered(VALUE self) { + if (Context::InContext()) { + return rr_v82rb(unwrap(self) == Context::GetEntered()); + } else { + return Qfalse; + } + } } void rr_init_cxt() { - VALUE Context = V8_C_Context = rr_define_class("Context"); - rr_define_singleton_method(Context, "new", New, -1); - rr_define_singleton_method(Context, "New", New, -1); - rr_define_singleton_method(Context, "InContext", InContext, 0); - rr_define_singleton_method(Context, "GetEntered", GetEntered, 0); - rr_define_method(Context, "Global", Global, 0); - rr_define_method(Context, "Enter", Enter, 0); - rr_define_method(Context, "Exit", Exit, 0); + 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); + rr_define_method(ContextClass, "Global", Global, 0); + rr_define_method(ContextClass, "Enter", Enter, 0); + rr_define_method(ContextClass, "Exit", Exit, 0); + rr_define_method(ContextClass, "IsEntered", IsEntered, 0); } VALUE rr_reflect_v8_context(Handle value) { diff --git a/ext/v8/v8_cxt.h b/ext/v8/v8_cxt.h index 9bd3ff5..09423bb 100644 --- a/ext/v8/v8_cxt.h +++ b/ext/v8/v8_cxt.h @@ -5,7 +5,6 @@ #include "v8.h" #include "v8_ref.h" -extern VALUE V8_C_Object; extern VALUE V8_C_Context; void rr_init_cxt();