Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ToBase64Transform.cs
Go to the documentation of this file.
3
5
7{
8 public int InputBlockSize => 3;
9
10 public int OutputBlockSize => 4;
11
12 public bool CanTransformMultipleBlocks => true;
13
14 public virtual bool CanReuseTransform => true;
15
16 public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
17 {
18 ThrowHelper.ValidateTransformBlock(inputBuffer, inputOffset, inputCount);
19 int result;
20 int num = Math.DivRem(inputCount, InputBlockSize, out result);
21 if (num == 0)
22 {
24 }
25 if (outputBuffer == null)
26 {
28 }
29 if (result != 0)
30 {
32 }
33 int num2 = checked(num * OutputBlockSize);
34 if (num2 > outputBuffer.Length - outputOffset)
35 {
37 }
38 Span<byte> span = inputBuffer.AsSpan(inputOffset, inputCount);
39 Span<byte> utf = outputBuffer.AsSpan(outputOffset, num2);
40 int bytesConsumed;
41 int bytesWritten;
42 OperationStatus operationStatus = Base64.EncodeToUtf8(span, utf, out bytesConsumed, out bytesWritten, isFinalBlock: false);
43 return bytesWritten;
44 }
45
46 public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
47 {
48 ThrowHelper.ValidateTransformBlock(inputBuffer, inputOffset, inputCount);
49 if (inputCount == 0)
50 {
51 return Array.Empty<byte>();
52 }
53 Span<byte> span = inputBuffer.AsSpan(inputOffset, inputCount);
54 int result;
55 int num = Math.DivRem(inputCount, InputBlockSize, out result);
56 int num2 = num + ((result != 0) ? 1 : 0);
57 byte[] array = new byte[num2 * OutputBlockSize];
58 int bytesConsumed;
59 int bytesWritten;
60 OperationStatus operationStatus = Base64.EncodeToUtf8(span, array, out bytesConsumed, out bytesWritten);
61 return array;
62 }
63
64 public void Dispose()
65 {
66 Clear();
67 }
68
69 public void Clear()
70 {
71 Dispose(disposing: true);
72 GC.SuppressFinalize(this);
73 }
74
75 protected virtual void Dispose(bool disposing)
76 {
77 }
78
80 {
81 Dispose(disposing: false);
82 }
83}
static unsafe OperationStatus EncodeToUtf8(ReadOnlySpan< byte > bytes, Span< byte > utf8, out int bytesConsumed, out int bytesWritten, bool isFinalBlock=true)
Definition Base64.cs:413
static void SuppressFinalize(object obj)
Definition GC.cs:202
Definition GC.cs:8
static int DivRem(int a, int b, out int result)
Definition Math.cs:329
static void ThrowArgumentOutOfRange(ExceptionArgument argument)
static void ValidateTransformBlock(byte[] inputBuffer, int inputOffset, int inputCount)
static void ThrowArgumentNull(ExceptionArgument argument)
byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)