void lfmxevs(lfit *lf, mxArray *mcell) { int d, i, j; double *ll, *ur, *mg, *drv; char evstr[16], mod[16], mdir[256]; evstruc *evs; fitpt *fp; deriv *dv; evs = &lf->evs; fp = &lf->fp; dv = &lf->dv; d = lf->lfd.d; if (mxIsChar(mxGetField(mcell,0,"type"))) { mxGetString(mxGetField(mcell,0,"type"),evstr,16); ev(evs) = lfevstr(evstr); } else { ev(evs) = EPRES; evs->mg[0] = mxGetN(mxGetField(mcell,0,"type")); fp->xev = mxGetPr(mxGetField(mcell,0,"type")); } mxGetString(mxGetField(mxGetField(mcell,0,"module"),0,"name"),mod,16); mxGetString(mxGetField(mxGetField(mcell,0,"module"),0,"directory"),mdir,256); MODPARAMS(lf) = mxGetPr(mxGetField(mxGetField(mcell,0,"module"),0,"parameters")); MODNPARAMS(lf) = mxGetN(mxGetField(mxGetField(mcell,0,"module"),0,"parameters")); initmodule(&lf->mdl,mod,mdir,lf); ll = mxGetPr(mxGetField(mcell,0,"lower_left")); ur = mxGetPr(mxGetField(mcell,0,"upper_right")); mg = mxGetPr(mxGetField(mcell,0,"grid")); j = mxGetN(mxGetField(mcell,0,"grid")); cut(evs) = mxGetPr(mxGetField(mcell,0,"cut"))[0]; for (i=0; i<d; i++) { evs->fl[i] = ll[i]; evs->fl[i+d] = ur[i]; if (ev(evs) != EPRES) evs->mg[i] = (j==1) ? mg[0] : mg[i]; } mk(evs) = mxGetPr(mxGetField(mcell,0,"maxk"))[0]; drv = mxGetPr(mxGetField(mcell,0,"derivative")); j = mxGetN(mxGetField(mcell,0,"derivative")); for (i=0; i<j; i++) dv->deriv[i] = drv[i]-1; dv->nd = (drv[0]>0) ? j : 0; }
} return (object*)PyErr_BadArgument(); } /*** FUNCTIONS FROM THE MODULE ***/ static struct methodlist amigalibs_global_methods[] = { {"openlib", amigalibs_openlib, 0}, {"obj2reg", amigalibs_obj2reg, 0}, {"addr", amigalibs_addr, 0}, {"fixstr", amigalibs_fixstr, 0}, {NULL, NULL} /* sentinel */ }; void initamigalibs Py_PROTO((void)) { object *m, *d; m = initmodule("amigalibs", amigalibs_global_methods); d = getmoduledict(m); /* Initialize amigalibs.error exception */ AmigalibsError = PyErr_NewException("amigalibs.error", NULL, NULL); if (AmigalibsError != NULL) dictinsert(d, "error", AmigalibsError); }