Revision: 454
http://rpy.svn.sourceforge.net/rpy/?rev=454&view=rev
Author: lgautier
Date: 2008-03-21 15:31:25 -0700 (Fri, 21 Mar 2008)
Log Message:
-----------
Added a boolean to indicate whether the embedded R had been initialized or not
The initialization is now only possible if that boolean is False
Modified Paths:
--------------
branches/rpy_nextgen/rpy/rinterface/rinterface.c
Modified: branches/rpy_nextgen/rpy/rinterface/rinterface.c
===================================================================
--- branches/rpy_nextgen/rpy/rinterface/rinterface.c 2008-03-21 17:49:18 UTC
(rev 453)
+++ branches/rpy_nextgen/rpy/rinterface/rinterface.c 2008-03-21 22:31:25 UTC
(rev 454)
@@ -87,6 +87,7 @@
error("Interrupted");
}
+static PyObject *embeddedR_isInitialized;
/* The Python original SIGINT handler */
PyOS_sighandler_t python_sigint;
@@ -135,6 +136,12 @@
*/
static PyObject* EmbeddedR_init(PyObject *self, PyObject *args)
{
+
+ if (PyObject_IsTrue(embeddedR_isInitialized)) {
+ PyErr_Format(PyExc_RuntimeError, "Already initialized.");
+ return NULL;
+ }
+
//FIXME: arbitrary number of options
//char *defaultargv[] = {"rpython", "--verbose"};
char *options[5] = {"", "", "", "", ""};
@@ -156,9 +163,12 @@
int status = Rf_initEmbeddedR(n_opt, options);
+ embeddedR_isInitialized = PyBool_FromLong((long)1);
+
globalEnv->sexp = R_GlobalEnv;
PyObject *res = PyInt_FromLong(status);
+
return res;
}
PyDoc_STRVAR(EmbeddedR_init_doc,
@@ -1355,6 +1365,12 @@
Py_INCREF(ErrorObject);
PyModule_AddObject(m, "RobjectNotFound", ErrorObject);
+ embeddedR_isInitialized = PyBool_FromLong((long)0);
+ if (PyModule_AddObject(m, "isInitialized", embeddedR_isInitialized) < 0)
+ return;
+ //FIXME: DECREF ?
+ //Py_DECREF(embeddedR_isInitialized);
+
globalEnv = (SexpObject *)PyObject_New(SexpObject,
&EnvironmentSexp_Type);
globalEnv->sexp = R_EmptyEnv;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
rpy-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rpy-list