#ifndef __ARG_PARSER_H__
#define __ARG_PARSER_H__

#include "string.h"
#include "stdio.h"
#include "assert.h"

// ===========================================================
// A simple class to collect all the command line arguments
// ===========================================================

class ArgParser {

public:

  ArgParser() { DefaultValues(); }

  ArgParser(int argc, char *argv[]) {
    DefaultValues();

    for (int i = 1; i < argc; i++) {
      if (!strcmp(argv[i],"-input")) {
	i++; assert (i < argc); 
	input_file = argv[i];
      } else if (!strcmp(argv[i],"-points")) {
	i++; assert (i < argc); 
	points = atoi(argv[i]);
      } else if (!strcmp(argv[i],"-iters")) {
	i++; assert (i < argc); 
	iters = atoi(argv[i]);
      } else if (!strcmp(argv[i],"-size")) {
	i++; assert (i < argc); 
	width = height = atoi(argv[i]);
      } else if (!strcmp(argv[i],"-output")) {
	i++; assert (i < argc); 
	output_file = argv[i];
      } else if (!strcmp(argv[i],"-gui")) {
	gui = true;
      } else if (!strcmp(argv[i],"-cubes")) {
        cubes = true;
      } else {
	printf ("whoops error with command line argument %d: '%s'\n",i,argv[i]);
	assert(0);
      }
    }
  }

  void DefaultValues() {
    input_file = NULL;
    points = 10000;
    iters = 10;
    width = 100;
    height = 100;
    output_file = NULL;
    gui = 0;
    cubes = 0;
  }

  // ==============
  // REPRESENTATION
  // all public! (no accessors)

  char *input_file;
  int points;
  int iters;
  int width;
  int height;
  char *output_file;
  int gui;
  int cubes;
};

#endif

