#ifndef __FIXFHEAP_HPP #define __FIXFHEAP_HPP #include "fileheap.hpp" struct FixedFileHeap_header; class FixedFileHeap : public FileHeap { public: FixedFileHeap(FileHeapStorage *s); FixedFileHeap(FileHeapStorage *s, int rsize, int bsize); ~FixedFileHeap(); recid Alloc(int rsize); int Free(recid r); int Read(recid r, void *data, int datalen); int Write(recid r, const void *data, int datalen); void Flush(); int FindFirst(recid r[], int maxrecids, int *recids); int FindNext(recid from, recid r[], int maxrecids, int *recids); int cardinality(); unsigned long count_approx(); unsigned long count_exact(); private: long blockno; void *block; int blockdirty; FixedFileHeap_header *header; int headerdirty; unsigned long rmask; void makenewblock(); recid findfreerecord(); void fetchblock(long bn); void syncblock(); void addfreeblock(long bn); void removefreeblock(long bn); }; #endif