public bool FreeContentInNativeObject(IReaderCtx readerCtx) { var reader = readerCtx.Reader(); var tableId = reader.ReadVUInt32(); var tableVersion = reader.ReadVUInt32(); var tableInfo = _owner.TablesInfo.FindById(tableId); if (tableInfo == null) { throw new BTDBException($"Unknown TypeId {tableId} of inline object"); } var freeContentTuple = tableInfo.GetFreeContent(tableVersion); var readerWithFree = (DBReaderWithFreeInfoCtx)readerCtx; freeContentTuple.Item2(this, null, reader, readerWithFree.DictIds, readerWithFree.Oids); return(freeContentTuple.Item1); }
public object ReadInlineObject(IReaderCtx readerCtx) { var reader = readerCtx.Reader(); var tableId = reader.ReadVUInt32(); var tableVersion = reader.ReadVUInt32(); var tableInfo = _owner.TablesInfo.FindById(tableId); if (tableInfo == null) { throw new BTDBException($"Unknown TypeId {tableId} of inline object"); } EnsureClientTypeNotNull(tableInfo); var obj = tableInfo.Creator(this, null); readerCtx.RegisterObject(obj); tableInfo.GetLoader(tableVersion)(this, null, reader, obj); readerCtx.ReadObjectDone(); return(obj); }
public static IIndirect <T> LoadImpl(IReaderCtx readerCtx) { var oid = readerCtx.Reader().ReadVInt64(); return(new DBIndirect <T>(((IDBReaderCtx)readerCtx).GetTransaction(), (ulong)oid)); }