Esempio n. 1
0
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};
}
Esempio n. 2
0
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;
}