#ifndef __FILEHEAP_HPP #define __FILEHEAP_HPP class FileHeapStorage { public: FileHeapStorage() {} virtual ~FileHeapStorage() {} virtual int Read(void *buf, int buflen) =0; virtual int Write(const void *buf, int buflen) =0; virtual long Tell() =0; virtual int Seek(long pos, int from) =0; }; class FileHeap { protected: FileHeapStorage *storage; public: FileHeap(FileHeapStorage *s) : storage(s) {} virtual ~FileHeap() {} typedef unsigned long recid; static const recid NoRecord; virtual recid Alloc(int rsize) =0; virtual int Free(recid r) =0; virtual int Read(recid r, void *data, int datalen) =0; virtual int Write(recid r, const void *data, int datalen) =0; virtual void Flush() =0; virtual int FindFirst(recid r[], int maxrecids, int *recids) =0; virtual int FindNext(recid from, recid r[], int maxrecids, int *recids) =0; virtual int cardinality() =0; virtual unsigned long count_approx() =0; virtual unsigned long count_exact() =0; }; #endif