//#include <string.h>
//#include <conio.h>  // for dos

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// --

enum Error_e {
  /* fatal errors */
  NOMEM = -1000,
  OPENFAIL,

  /* success */
  OK    = 0
  
  /* tollerable errors */
   
};

typedef enum Error_e Error_t;

// --

struct csvfile_s {
    FILE * output;
    int  varcount;
};

typedef struct csvfile_s csvfile_t;

double time;

// --
// limit v to within low (l) and high (h) limits
#define limit(v, l, h)  ((v) > (h)) ? (h) : ((v) < (l)) ? (l) : (v)

// --


Error_t initcsv(csvfile_t * data, int varcount, char ** titles) ;
Error_t writecsv(csvfile_t * data, DATATYPE * array) ;
void    closecsv(csvfile_t * data) ;

DATATYPE step( float startTime, DATATYPE minlevel, DATATYPE maxlevel ) ;
DATATYPE sinewave( float amplitude, float frequincy);
