Grace-Hash-1 / Page.cpp
Page.cpp
Raw
#include "Page.hpp"
#include "constants.hpp"

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

Page::Page(){}

void Page::loadPage(const Page *p2) {
	this->reset();
	for(size_t i = 0; i < p2->records.size(); i++){
		this->records.push_back(Record(p2->records[i]));
	}
}

Page::Page(const Page &p2){
	this->loadPage(&p2);
}

void Page::print(){
	for (size_t i = 0; i < this->records.size(); ++i) {
		this->records[i].print();
	}
}

void Page::loadRecord(Record r){
	if (this->records.size() < RECORDS_PER_PAGE) {
		this->records.push_back(Record(r));
	}
	else {
		cout << "Error: Can not add record into full page." << endl;
		exit(1);
	}
}

bool Page::full() {
	if (this->records.size() == RECORDS_PER_PAGE) {
		return true;
	}
	else {
		return false;
	}
}

void Page::reset() {
	this->records.clear();
}

unsigned int Page::size() {
	return this->records.size();
}

Record Page::get_record(unsigned int record_id) {
	return this->records[record_id];
}

// load 2 matching record into a page
// records per page will always be even number
void Page::loadPair(Record left_r, Record right_r) {
	if (this->records.size() < (RECORDS_PER_PAGE - 1)) {
		this->records.push_back(left_r);
		this->records.push_back(right_r);
	}
	else {
		cout << "Error: Can not add record into full page." << endl;
		exit(1);
	}
}