void UDB_at_put_(UDB *self, PID_TYPE pid, Datum d) { if (UDB_isInTransaction(self)) { UDB_append_withPid_(self, d, pid); } }
PID_TYPE UDB_put_(UDB *self, Datum d) // returns pid { if (UDB_isInTransaction(self)) { PID_TYPE pid = UDBIndex_allocPid(self->index); UDB_append_withPid_(self, d, pid); return pid; } return 0; }
void UDB_removeAt_(UDB *self, PID_TYPE pid) { if (UDB_isInTransaction(self)) { UDBRecord *record = UDB_recordAtPid_(self, pid); if (!record) { printf("UDB error: missing record with pid %" PID_FORMAT " for remove\n", pid); record = UDB_recordAtPid_(self, pid); return; } UDBRecords_removeRecord_(self->records, record); UDBIndex_setPos_forPid_(self->index, 0, pid); } }