void flFree(Flag* F) { for(unsigned int i = 0; i < daGetSize(&F->Vertices); i++) { delVertex((Vertex*) daGet(&F->Vertices, i)); } for(unsigned int i = 0; i < daGetSize(&F->Rigids); i++) { delRigid((Rigid*) daGet(&F->Rigids, i)); } daFree(&F->Vertices); daFree(&F->Rigids); }
void freeDll(void) { int i; Variable *var; //Poistettaan kaikki muuttujat for (i = 1; i != mVariableHandler.mSize;i++) { var = mVariableHandler.mPtrArray[i]; if (var != NULL) { switch(var->mType) { case VarTypeBody: cpBodyFree((cpBody*)var->mPtr);break; case VarTypeShape: cpShapeFree((cpShape*)var->mPtr);break; case VarTypeConstraint: cpConstraintFree((cpConstraint*)var->mPtr);break; case VarTypeDataArray: daFree((DataArray*)var->mPtr);break; } } } //Tuhotaan ne kaikki... vhDestroy(&mVariableHandler); cpSpaceDestroy(&mSpace); mState = Unloaded; }
void delPolygon(Polygon* P) { unsigned int i; /* Destruction des liaisons */ for(i = 0; i < daGetSize(&P->Rigids); i++) { delRigid((Rigid*)daGet(&P->Rigids, i)); } for(i = 0; i < daGetSize(&P->InternalRigids); i++) { delRigid((Rigid*)daGet(&P->InternalRigids, i)); } /* Libération des Dynamic Arrays */ daFree(&P->Rigids); daFree(&P->Vertices); daFree(&P->InternalRigids); if(P->Center != NULL) delVertex(P->Center), P->Center = NULL; free(P); }
__declspec( dllexport ) void deletevar( const void * _in, int in_size, void * _out, int out_sz ) { cpBody *body; int i; int index; Variable *var; Variable *mainVar = vhRemoveVariable(&mVariableHandler,PEEKINT(INPUT_MEMBLOCK,0)); if (mainVar->mType == VarTypeBody) { body = (cpBody*)mainVar->mPtr; resetVariableList(); cpBodyEachShape(body,listShape,0); index = 0; for (i = 0;i != mVariableListIterator;i++) { var = mVariableList[i]; POKEINT(OUTPUT_MEMBLOCK,index,var->mCBPtr);index += 4; cpSpaceRemoveShape(&mSpace,(cpShape*)var->mPtr); cpShapeFree((cpShape*)var->mPtr); //MessageBoxA(NULL,"ShapeRemoved2","Error",MB_OK); vhRemoveVariable(&mVariableHandler,var->mLocalHandle); varFree(var); } resetVariableList(); cpBodyEachConstraint(body,listConstraint,0); for (i = 0;i != mVariableListIterator;i++) { var = mVariableList[i]; POKEINT(OUTPUT_MEMBLOCK,index,var->mCBPtr);index+=4; //MessageBoxA(NULL,"Constraint removed2","Error",MB_OK); cpSpaceRemoveConstraint(&mSpace,(cpConstraint*)var->mPtr); cpConstraintFree((cpConstraint*)var->mPtr); vhRemoveVariable(&mVariableHandler,var->mLocalHandle); varFree(var); } POKEINT(OUTPUT_MEMBLOCK,index,0);//End point //MessageBoxA(NULL,"BodyRemoved","Error",MB_OK); cpSpaceRemoveBody(&mSpace,body); cpBodyFree(body); varFree(mainVar); } else if (mainVar->mType == VarTypeShape) { cpSpaceRemoveShape(&mSpace,(cpShape*)mainVar->mPtr); cpShapeFree((cpShape*)mainVar->mPtr); //MessageBoxA(NULL,"ShapeRemoved","Error",MB_OK); varFree(mainVar); POKEINT(OUTPUT_MEMBLOCK,0,0); } else if (mainVar->mType == VarTypeConstraint) { cpSpaceRemoveConstraint(&mSpace,(cpConstraint*)mainVar->mPtr); cpConstraintFree((cpConstraint*)mainVar->mPtr); varFree(mainVar); POKEINT(OUTPUT_MEMBLOCK,0,0); } else if (mainVar->mType == VarTypeDataArray) { daFree((DataArray*)mainVar->mPtr); varFree(mainVar); POKEINT(OUTPUT_MEMBLOCK,0,0); } else { //Failure... MessageBoxA(NULL,"Unknown cpChipmunk error 11","Error",MB_OK); varFree(mainVar); POKEINT(OUTPUT_MEMBLOCK,0,0); } }
void delDynArr(DynArr* DA) { daFree(DA); free(DA); }
void main (int argc, char **argv) { PTR_ROOT root; BOOL error; char *inputfile; //Variáveis de entrada REAL tempoInicial = 0.0; REAL passoDeTempo = 0.1; int tamanhoDoSistema = 2; REAL *y; REAL *derivadaY; int *index = NULL; #pragma region AlocacaoDeMemoria y = (REAL*)malloc(tamanhoDoSistema*sizeof(REAL)); derivadaY = (REAL*)malloc(tamanhoDoSistema*sizeof(REAL)); #pragma endregion y[0]=1.0; y[1]=1.0; derivadaY[0] = 0.0; derivadaY[1] = 1.0; if (argc > 1) inputfile = argv[1]; else inputfile = "demo.dat"; inputfile = "?"; user_init = init_root; if (error = daSetup (inputfile, &root, funcaoResidual, tamanhoDoSistema, tempoInicial, y, derivadaY, index, NULL, NULL), error) { printf ("Setup error = %d\n", error); exit(1); } /**root.iter.rtol = 0; *root.iter.atol = 1e-6;*/ if (error = dasslc (INITIAL_COND, &root, funcaoResidual, &tempoInicial, passoDeTempo, NULL, NULL), error < 0) printf ("error = %d\n", error); else for (; passoDeTempo <= 1.; passoDeTempo += .1) if (error = dasslc (TRANSIENT, &root, funcaoResidual, &tempoInicial, passoDeTempo, NULL, NULL), error < 0) { printf ("error = %d\n", error); break; } daStat (root.savefile, &root); /*root.iter.atol[0] = 1e-20; if (!root.iter.stol) root.iter.atol[1] = 1e-20; if (error >= 0) if (error = dasslc (STEADY_STATE, &root, funcaoResidual, &tempoInicial, passoDeTempo, jacobiano, ppsolver), error < 0) printf ("error = %d\n", error); daStat (root.savefile, &root); */ #pragma region LiberacaoMemoria free((void*)y); free((void*)derivadaY); #pragma endregion daFree (&root); } /* main */