IKVM11  11
Java SE 11 Virtual Machine for .NET
Loading...
Searching...
No Matches
IKVM.CoreLib.Buffers.MemoryBufferWriter< T > Class Template Reference

Implements the IBufferWriter<T> interface around a Memory<T>. More...

Inheritance diagram for IKVM.CoreLib.Buffers.MemoryBufferWriter< T >:

Public Member Functions

 MemoryBufferWriter (Memory< T > memory)
 Initializes a new instance.
 
void Clear ()
 
void Advance (int count)
 
Memory< T > GetMemory (int sizeHint=0)
 
Span< T > GetSpan (int sizeHint=0)
 
override string ToString ()
 

Properties

ReadOnlyMemory< T > WrittenMemory [get]
 
ReadOnlySpan< T > WrittenSpan [get]
 
int WrittenCount [get]
 
int Capacity [get]
 
int FreeCapacity [get]
 

Detailed Description

Implements the IBufferWriter<T> interface around a Memory<T>.

Template Parameters
T

Definition at line 13 of file MemoryBufferWriter.cs.

Constructor & Destructor Documentation

◆ MemoryBufferWriter()

Initializes a new instance.

Parameters
memory

Definition at line 23 of file MemoryBufferWriter.cs.

24 {
25 _memory = memory;
26 }

Member Function Documentation

◆ Advance()

void IKVM.CoreLib.Buffers.MemoryBufferWriter< T >.Advance ( int count)

Definition at line 72 of file MemoryBufferWriter.cs.

73 {
74 if (count < 0)
75 {
76 ThrowArgumentOutOfRangeExceptionForNegativeCount();
77 }
78
79 if (_index > _memory.Length - count)
80 {
81 ThrowArgumentExceptionForAdvancedTooFar();
82 }
83
84 _index += count;
85 }

◆ Clear()

Definition at line 65 of file MemoryBufferWriter.cs.

66 {
67 _memory.Slice(0, _index).Span.Clear();
68 _index = 0;
69 }

◆ GetMemory()

Memory< T > IKVM.CoreLib.Buffers.MemoryBufferWriter< T >.GetMemory ( int sizeHint = 0)

Definition at line 88 of file MemoryBufferWriter.cs.

89 {
90 ValidateSizeHint(sizeHint);
91
92 return _memory.Slice(_index);
93 }

◆ GetSpan()

Span< T > IKVM.CoreLib.Buffers.MemoryBufferWriter< T >.GetSpan ( int sizeHint = 0)

Definition at line 96 of file MemoryBufferWriter.cs.

97 {
98 ValidateSizeHint(sizeHint);
99
100 return _memory.Slice(_index).Span;
101 }

◆ ToString()

override string IKVM.CoreLib.Buffers.MemoryBufferWriter< T >.ToString ( )

Definition at line 126 of file MemoryBufferWriter.cs.

127 {
128 // See comments in MemoryOwner<T> about this
129 if (typeof(T) == typeof(char))
130 {
131 return _memory.Slice(0, _index).ToString();
132 }
133
134 // Same representation used in Span<T>
135 return $"IKVM.CoreLib.Buffers.MemoryBufferWriter<{typeof(T)}>[{_index}]";
136 }

Property Documentation

◆ Capacity

Definition at line 51 of file MemoryBufferWriter.cs.

52 {
53 [MethodImpl(MethodImplOptions.AggressiveInlining)]
54 get => _memory.Length;
55 }

◆ FreeCapacity

int IKVM.CoreLib.Buffers.MemoryBufferWriter< T >.FreeCapacity
get

Definition at line 58 of file MemoryBufferWriter.cs.

59 {
60 [MethodImpl(MethodImplOptions.AggressiveInlining)]
61 get => _memory.Length - _index;
62 }

◆ WrittenCount

int IKVM.CoreLib.Buffers.MemoryBufferWriter< T >.WrittenCount
get

Definition at line 44 of file MemoryBufferWriter.cs.

45 {
46 [MethodImpl(MethodImplOptions.AggressiveInlining)]
47 get => _index;
48 }

◆ WrittenMemory

ReadOnlyMemory<T> IKVM.CoreLib.Buffers.MemoryBufferWriter< T >.WrittenMemory
get

Definition at line 30 of file MemoryBufferWriter.cs.

31 {
32 [MethodImpl(MethodImplOptions.AggressiveInlining)]
33 get => _memory.Slice(0, _index);
34 }

◆ WrittenSpan

ReadOnlySpan<T> IKVM.CoreLib.Buffers.MemoryBufferWriter< T >.WrittenSpan
get

Definition at line 37 of file MemoryBufferWriter.cs.

38 {
39 [MethodImpl(MethodImplOptions.AggressiveInlining)]
40 get => _memory.Slice(0, _index).Span;
41 }

The documentation for this class was generated from the following file: