comp20003-project02/main.c

105 lines
3 KiB
C
Raw Normal View History

/* main.c
*
* Created by Rory Healy (healyr@student.unimelb.edu.au)
* Created on 25th August 2021
* Last modified 9th September 2021
*
* Lists the watchtowers that are in each face of the polygon.
* The polygon can be split using a pair of integers, which represent
* the edge numbers that should be connected. This comes from stdin.
*
2021-09-08 22:22:48 +10:00
* To see valid input arguments, run ./voronoi2
*
*/
#ifndef DCEL_HEADER
#include "dcel.h"
#endif
#ifndef COMMON_HEADER
#include "common.h"
#endif
#ifndef VORONOI_HEADER
#include "voronoi.h"
#endif
#ifndef INPUT_HEADER
#include "input.h"
#endif
// int main(int argc, char **argv) {
// /* Input and output files */
// FILE *datasetFile = NULL, *polygonFile = NULL, *outputFile = NULL;
// checkInputArgs(argc, argv, &datasetFile, &polygonFile, &outputFile);
// /* Stores information about the towers given in dataset file */
// tower_t **towers = malloc(sizeof(*towers));
// checkNullPointer(towers);
// int numTowers = 0;
// towers = readTowers(towers, datasetFile, &numTowers);
// /* Stores information about the vertices in the polygon file */
// vertex_t **vertices = malloc(sizeof(*vertices));
// checkNullPointer(vertices);
// int numVertices = 0;
// vertices = readPolygon(vertices, polygonFile, &numVertices);
// /* Create DCEL structure from vertices */
// /* Check for splits, split the polygon if needed */
// /* Counts towers in each polygon, outputs to outputFile */
// /* Cleaning up data */
// freeTowers(towers, numTowers);
// freeVertices(vertices, numVertices);
// fclose(datasetFile);
// fclose(polygonFile);
// fclose(outputFile);
// return 0;
// }
int main(int argc, char **argv) {
/* Ensure input arguments are correct */
2021-09-08 22:22:48 +10:00
if (argc == 1) {
printArgError(STAGE_ERROR, "Incorrect usage.");
}
enum stages stage = getStage(argv[1]);
int expectedArgs = getExpectedArgs(stage);
if (expectedArgs != argc) {
printArgError(stage, "Incorrect number of inputs.");
}
/* Then run the program according to the stage given */
switch(stage) {
/* Expected usage: ./voronoi2 1 pointsFile outputFile */
case STAGE_1:
stage1(argv[2], argv[3]);
break;
/* Expected usage: ./voronoi2 2 pointsFile polygonFile outputFile */
case STAGE_2:
stage2(argv[2], argv[3], argv[4]);
break;
/* Expected usage: ./voronoi2 3 dataFile polygonFile outputFile */
case STAGE_3:
stage3(argv[2], argv[3], argv[4]);
break;
/* Expected usage: /voronoi2 4 dataFile polygonFile outputFile */
case STAGE_4:
stage4(argv[2], argv[3], argv[4]);
break;
/* Return error if stage number isn't defined. */
case STAGE_ERROR:
default:
fprintf(stderr, "Stage was not handled ENUM value (%d)\n", stage);
exit(EXIT_FAILURE);
}
return 0;
}