Example #1
0
// modena_model_t instantiates the surrogate model
modena_model_t *modena_model_new
(
    const char *modelId
)
{
    // Initialize the Python Interpreter
    if(!Py_IsInitialized())
    {
        Py_Initialize();
    }

    // Initialize this module
    initlibmodena();

    PyObject *args = PyTuple_New(0);
    PyObject *kw = Py_BuildValue("{s:s}", "modelId", modelId);

    PyObject *m = PyObject_Call((PyObject *) &modena_model_tType, args, kw);
    Py_DECREF(args);
    Py_DECREF(kw);
    if(!m){ Modena_PyErr_Print(); }

    return (modena_model_t *) m;
}
Example #2
0
modena_function_t *modena_function_new
(
    const char *functionId
)
{
    // Initialize the Python Interpreter
    if(!Py_IsInitialized())
    {
        Py_Initialize();
    }

    // Initialize this module
    initlibmodena();

    PyObject *args = PyTuple_New(0);
    PyObject *kw = Py_BuildValue("{s:s}", "functionId", functionId);

    PyObject *pNewObj = PyObject_Call
    (
        (PyObject *) &modena_function_tType,
        args,
        kw
    );

    Py_DECREF(args);
    Py_DECREF(kw);
    if(!pNewObj)
    {
        if(PyErr_ExceptionMatches(modena_DoesNotExist))
        {
            PyErr_Clear();

            PyObject *pRet = PyObject_CallMethod
            (
                modena_SurrogateFunction,
                "exceptionLoad",
                "(z)",
                functionId
            );
            if(!pRet){ Modena_PyErr_Print(); }
            int ret = PyInt_AsLong(pRet);
            Py_DECREF(pRet);

            modena_error_code = ret;
            return NULL;
        }
        else
        {
            Modena_PyErr_Print();
        }
    }


    modena_function_t *self = (modena_function_t *) pNewObj;

    if(lt_dlinit())
    {
        fprintf(stderr, "lt_dlinit: %s\n", lt_dlerror());
        exit(1);
    }

    modena_function_load_library(self);

    return self;
}