public BufferWriter(int minimumSize, LazinatorMemory completedMemory) { if (minimumSize == 0) minimumSize = ExpandableBytes.DefaultMinBufferSize; ActiveMemory = new ExpandableBytes(minimumSize); ActiveMemory.UsedBytesInCurrentBuffer = 0; LengthsPosition = (0, 0); MemorySegmentCollection = new MemorySegmentCollection(completedMemory, true); }
public BufferWriter(int minimumSize) { if (minimumSize == 0) minimumSize = ExpandableBytes.DefaultMinBufferSize; ActiveMemory = new ExpandableBytes(minimumSize); ActiveMemory.UsedBytesInCurrentBuffer = 0; LengthsPosition = (0, 0); MemorySegmentCollection = null; }
protected override ILazinator AssignCloneProperties(ILazinator clone, IncludeChildrenMode includeChildrenMode) { base.AssignCloneProperties(clone, includeChildrenMode); MemorySegmentCollection typedClone = (MemorySegmentCollection)clone; typedClone.Segments = CloneOrChange_List_GMemoryBlockIDAndSlice_g(Segments, l => l?.CloneLazinator(includeChildrenMode, CloneBufferOptions.NoBuffer), false); return(typedClone); }
/// <summary> /// Returns a new LazinatorMemory with an appended memory chunk. /// </summary> /// <param name="chunk"></param> /// <returns></returns> public LazinatorMemory WithAppendedChunk(MemoryChunk chunk) { if (IsEmpty) { return(new LazinatorMemory(chunk)); } var withAppendedChunk = new MemorySegmentCollection(); withAppendedChunk.SetFromLazinatorMemory(this); withAppendedChunk.AppendMemoryChunk(chunk); return(new LazinatorMemory(withAppendedChunk, StartIndex, Offset, Length + chunk.Length)); }
public override ILazinator CloneLazinator(IncludeChildrenMode includeChildrenMode = IncludeChildrenMode.IncludeAllChildren, CloneBufferOptions cloneBufferOptions = CloneBufferOptions.IndependentBuffers) { MemorySegmentCollection clone; if (cloneBufferOptions == CloneBufferOptions.NoBuffer) { clone = new MemorySegmentCollection(includeChildrenMode); clone.LazinatorObjectVersion = LazinatorObjectVersion; clone = (MemorySegmentCollection)AssignCloneProperties(clone, includeChildrenMode); } else { LazinatorMemory bytes = EncodeOrRecycleToNewBuffer(includeChildrenMode, OriginalIncludeChildrenMode, IsDirty, DescendantIsDirty, false, LazinatorMemoryStorage, this); clone = new MemorySegmentCollection(bytes); } return(clone); }
public override string ToString() { return ActiveMemory == null ? "" : String.Join(",", ActiveMemoryWrittenSpan.ToArray()) + " " + MemorySegmentCollection?.ToString(); }