MFImplicitMF MFIMFCreateLOCA(LOCAData* data) { MFImplicitMF loca; MFNSpace space; loca=MFIMFCreateBaseClass(-1, data->np, "LOCA", data->mfErrorHandler); space=MFCreateLOCANSpace(data); MFIMFSetSpace(loca,space, data->mfErrorHandler); MFFreeNSpace(space, data->mfErrorHandler); MFIMFSetData(loca,(void*)data, data->mfErrorHandler); data->space=space; MFRefNSpace(space, data->mfErrorHandler); MFIMFSetFreeData(loca,MFLOCAFreeData, data->mfErrorHandler); MFIMFSetProject(loca,MFProjectLOCA, data->mfErrorHandler); MFIMFSetTangent(loca,MFTangentLOCA, data->mfErrorHandler); MFIMFSetScale(loca,MFScaleLOCA, data->mfErrorHandler); MFIMFSetProjectForSave(loca,MFLOCAProjectToDraw, data->mfErrorHandler); MFIMFSetProjectForDraw(loca,MFLOCAProjectToDraw, data->mfErrorHandler); MFIMFSetProjectForBB(loca,MFLOCAProjectToDraw, data->mfErrorHandler); return loca; }
MFNRegion MFNRegionCreateAUTO(MFNSpace space, int k, long *icp, double *RL0, double *RL1, double A0,double A1, MFErrorHandler e) { static char RoutineName[]={"MFNRegionCreateAUTO"}; MFNRegion Auto; struct MFAUTONRegionData *data; int i; Auto=MFNRegionCreateBaseClass("AUTO",e); MFNRegionSetTest(Auto,MFAUTONSpaceTest,e); data=malloc(sizeof(struct MFAUTONRegionData)); #ifndef MFNOSAFETYNET if(data==NULL) { sprintf(MFAUTONRegionErrorMsg,"Out of memory, trying to allocate %d bytes",sizeof(struct MFAUTONRegionData)); MFSetError(e,12,RoutineName,MFAUTONRegionErrorMsg,__LINE__,__FILE__); MFErrorHandlerOutOfMemory(e); return NULL; } #endif MFNRegionSetData(Auto,data,e); MFNRegionSetFreeData(Auto,MFAUTONRegionFreeData,e); MFRefNSpace(space,e); data->space=space; data->k=k; data->icp=icp; data->RL0=malloc(k*sizeof(double)); #ifndef MFNOSAFETYNET if(data->RL0==NULL) { sprintf(MFAUTONRegionErrorMsg,"Out of memory, trying to allocate %d bytes",k*sizeof(double)); MFSetError(e,12,RoutineName,MFAUTONRegionErrorMsg,__LINE__,__FILE__); MFErrorHandlerOutOfMemory(e); return NULL; } #endif for(i=0;i<k;i++)(data->RL0)[i]=RL0[i]; data->RL1=malloc(k*sizeof(double)); #ifndef MFNOSAFETYNET if(data->RL1==NULL) { sprintf(MFAUTONRegionErrorMsg,"Out of memory, trying to allocate %d bytes",k*sizeof(double)); MFSetError(e,12,RoutineName,MFAUTONRegionErrorMsg,__LINE__,__FILE__); MFErrorHandlerOutOfMemory(e); return NULL; } #endif for(i=0;i<k;i++)(data->RL1)[i]=RL1[i]; data->A0=A0; data->A1=A1; return(Auto); }