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);
}
Exemplo n.º 3
0
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;
	}
}