// Created By Matthew B. Gately

#include <string>
#include <stdio.h>

using namespace std;


struct index_info {
	int primary_key;
	int record_number;
};

struct ISAM_stat {
	int recordsAdded;
	int recordsUpdated;
	int recordsDeleted;
	int recordsRetrieved;
};

class ISAM {
private:
	// Private Variables
	size_t size;
	string file_name_base;
	string dataFileName;
	string indexFileName;
	string statFileName;
	ISAM_stat stats;

	// Private Functions
	int findRecord(int primary_key);
	int sortIndex(void);
	int addIndexInfo(index_info info);
	double fileSize(FILE *myFile);
public:
	// Public Functions
	ISAM(size_t object_size, string file_name);
	~ISAM();
	int getRecord(void *data, int primary_key);
	int setRecord(void *data, int primary_key);
	int deleteRecord(int primary_key);
	int getNumRecordsAdded();
	int getNumRecordsUpdated();
	int getNumRecordsDeleted();
	int getNumRecordsRetrieved();
	int numIndexRecords();
	int numDataRecords();
	int dataFileWaste();
	void printIndexFile();

};




