Скачиваний:
135
Добавлен:
01.05.2014
Размер:
1.81 Кб
Скачать
#ifndef _DATABASE_H_
#define _DATABASE_H_

#include "machines.h"
#include "sfread.h"

#include "stdlib.h"
#include "stdio.h"
#include "string.h"

class DatabaseBody;
class DatabaseField;
class DatabaseFieldString;

inline unsigned min(unsigned a, unsigned b){
	return a>b?b:a;
}

class DatabaseField {
	friend class DatabaseFieldString;
private:
	void *value;
	unsigned size;
public:

	virtual long ToInt() = 0;
	virtual DatabaseField& operator =(char *) = 0;
	virtual char *ToStr() = 0;

	DatabaseField(DatabaseBody*, unsigned);
	DatabaseField();				//default constructor
	DatabaseField(DatabaseField &); //copy constructor
	DatabaseField &operator =(DatabaseField &);
	virtual ~DatabaseField();
};

class DatabaseFieldString: public DatabaseField {
private:
public:
	DatabaseFieldString();
	DatabaseFieldString(DatabaseFieldString &);
	DatabaseFieldString(DatabaseBody* , unsigned);
	virtual DatabaseField& operator = (char *);

	char *Value(void) const;
	char *setValue(void);
	
	virtual long ToInt(void);
	virtual char *ToStr(void);
	virtual ~DatabaseFieldString(void);
};

class DatabaseBody {
friend class DatabaseField;
friend class DatabaseFieldString;
private:
	char *path;
	FILE *file;
	List<DatabaseField*> Fields;
	char WS,CR; //Line feed, Carrage Return, Word Separator
	char *hbuffer,*lbuffer; //high and low buffers
	unsigned bufsize; //size of buffers
private:
	DatabaseBody(DatabaseBody &) {};
public:
	DatabaseBody();
	DatabaseBody(char *,unsigned bsize = 1000,char ws=9, char cr='\n');
	~DatabaseBody();
	void SetPath(char *);
	void Launch(short ReadMode=3);
	void Commit(void);

	DatabaseBody *Read(void);
	void Write(void);
	void Seek(unsigned);
	short unsigned Ends(void);

	short GetStatus(void);
};

#endif
Соседние файлы в папке classes