diff options
| author | TSR Berry <20988865+TSRBerry@users.noreply.github.com> | 2023-04-08 01:22:00 +0200 |
|---|---|---|
| committer | Mary <thog@protonmail.com> | 2023-04-27 23:51:14 +0200 |
| commit | cee712105850ac3385cd0091a923438167433f9f (patch) | |
| tree | 4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Spv.Generator/InstructionOperands.cs | |
| parent | cd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff) | |
Move solution and projects to src
Diffstat (limited to 'Spv.Generator/InstructionOperands.cs')
| -rw-r--r-- | Spv.Generator/InstructionOperands.cs | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/Spv.Generator/InstructionOperands.cs b/Spv.Generator/InstructionOperands.cs deleted file mode 100644 index c48b004f..00000000 --- a/Spv.Generator/InstructionOperands.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; - -namespace Spv.Generator -{ - public struct InstructionOperands - { - private const int InternalCount = 5; - - public int Count; - public Operand Operand1; - public Operand Operand2; - public Operand Operand3; - public Operand Operand4; - public Operand Operand5; - public Operand[] Overflow; - - public Span<Operand> AsSpan() - { - if (Count > InternalCount) - { - return MemoryMarshal.CreateSpan(ref this.Overflow[0], Count); - } - else - { - return MemoryMarshal.CreateSpan(ref this.Operand1, Count); - } - } - - public void Add(Operand operand) - { - if (Count < InternalCount) - { - MemoryMarshal.CreateSpan(ref this.Operand1, Count + 1)[Count] = operand; - Count++; - } - else - { - if (Overflow == null) - { - Overflow = new Operand[InternalCount * 2]; - MemoryMarshal.CreateSpan(ref this.Operand1, InternalCount).CopyTo(Overflow.AsSpan()); - } - else if (Count == Overflow.Length) - { - Array.Resize(ref Overflow, Overflow.Length * 2); - } - - Overflow[Count++] = operand; - } - } - - private IEnumerable<Operand> AllOperands => new[] { Operand1, Operand2, Operand3, Operand4, Operand5 } - .Concat(Overflow ?? Array.Empty<Operand>()) - .Take(Count); - - public override string ToString() - { - return $"({string.Join(", ", AllOperands)})"; - } - - public string ToString(string[] labels) - { - var labeledParams = AllOperands.Zip(labels, (op, label) => $"{label}: {op}"); - var unlabeledParams = AllOperands.Skip(labels.Length).Select(op => op.ToString()); - var paramsToPrint = labeledParams.Concat(unlabeledParams); - return $"({string.Join(", ", paramsToPrint)})"; - } - } -} |
