using System; namespace etoy { sealed class KeyValueTable { public string Name; public string Path; public KeyValueRow[] Rows; } sealed class KeyValueRow { public string Key; public string Value; public string Type; public string Description; public string Tag; public int Row; /// /// 是否是服务端字段 /// public bool IsServerField => OutputTag.HasFlag(KeyValueTag.Server); /// /// 是否是客户端字段 /// public bool IsClientField => OutputTag.HasFlag(KeyValueTag.Client); public KeyValueTag OutputTag { get { if (string.IsNullOrEmpty(Tag)) return KeyValueTag.All; var result = KeyValueTag.None; if (Tag.Contains('c', StringComparison.OrdinalIgnoreCase)) { result |= KeyValueTag.Client; } if (Tag.Contains('s', StringComparison.OrdinalIgnoreCase)) { result |= KeyValueTag.Server; } if (result == KeyValueTag.None) { throw new Exception($"error tag, FieldName(Output) tags({Tag})"); } return result; } } } enum KeyValueColumn { Key = 0, Value = 1, Type = 2, Description = 3, Tag = 4, } enum KeyValueTag { None = 0, Client = 0x1, Server = 0x10, All = Client | Server, } }