2
0
mirror of https://github.com/esiur/esiur-dotnet.git synced 2025-05-06 11:32:59 +00:00
esiur-dotnet/Esiur/Resource/Template/ArgumentTemplate.cs
2021-05-26 08:55:42 +03:00

50 lines
1.2 KiB
C#

using Esiur.Data;
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace Esiur.Resource.Template
{
public class ArgumentTemplate
{
public string Name { get; set; }
public TemplateDataType Type { get; set; }
public ParameterInfo ParameterInfo { get; set; }
public static (uint, ArgumentTemplate) Parse(byte[] data, uint offset)
{
var cs = (uint)data[offset++];
var name = data.GetString(offset, cs);
offset += cs;
var (size, type) = TemplateDataType.Parse(data, offset);
return (cs + 1 + size, new ArgumentTemplate(name, type));
}
public ArgumentTemplate()
{
}
public ArgumentTemplate(string name, TemplateDataType type)
{
Name = name;
Type = type;
}
public byte[] Compose()
{
var name = DC.ToBytes(Name);
return new BinaryList()
.AddUInt8((byte)name.Length)
.AddUInt8Array(name)
.AddUInt8Array(Type.Compose())
.ToArray();
}
}
}