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;
}