bool fileexists(QString ls){ QFileInfo lfi(ls); if (!((lfi.exists() && lfi.isFile()))) { se(q("Не найден файл ")+ls); return false; } return true; }
/*! Dumps the internal structures. For debugging only! */ void TagFileParser::dump() { msg("Result:\n"); QListIterator<TagClassInfo> lci(m_tagFileClasses); //============== CLASSES TagClassInfo *cd; for (;(cd=lci.current());++lci) { msg("class `%s'\n",cd->name.data()); msg(" filename `%s'\n",cd->filename.data()); if (cd->bases) { QListIterator<BaseInfo> bii(*cd->bases); BaseInfo *bi; for ( bii.toFirst() ; (bi=bii.current()) ; ++bii) { msg( " base: %s \n", bi->name.data() ); } } QListIterator<TagMemberInfo> mci(cd->members); TagMemberInfo *md; for (;(md=mci.current());++mci) { msg(" member:\n"); msg(" kind: `%s'\n",md->kind.data()); msg(" name: `%s'\n",md->name.data()); msg(" anchor: `%s'\n",md->anchor.data()); msg(" arglist: `%s'\n",md->arglist.data()); } } //============== NAMESPACES QListIterator<TagNamespaceInfo> lni(m_tagFileNamespaces); TagNamespaceInfo *nd; for (;(nd=lni.current());++lni) { msg("namespace `%s'\n",nd->name.data()); msg(" filename `%s'\n",nd->filename.data()); QStringList::Iterator it; for ( it = nd->classList.begin(); it != nd->classList.end(); ++it ) { msg( " class: %s \n", (*it).latin1() ); } QListIterator<TagMemberInfo> mci(nd->members); TagMemberInfo *md; for (;(md=mci.current());++mci) { msg(" member:\n"); msg(" kind: `%s'\n",md->kind.data()); msg(" name: `%s'\n",md->name.data()); msg(" anchor: `%s'\n",md->anchor.data()); msg(" arglist: `%s'\n",md->arglist.data()); } } //============== FILES QListIterator<TagFileInfo> lfi(m_tagFileFiles); TagFileInfo *fd; for (;(fd=lfi.current());++lfi) { msg("file `%s'\n",fd->name.data()); msg(" filename `%s'\n",fd->filename.data()); QStringList::Iterator it; for ( it = fd->namespaceList.begin(); it != fd->namespaceList.end(); ++it ) { msg( " namespace: %s \n", (*it).latin1() ); } for ( it = fd->classList.begin(); it != fd->classList.end(); ++it ) { msg( " class: %s \n", (*it).latin1() ); } QListIterator<TagMemberInfo> mci(fd->members); TagMemberInfo *md; for (;(md=mci.current());++mci) { msg(" member:\n"); msg(" kind: `%s'\n",md->kind.data()); msg(" name: `%s'\n",md->name.data()); msg(" anchor: `%s'\n",md->anchor.data()); msg(" arglist: `%s'\n",md->arglist.data()); } QListIterator<TagIncludeInfo> mii(fd->includes); TagIncludeInfo *ii; for (;(ii=mii.current());++mii) { msg(" includes id: %s name: %s\n",ii->id.data(),ii->name.data()); } } //============== GROUPS QListIterator<TagGroupInfo> lgi(m_tagFileGroups); TagGroupInfo *gd; for (;(gd=lgi.current());++lgi) { msg("group `%s'\n",gd->name.data()); msg(" filename `%s'\n",gd->filename.data()); QStringList::Iterator it; for ( it = gd->namespaceList.begin(); it != gd->namespaceList.end(); ++it ) { msg( " namespace: %s \n", (*it).latin1() ); } for ( it = gd->classList.begin(); it != gd->classList.end(); ++it ) { msg( " class: %s \n", (*it).latin1() ); } for ( it = gd->fileList.begin(); it != gd->fileList.end(); ++it ) { msg( " file: %s \n", (*it).latin1() ); } for ( it = gd->subgroupList.begin(); it != gd->subgroupList.end(); ++it ) { msg( " subgroup: %s \n", (*it).latin1() ); } for ( it = gd->pageList.begin(); it != gd->pageList.end(); ++it ) { msg( " page: %s \n", (*it).latin1() ); } QListIterator<TagMemberInfo> mci(gd->members); TagMemberInfo *md; for (;(md=mci.current());++mci) { msg(" member:\n"); msg(" kind: `%s'\n",md->kind.data()); msg(" name: `%s'\n",md->name.data()); msg(" anchor: `%s'\n",md->anchor.data()); msg(" arglist: `%s'\n",md->arglist.data()); } } //============== PAGES QListIterator<TagPageInfo> lpi(m_tagFilePages); TagPageInfo *pd; for (;(pd=lpi.current());++lpi) { msg("page `%s'\n",pd->name.data()); msg(" title `%s'\n",pd->title.data()); msg(" filename `%s'\n",pd->filename.data()); } //============== DIRS QListIterator<TagDirInfo> ldi(m_tagFileDirs); TagDirInfo *dd; for (;(dd=ldi.current());++ldi) { msg("dir `%s'\n",dd->name.data()); msg(" path `%s'\n",dd->path.data()); QStringList::Iterator it; for ( it = dd->fileList.begin(); it != dd->fileList.end(); ++it ) { msg( " file: %s \n", (*it).latin1() ); } for ( it = dd->subdirList.begin(); it != dd->subdirList.end(); ++it ) { msg( " subdir: %s \n", (*it).latin1() ); } } }
int main() { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(1024, 768, 32, SDL_HWSURFACE); SDL_Surface *trace = SDL_CreateRGBSurface(SDL_HWSURFACE, 1024, 768, 32, 0, 0, 0, 0); SDL_WM_SetCaption("Solar system demo", NULL); Uint32 white = SDL_MapRGB(screen->format, 255, 255, 255); Uint32 black = SDL_MapRGB(screen->format, 0, 0, 0); Uint32 red = SDL_MapRGB(screen->format, 255, 0, 0); Uint32 green = SDL_MapRGB(screen->format, 0, 255, 0); Uint32 blue = SDL_MapRGB(screen->format, 0, 0, 255); // Universe U; // Sun *sun = new Sun(1e+10); // U.addBody(sun); // U.addBody(new SpaceBody(0, sun, 0.7, 150)); // U.addBody(new SpaceBody(0, sun, 0.5, 150, 0, 0, M_PI/4)); Universe U; double sunmass = 1e+10; StaticIntegrator si; U.addBody(new Body(sunmass, si)); KeplerIntegrator ki1(Orbit(sunmass, 0, 0.7, 150)); U.addBody(new Body(0, ki1)); // KeplerIntegrator ki2(Orbit(sunmass, 0, 0, 150, M_PI/2)); // U.addBody(new Body(0, ki2)); EulerIntegrator ei(Vector3D(150, 0, 0), Vector3D(0, -sqrt((sunmass * G)/150), 0)); Body *eulerbody = new Body(0, ei); U.addBody(eulerbody); LeapfrogIntegrator lfi(Vector3D(150, 0, 0), Vector3D(0, -sqrt((sunmass * G)/150), 0)); Body *leapfrogbody = new Body(0, lfi); U.addBody(leapfrogbody); SDL_Rect pos1, pos2; pos2.x = pos2.y = 0; Vector3D v; SDL_Surface *rect = SDL_CreateRGBSurface(SDL_HWSURFACE, 10, 10, 32, 0, 0, 0, 0); SDL_FillRect(rect, NULL, white); SDL_Surface *littlerect = SDL_CreateRGBSurface(SDL_HWSURFACE, 1, 1, 32, 0, 0, 0, 0); bool ok = true; SDL_Event evt; Uint32 color; Uint32 startTime = SDL_GetTicks(); while (ok) { SDL_PollEvent(&evt); switch (evt.type) { case SDL_QUIT: ok = false; break; } SDL_FillRect(screen, NULL, black); SDL_BlitSurface(trace, NULL, screen, &pos2); // for(int i=0;i<2000;i++) U.evolve(200); for (std::shared_ptr<Body> &it : U.getBodies()) { color=it.get() == eulerbody ? green : (it.get() == leapfrogbody ? red : blue); v = Vector3D(512, 384, 0) + it->getPosition(); if(it.get() == leapfrogbody) v+=Vector3D(2,0,0); pos1.x = v.getX(); pos1.y = v.getY(); SDL_FillRect(littlerect, NULL, color); SDL_BlitSurface(littlerect, NULL, trace, &pos1); pos1.x -= 5; pos1.y -= 5; SDL_FillRect(rect, NULL, color); SDL_BlitSurface(rect, NULL, screen, &pos1); } SDL_Flip(screen); } SDL_Quit(); return EXIT_SUCCESS; }