Skip to content

Commit

Permalink
Update sandbox
Browse files Browse the repository at this point in the history
  • Loading branch information
prozolic committed Jan 10, 2025
1 parent 19a4283 commit 472529e
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 5 deletions.
13 changes: 13 additions & 0 deletions sandbox/ConsoleApp/Enums.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using VariantEnum;

namespace ConsoleApp;

public enum IpAddrVariant : byte
{
[VariantValueType(typeof(byte), typeof(byte), typeof(byte), typeof(byte))]
V4,
[VariantValueType(typeof(string))]
V6 = 3,

None,
}
37 changes: 32 additions & 5 deletions sandbox/ConsoleApp/Program.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,40 @@
// See https://aka.ms/new-console-template for more information
using ConsoleApp;
using System.Buffers;
using VariantEnum;

Console.WriteLine("Hello, World!");

var v = new IpAddr.V4(127, 0, 0, 1);
var v2 = new IpAddr.V6("::1");

public enum IpAddrVariant
var v_string = $"IpAddr.V4 = {v}";

var str = (IpAddr)v switch
{
[VariantValueType(typeof(byte), typeof(byte), typeof(byte), typeof(byte))]
V41,
[VariantValueType(typeof(string))]
V61
IpAddr.V4 v4 => $"{v4.args0}.{v4.args1}.{v4.args2}.{v4.args3}",
IpAddr.V6 v6 => v6.args0,
_ => throw new Exception(),
};
Console.WriteLine(str);
Console.WriteLine(IpAddr.Count);

var value = IpAddr.ConvertEnum(v);
var value2 = IpAddr.ConvertEnum(v2);
Console.WriteLine(IpAddr.GetName(v));

var buffer = new ArrayBufferWriter<char>(1024);
if (v.TryFormat(buffer.GetSpan(1024), out var charsWritten))
{
buffer.Advance(charsWritten);
var str2 = string.Create(charsWritten, (buffer, charsWritten), static (buffer, state) =>
{
for (var i = 0; i < state.charsWritten; i++)
{
buffer[i] = state.buffer.WrittenSpan[i];
}
});
Console.WriteLine(@$"TryFormat: {str2} {v}");
}

Console.WriteLine("END");

0 comments on commit 472529e

Please sign in to comment.