AssetRipper_AssetRipper/Source/AssetRipper.Yaml/YamlScalarNode.NumericListNode.cs
2025-06-29 00:05:31 -07:00

36 lines
880 B
C#

using AssetRipper.Yaml.Extensions;
using System.Numerics;
namespace AssetRipper.Yaml;
public abstract partial class YamlScalarNode
{
private sealed class NumericListNode<T>(IReadOnlyList<T> list) : YamlScalarNode where T : unmanaged, INumber<T>
{
private protected override void EmitCore(Emitter emitter)
{
Span<char> buffer = stackalloc char[ReverseHexString.GetHexStringLength<T>()];
for (int i = 0; i < list.Count; i++)
{
ReverseHexString.WriteReverseHexString(list[i], buffer);
emitter.Write(buffer);
}
}
public override string Value
{
get
{
StringWriter sb = new();
Span<char> buffer = stackalloc char[ReverseHexString.GetHexStringLength<T>()];
for (int i = 0; i < list.Count; i++)
{
ReverseHexString.WriteReverseHexString(list[i], buffer);
sb.Write(buffer);
}
return sb.ToString();
}
}
}
}