#include #include #include "grid.h" #include "fd.h" #include "visual.h" #include "io.h" void linecommand (char *); void dothefd (); void dothefa (); void dothevis(); void linecommand (char *linein) { char line[100], *cmd; int num; //if (asyncGetLine(line, 100) == 0) // return; printf("flow> "); fgets(line, 100, stdin); cmd = (char *)strtok(line, " \n"); if (!cmd) return; else if (strcmp(cmd,"exit") == 0) { printf("Bye\n"); exit(0); } else if (strcmp(cmd, "flowdir") == 0) dothefd(); else if (strcmp(cmd, "flowacc") == 0) dothefa(); else if (strcmp(cmd, "visualize") == 0) dothevis(); else printf("I do not understand your command\n"); // printf("flow> "); } void dothevis() { char *filename; Grid alt, col; int log = 0, mult; filename = (char *)strtok(NULL, " \n"); if (!filename) { printf("usage: visualize gridin [colorin]\n"); return; } if (gopen(&alt, filename) > 0) { printf("Error opening file %s\n", filename); return; } col = alt; mult = 1.0 / alt.cellsize; filename = (char *)strtok(NULL, " \n"); if (filename) { if (gopen(&col, filename) > 0) { printf("Error opening file %s\n", filename); return; } log = 1; } visualize(alt,col, log, mult); } void dothefd() { char *filein, *fileout; Grid altG, fdG; filein = (char *)strtok(NULL, " \n"); fileout = (char *)strtok(NULL, " \n"); if (!filein || !fileout) { printf("usage: flowdir filein fileout"); return; } if (gopen(&altG, filein) > 0) { printf("Error opening file %s", filein); return; } printf("Computing FD for %s...", filein); flowdir(&altG, &fdG); gsave(&fdG, fileout); printf("done\n"); return; } void dothefa() { char *filein, *fileout; Grid in, out; filein = (char *)strtok(NULL, " \n"); fileout = (char *)strtok(NULL, " \n"); if (!filein || !fileout) { printf("usage: flowacc filein fileout"); return; } if (gopen(&in, filein) > 0) { printf("Error opening file %s", filein); return; } printf("Computing FA for %s...", filein); flowacc(&in, &out); gsave(&out, fileout); printf("done\n"); return; } int main (int argc, char* argv[]) { Grid altG, fdG, faccG; char *line; if (argc == 4) { if (gopen(&altG, argv[1]) > 0) { printf("Error opening the grid. \n"); return 0; } flowdir(&altG, &fdG); gsave(&fdG, argv[2]); flowacc(&fdG, &faccG); gsave(&faccG, argv[3]); gkill(&altG); gkill(&fdG); gkill(&faccG); return 0; } if (argc == 1) { printf("Welcome!\n"); while (1) { linecommand(line); }; return 0; } printf("Error\n"); return 0; }