byte* CSrArraySubrecord::GetData (void) { delete m_pRawData; m_pRawData = NULL; m_RawDataSize = GetRecordSize(); return NULL; }
// creates new CRecord object and fills it with the data of the record specified by inRecID CRecord* //** Thread Safe ** ADataStore::ReadRecord(RecIDT inRecID) { DB_DEBUG("ReadRecord("<<inRecID<<")"); CRecord* theRec = (CRecord*)nil; long size = GetRecordSize(inRecID); if (size > 0) { temp_buffer(DatabaseRec, p, size); // allocate a read buffer p->recID = inRecID; p->recSize = size; ReadRecord(p); theRec = MakeRecordObject(p); } return theRec; }
// handle created is yours to do with as you will handle //** Thread Safe ** ADataStore::ReadRecordHandle(RecIDT inRecID) { handle h; long fullsize = GetRecordSize(inRecID); long size = fullsize - sizeof(DatabaseRec); if (size > 0) { h.resize(fullsize); h.lock(); DatabaseRec* p = (DatabaseRec*) *h; p->recID = inRecID; p->recSize = fullsize; Try_{ ReadRecord(p); } Catch_(err) { h.dispose(); // clean up our mess Throw_(err); } ::BlockMoveData(&p->recData[0], p, size); h.unlock(); h.resize(size); }