#ifndef HISTORYMODULE_HEADERFILE
#define HISTORYMODULE_HEADERFILE

#include "HistoryEntry.h"
#include "Module.h"
#include <vector>

#define DELIMITATE_MODE_LBOUND 0
#define DELIMITATE_MODE_SRWF 1 // Stop Recording When Full
#define DELIMITATE_MODE_FIFO 2 // First In First Out
#define DELIMITATE_MODE_LIFO 3 // Last In First Out
#define DELIMITATE_MODE_UBOUND 4

using namespace std;

class HistoryModule : public Module {

private:
  vector<HistoryEntry *> vHistory;
  unsigned int historyLength;
  int delimitationMode;

  void initHistoryModule();

public:
  HistoryModule();
  HistoryModule(const char *name);

  bool set_maxHistoryLength(unsigned int length);
  unsigned int get_maxHistoryLength();

  bool set_delimitationMode(int delimitationMode);
  int get_delimitationMode();

  bool add_entry(float entryValue);
  unsigned int get_numberOfEntries();
};

#endif
