-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathHeapDBFile.cc
More file actions
44 lines (33 loc) · 1.25 KB
/
HeapDBFile.cc
File metadata and controls
44 lines (33 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "HeapDBFile.h"
HeapDBFile::HeapDBFile() {
currentlyBeingWritenPageNumber = 0;
writeBufferPage.EmptyItOut();
}
HeapDBFile::~HeapDBFile() {
}
/* ****************************************** ALL OVERRIDDEN METHODS *********************************************** */
void HeapDBFile::SwitchToWriteMode() {
if (isInWriteMode) return;
writeBufferPage.EmptyItOut();
currentlyBeingWritenPageNumber = GetLengthInPages() <= 0 ? 0 : GetLengthInPages() - 1;
GetPageFromDataFile(writeBufferPage, currentlyBeingWritenPageNumber);
isInWriteMode = true;
}
void HeapDBFile::SwitchToReadMode() {
if (!isInWriteMode) return;
AddPageToDataFile(writeBufferPage, currentlyBeingWritenPageNumber);
isInWriteMode = false;
}
void HeapDBFile::AddToDBFile(Record &addme) {
if (writeBufferPage.Append(&addme)) return;
AddPageToDataFile(writeBufferPage, currentlyBeingWritenPageNumber++);
writeBufferPage.Append(&addme);
}
int HeapDBFile::GetNextFromDBFile(Record &fetchme) {
return GetRecordFromReadBufferPage(fetchme);
}
int HeapDBFile::GetNextFromDBFile(Record &fetchme, CNF &cnf, Record &literal) {
while (GetRecordFromReadBufferPage(fetchme))
if (comparisonEngine.Compare(&fetchme, &literal, &cnf)) return 1;
return 0;
}