JNIEXPORT void JNICALL Java_org_cellprofiler_javabridge_CPython_exec
  (JNIEnv *pEnv, jobject thiss, jstring script, jobject locals, jobject globals) {
    PyGILState_STATE state;
    PyObject *pLocals;
    PyObject *pGlobals;
    const char *pScript;
    PyObject *pResult;
    
    if (! pEnv) {
        throwError(pEnv, "JNIEnv was null.");
        return;
    }
    if (! script) {
        throwError(pEnv, "Script was null.");
        return;
    }
    check_init();
    state = PyGILState_Ensure();
    if (attach_env(pEnv) == 0) {
        pLocals = mapToDictionary(pEnv, locals);
        if (pLocals) {
            if ((locals != NULL) && 
                ((*pEnv)->IsSameObject(pEnv, locals, globals))) {
                pGlobals = pLocals;
                Py_INCREF(pGlobals);
            } else {
                pGlobals = mapToDictionary(pEnv, globals);
            }
            if (pGlobals) {
                if (! add_globals(pEnv, pGlobals)) {
                    pScript = (*pEnv)->GetStringUTFChars(pEnv, script, NULL);
                    pResult = PyRun_String(
                        pScript, Py_file_input, pGlobals, pLocals);
                    (*pEnv)->ReleaseStringUTFChars(pEnv, script, NULL);
                    if (pResult) {
                        Py_DECREF(pResult);
                    } else {
                        throwWrappedError(pEnv, __LINE__);
                    }
                }
                Py_DECREF(pGlobals);
            }
            Py_DECREF(pLocals);
        }
    }
    detach_env(pEnv);
    PyGILState_Release(state);
}
void lisp_main ()
{
    //environment global_env;
    add_globals(global_env);
    //repl("90> ", &global_env);
}
Exemple #3
0
int main ()
{
    environment global_env;
    add_globals(global_env);
    repl("90> ", &global_env);
}