private void FillChunkBytes(ChunkImpl chunk) { if (chunk.SubchunksCount == 0) { chunk.SetChunkBytes(ReadBytes(chunk.ChunkContentPointer, chunk.ContentSize)); } }
public byte[] ReadChunkBytes(ChunkImpl chunk, long offset, long length) { if (length == -1) { length = chunk.ContentSize - offset; } return(ReadBytes(chunk.ChunkContentPointer + offset, length)); }
public void FillChunk(Chunk chunk) { ChunkImpl derivedChunk = chunk as ChunkImpl; FillSubchunks(derivedChunk); FillChunkBytes(derivedChunk); derivedChunk.IsAvaliable = true; }
private ChunkImpl AllocateChunk(long chunkPointer) { ChunkImpl retChunk = new ChunkImpl(this); retChunk.ChunkStartPointer = chunkPointer; FillChunkTag(retChunk); FillChunkSize(retChunk); return(retChunk); }
public void AddSubchunk(ChunkImpl chunk) { if (!subChunks.ContainsKey(chunk.tag)) { subChunks.Add(chunk.tag, new List <Chunk>(new ChunkImpl[] { chunk })); } else { subChunks[chunk.tag].Add(chunk); } }
private void FillSubchunks(ChunkImpl chunk) { FillSubchunksCount(chunk); byte[] subchunkPointerBytes = ReadBytes(chunk.SubchunkPointersPointer, chunk.SubchunkPointerArraySize); for (int iSubchunk = 0; iSubchunk < chunk.SubchunksCount; ++iSubchunk) { long chunkPointer = BigEndianBytesToInt64(subchunkPointerBytes, (int)(iSubchunk * ChunkImpl.ChunkPointerSize)); ChunkImpl subchunk = AllocateChunk(chunkPointer); chunk.AddSubchunk(subchunk); } }
public void AddSubchunk(ChunkImpl chunk) { if (!subChunks.ContainsKey(chunk.tag)) { subChunks.Add(chunk.tag, new List<Chunk>(new ChunkImpl[] { chunk })); } else { subChunks[chunk.tag].Add(chunk); } }
private void FillSubchunksCount(ChunkImpl chunk) { chunk.SubchunksCount = BigEndianBytesToInt32(ReadBytes(chunk.SubchunksCountPointer, ChunkImpl.SubchunksCountSize), 0); }
private void FillChunkTag(ChunkImpl chunk) { chunk.SetTag(BytesToString(ReadBytes(chunk.ChunkTagPointer, ChunkImpl.TagSize))); }
private void FillChunkSize(ChunkImpl chunk) { chunk.ChunkSize = BigEndianBytesToInt64(ReadBytes(chunk.ChunkSizePointer, ChunkImpl.ChunkSizeSize), 0); }
private void FillChunkBytes(ChunkImpl chunk) { if (chunk.SubchunksCount == 0) { chunk.SetChunkBytes( ReadBytes(chunk.ChunkContentPointer, chunk.ContentSize) ); } }
private ChunkImpl AllocateChunk(long chunkPointer) { ChunkImpl retChunk = new ChunkImpl(this); retChunk.ChunkStartPointer = chunkPointer; FillChunkTag(retChunk); FillChunkSize(retChunk); return retChunk; }
public byte[] ReadChunkBytes(ChunkImpl chunk, long offset, long length) { if (length == -1) { length = chunk.ContentSize - offset; } return ReadBytes(chunk.ChunkContentPointer + offset, length); }
private void FillSubchunks(ChunkImpl chunk) { FillSubchunksCount(chunk); byte[] subchunkPointerBytes = ReadBytes(chunk.SubchunkPointersPointer, chunk.SubchunkPointerArraySize); for (int iSubchunk = 0; iSubchunk < chunk.SubchunksCount; ++iSubchunk) { long chunkPointer = BigEndianBytesToInt64( subchunkPointerBytes, (int)(iSubchunk * ChunkImpl.ChunkPointerSize) ); ChunkImpl subchunk = AllocateChunk(chunkPointer); chunk.AddSubchunk(subchunk); } }