+}
+
+int main(int argc, char **argv){
+ strategy strat = HYBRID;
+ int optchar;
+
+ while((optchar = getopt(argc, argv, "cdhoy")) != -1){
+ switch(optchar){
+ case 'c':
+ strat = COORD;
+ if(DEBUG) fprintf(stderr, "Strategy changed to Coordinate based\n");
+ break;
+ case 'd':
+ DEBUG = true;
+ if(DEBUG) fprintf(stderr, "Debug enabled\n");
+ break;
+ case 'h':
+ usage(argv[0]);
+ return 0;
+ case 'o':
+ strat = OBJECT;
+ if(DEBUG) fprintf(stderr, "Strategy changed to Object based\n");
+ break;
+ case 'y':
+ strat = HYBRID;
+ if(DEBUG) fprintf(stderr, "Strategy changed to Hybrid\n");
+ break;
+ case '?':
+ if(isprint(optopt)){
+ fprintf(stderr, "Unknown option `-%c'.\n", optopt);
+ } else {
+ fprintf(stderr, "Unknown option char `-\\x%x'.\n", optopt);
+ }
+ return 2;
+ default:
+ break;
+ }
+ }
+
+ if(optind == argc){
+ fprintf(stderr, "You have not specified a file, reading from stdin\n");
+ solve(stdin);
+ }
+
+ for(int filepathindex = optind; filepathindex < argc; filepathindex++){
+ char *currentfilepath = argv[filepathindex];
+ fprintf(stderr, "Processing: %s\n", currentfilepath);
+ if(DEBUG) fprintf(stderr, "Strategy: %d\n", strat);
+ FILE *currentfile = fopen(currentfilepath, "r");
+ if(DEBUG) fprintf(stderr, "Opening file\n");
+ solve(currentfile);
+ if(DEBUG) fprintf(stderr, "Closing file\n");
+ fclose(currentfile);
+ }