int main(int argc, char* argv[]) { XmlParser parser; std::string dotExecutable = "..\\dot\\dot.exe"; int processCount = 8; // skip arg 0 (executable name) for( int i = 1; i < argc; ++i ) { std::cout << "arg: " << i << ", " << argv[i] << std::endl; if( argv[i][0] != '-' ) parser.addFile( argv[i] ); else { switch( argv[i][1] ) { case 'd': if( argc > i+1 ) { dotExecutable = argv[++i]; std::cout << "dot executable: " << dotExecutable << std::endl; } else { std::cout << "Missing dot executable for -d option" << std::endl; std::cout << "Press Enter to exit." << std::endl; char exitWait = std::cin.get(); return 0; } break; case 'p': if( argc > i+1 ) { processCount = atoi( argv[++i] ); if( processCount < 1 ) { std::cout << "Invalid value for -p option" << std::endl; std::cout << "Press Enter to exit." << std::endl; char exitWait = std::cin.get(); return 0; } std::cout << "process count: " << processCount << std::endl; } else { std::cout << "Missing process count for -p option" << std::endl; std::cout << "Press Enter to exit." << std::endl; char exitWait = std::cin.get(); return 0; } break; case 'D': dotExecutable = "dot.exe"; std::cout << "Use PATH for dot executable." << std::endl; break; case 'v': std::cout << "Version: " << VER_MAJOR << "." << VER_MINOR << "." << VER_PATCH << std::endl; return 0; default: printUsage(); return 0; } } } CreateDirectoryA( "dot" , NULL ); parser.parseFiles(); std::cout << "Finished Generating Dot files" << std::endl; CreateDirectoryA( "png" , NULL ); parser.drawGraphs( dotExecutable, processCount ); std::cout << "Press Enter to exit." << std::endl; char exitWait = std::cin.get(); return 0; }