mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2025-05-06 19:42:58 +00:00
50 lines
1.2 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|