#ifndef CSV_READER_HEADERFILE
#define CSV_READER_HEADERFILE

#include "Module.h"
#include <fstream>

class CSVreaderModule : public Module {

private:
  FILE *fpointer;
  unsigned int num_of_datasets;
  unsigned int list_of_datasets[MAX_NUM_OF_DATA_SETS];
  float data_read[MAX_NUM_OF_DATA_SETS];
  unsigned int row, start_row, column;
  float input_data;
  bool flag_csv_reader_configured;
  unsigned int dataset_counter;

  // private fuctions
  void initialize_csvreader(FILE *fpointer, unsigned int column,
                            unsigned int start_row);

public:
  CSVreaderModule();
  CSVreaderModule(const char *name);
  CSVreaderModule(FILE *fpointer, unsigned int column, unsigned int start_row);
  CSVreaderModule(const char *name, FILE *fpointer, unsigned int column,
                  unsigned int start_row);

  bool read_one_row();

  bool read_field();
  float get_value_of_field(unsigned int field);

  // new functions
  bool get_next_value(float *value);

  void close_file();
};

#endif
