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 rpy-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rpy-list