#include "CSV_Writer.h"
//#include <string>
//#include <iostream>

#define STRINGLENGTH 5000

void CSV_Writer::initialize_csv_writer(char* filepath_write) {
	//fpointer_write = fopen(filepath_write, "w");
	fopen_s(&fpointer_write, filepath_write, "w");

	//printf("pointer address: %p\n", fpointer_write);
	//getchar();
}

CSV_Writer::CSV_Writer(char* filepath_write) {
	//setName(NO_NAME);
	initialize_csv_writer(filepath_write);
}

/*
CSV_Writer :: CSV_Writer(char* name, char* filepath_write) {
	setName(name);
	initialize_csv_writer(filepath_write);
}
*/


bool CSV_Writer::write_field(int dataset) {
	if (fpointer_write) {
		fprintf(fpointer_write, "%i", dataset);
		return true;
	}
	return false;
}

bool CSV_Writer::write_field(float dataset) {
	if (fpointer_write) {
		fprintf(fpointer_write, "%f", dataset);
		return true;
	}
	return false;
}

bool CSV_Writer::write_field(char* dataset) {
	if (fpointer_write) {
		fprintf(fpointer_write, "%s", dataset);
		return true;
	}
	return false;
}

bool CSV_Writer::write_field(std::string dataset) {
	if (fpointer_write) {
		fprintf(fpointer_write, "%s", dataset.c_str());
		return true;
	}
	return false;
}


bool CSV_Writer::make_new_field() {
	if (fpointer_write) {
		fprintf(fpointer_write, ",");
		return true;
	}
	return false;
}

bool CSV_Writer::make_new_line() {
	if (fpointer_write) {
		fprintf(fpointer_write, "\n");
		return true;
	}
	return false;
}


bool CSV_Writer::write_row_data(unsigned int num_of_datasets, float* datasets) {

	if (fpointer_write) {
		for (unsigned int d_ix = 0; d_ix < num_of_datasets; d_ix++) {
			fprintf(fpointer_write, "%f", datasets[d_ix]);
			if (d_ix < num_of_datasets - 1)
				fprintf(fpointer_write, ",");
		}
		fprintf(fpointer_write, "\n");
		return true;
	}
	return false;
}

void CSV_Writer::close_file() {

	if (fpointer_write != NULL)
		fclose(fpointer_write);
}
