void F77_FUNC(ipunsetcallback,IPUNSETCALLBACK) (fptr* FProblem) { FUserData* fuser_data = (FUserData*) *FProblem; fuser_data->INTERMEDIATE_CB = NULL; SetIntermediateCallback(fuser_data->Problem, NULL); }
void F77_FUNC(ipsetcallback,IPSETCALLBACK) (fptr* FProblem, FIntermediate_CB inter_cb) { FUserData* fuser_data = (FUserData*) *FProblem; fuser_data->INTERMEDIATE_CB = inter_cb; SetIntermediateCallback(fuser_data->Problem, intermediate_cb); }
PyObject * set_intermediate_callback(PyObject * self, PyObject * args) { PyObject *intermediate_callback; problem *temp = (problem *) self; IpoptProblem nlp = (IpoptProblem) (temp->nlp); DispatchData myowndata; DispatchData *bigfield = (DispatchData *) (temp->data); /* Init the myowndata field */ myowndata.eval_intermediate_callback_python = NULL; if (!PyArg_ParseTuple(args, "O", &intermediate_callback)) { return NULL; } if (!PyCallable_Check(intermediate_callback)) { PyErr_SetString(PyExc_TypeError, "Need a callable object for function!"); return NULL; } else { bigfield->eval_intermediate_callback_python = intermediate_callback; /* Put a Python function object into this data structure */ /* * myowndata.eval_intermediate_callback_python = * intermediate_callback; */ /* DispatchData *dp = malloc(sizeof(DispatchData)); */ /* * memcpy((void*)dp, (void*)&myowndata, * sizeof(DispatchData)); */ /* bigfield = dp; */ /* * logger( "qqq: inside set_intermediate_callback, bigfield * is %p\n", bigfield ) ; */ /* * logger("[PyIPOPT] User specified data field to callback * function.\n"); */ SetIntermediateCallback(nlp, eval_intermediate_callback); Py_INCREF(Py_True); return Py_True; } }