RecordId Page::insertRecord(const std::string& record_data) { if (!hasSpaceForRecord(record_data)) { throw InsufficientSpaceException( page_number(), record_data.length(), getFreeSpace()); } const SlotId slot_number = getAvailableSlot(); insertRecordInSlot(slot_number, record_data); return {page_number(), slot_number}; }
Assembler createAssembler(AssemblerFactory factory) { Assembler a = malloc(sizeof(struct Assembler)); getAvailableSlot(factory, a); if( a->id == -1 ) { free(a); return 0; } a->origin = factory; a->end = a->base + a->origin->maxProgramSize - 1; a->data = a->end; a->pos = a->base; int i = 0; for( i = 0; i < a->origin->maxProgramSize; i++ ) { a->base[i] = 0; } return a; }