void OutputAscii(const system_t* const sys, const body_t* const body){ //output cout << sys->step << " STEP:=====================" << endl; cout << "time = " << sys->time << endl; cout << "dt = " << sys->dt << endl; if(!(sys->step % OUTPUT_INTERVAL)){ //system file ofstream sysfile("result/system.txt", std::ios::app); sys->Output(sysfile); sysfile.close(); //create snapshot ostringstream buffer; buffer << "result/" << sys->step / OUTPUT_INTERVAL << ".txt"; ofstream file(buffer.str().c_str()); file << std::scientific << std::setprecision(16) << sys->time << endl; file << SETTING::NBODY << endl; for(int i = 0 ; i < SETTING::NBODY ; ++ i){ if(body[i].type == DEAD) continue; body[i].Output(file); } file.close(); // cout << "[[OUTPUT DONE]]" << endl; } }
int main( int argc, char *[] ) { if( argc < 2 || argc > 3 ) { HCWarning( USAGE ); return( -1 ); } // Parse the command line. char cmdline[80]; char *pfilename, *temp; int quiet = 0; getcmd( cmdline ); temp = cmdline; pfilename = NULL; while( *temp != '\0' && isspace( *temp ) ) { temp++; } if( *temp == '-' || *temp == '/' ) { temp++; if( (*temp != 'q' && *temp != 'Q') || !isspace( *(temp+1) ) ) { HCWarning( USAGE ); return( -1 ); } else { quiet = 1; temp++; while( *temp != '\0' && isspace( *temp ) ) { temp++; } if( *temp == '\0' ) { HCWarning( USAGE ); return( -1 ); } else { pfilename = temp; } } } else if( *temp != '\0' ) { pfilename = temp++; while( *temp != '\0' && *temp != '/' && *temp != '-' ) { temp++; } if( *temp != '\0' ) { *temp = '\0'; temp++; if( *temp != 'q' && *temp != 'Q' ) { HCWarning( USAGE ); return( -1 ); } else { temp++; while( *temp != '\0' && isspace( *temp ) ) { temp++; } if( *temp != '\0' ){ HCWarning( USAGE ); return( -1 ); } else { quiet = 1; } } } } SetQuiet( quiet ); // Parse the given filename. char path[_MAX_PATH]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; _fullpath( path, pfilename, _MAX_PATH ); _splitpath( path, drive, dir, fname, ext ); if( stricmp( ext, PhExt ) == 0 || stricmp( ext, HlpExt ) == 0 ) { HCWarning( BAD_EXT ); return( -1 ); } if( ext[0] == '\0' ){ _makepath( path, drive, dir, fname, HpjExt ); } char destpath[_MAX_PATH]; _makepath( destpath, drive, dir, fname, HlpExt ); InFile input( path ); if( input.bad() ) { HCWarning( FILE_ERR, pfilename ); return( -1 ); } // Set up and start the help compiler. try { HFSDirectory helpfile( destpath ); HFFont fontfile( &helpfile ); HFContext contfile( &helpfile ); HFSystem sysfile( &helpfile, &contfile ); HFCtxomap ctxfile( &helpfile, &contfile ); HFTtlbtree ttlfile( &helpfile ); HFKwbtree keyfile( &helpfile ); HFBitmaps bitfiles( &helpfile ); Pointers my_files = { NULL, NULL, &sysfile, &fontfile, &contfile, &ctxfile, &keyfile, &ttlfile, &bitfiles, }; if( stricmp( ext, RtfExt ) == 0 ) { my_files._topFile = new HFTopic( &helpfile ); RTFparser rtfhandler( &my_files, &input ); rtfhandler.Go(); } else { HPJReader projfile( &helpfile, &my_files, &input ); projfile.parseFile(); } helpfile.dump(); if( my_files._topFile != NULL ) { delete my_files._topFile; } if( my_files._phrFile != NULL ) { delete my_files._phrFile; } } catch( HCException ) { HCWarning( PROGRAM_STOPPED ); return( -1 ); } return( 0 ); }