ext/rubypython_bridge/rubypython_bridge.c in rubypython-0.2.1 vs ext/rubypython_bridge/rubypython_bridge.c in rubypython-0.2.2
- old
+ new
@@ -3,10 +3,19 @@
VALUE mRubyPythonBridge;
extern VALUE cRubyPyObject;
extern VALUE cRubyPyModule;
extern VALUE cRubyPyClass;
+
+/*
+call-seq: func(modname,funcname,*args)
+Given a python module name _modname_ and a function name _funcname_ calls the given function
+with the supplied arguments.
+
+Use builtins as the module for a built in function.
+
+*/
static VALUE func_with_module(VALUE self, VALUE args)
{
int started_here=safe_start();
VALUE module,func,return_val;
if(RARRAY(args)->len<2) return Qfalse;
@@ -15,44 +24,24 @@
return_val=rp_call_func_with_module_name(module,func,args);
safe_stop(started_here);
return return_val;
}
-static VALUE rp_import_module(VALUE self,VALUE module)
-{
- VALUE instance=rb_class_instance_new(1,&module,cRubyPyModule);
- return instance;
-}
-
-
-
/*
* call-seq: import(modname)
*
-* imports a python file_module using the interpreter and returns a ruby wrapper
-
+* Imports the python module _modname_ using the interpreter and returns a ruby wrapper
*/
static VALUE rp_import(VALUE self,VALUE mname)
{
return rb_class_new_instance(1,&mname,cRubyPyModule);
}
-static VALUE rp_python_block(VALUE self)
-{
- rb_funcall(self,rb_intern("start"),0);
- rb_obj_instance_eval(0,NULL,self);
- rb_funcall(self,rb_intern("stop"),0);
-
-}
-
-
-
/*
* call-seq: start()
*
* Starts the python interpreter
-* RubyPythonBridge.start
*/
VALUE rp_start(VALUE self)
{
@@ -62,10 +51,15 @@
}
Py_Initialize();
return Qtrue;
}
+/*
+* call-seq: stop()
+*
+* Stop the python interpreter
+*/
VALUE rp_stop(VALUE self)
{
if(Py_IsInitialized())
{
@@ -85,16 +79,16 @@
void Init_rubypython_bridge()
{
mRubyPythonBridge=rb_define_module("RubyPythonBridge");
rb_define_module_function(mRubyPythonBridge,"func",func_with_module,-2);
- rb_define_module_function(mRubyPythonBridge,"import_module",rp_import_module,1);
rb_define_module_function(mRubyPythonBridge,"start",rp_start,0);
rb_define_module_function(mRubyPythonBridge,"stop",rp_stop,0);
- rb_define_module_function(mRubyPythonBridge,"run",rp_python_block,0);
rb_define_module_function(mRubyPythonBridge,"import",rp_import,1);
Init_RubyPyObject();
Init_RubyPyModule();
Init_RubyPyClass();
Init_RubyPyFunction();
Init_RubyPyError();
+ Init_RubyPyInstance();
+
}
\ No newline at end of file