// -*- Mode: C++ -*-

//          GiSTstore.h
//
// Copyright (c) 1996, Regents of the University of California
// $Header: /cvsroot/Tree-M/GiST/GiSTstore.h,v 1.1 2001/05/06 00:45:52 root Exp $

#ifndef GISTSTORE_H
#define GISTSTORE_H

#include "GiSTdefs.h"

// GiSTstore is the parent class for storage of GiST pages.  GiSTfile is 
// provided as an example descendant of GiSTstore.

class GiSTstore {
public:
	GiSTstore(): isOpen(0) {}
	virtual void Create(const char *filename)=0;
	virtual void Open(const char *filename)=0;
	virtual void Close()=0;
	virtual void Read(GiSTpage page, char *buf)=0;
	virtual void Write(GiSTpage page, const char *buf)=0;
	virtual GiSTpage Allocate()=0;
	virtual void Deallocate(GiSTpage page)=0;
	virtual void Sync()=0;
	virtual int IsOpen() { return isOpen; }
	virtual int PageSize() const=0;
	virtual ~GiSTstore() { }
protected:
	void SetOpen(int o) { isOpen=o; }
private:
	int isOpen;
};

#endif
