using System.Collections.Generic; using System.Text; namespace AssetStudio { public static class IListYAMLExtensions { public static YAMLNode ExportYAML(this IReadOnlyList _this) { StringBuilder sb = new StringBuilder(_this.Count * 2); foreach (bool value in _this) { byte bvalue = unchecked((byte)(value ? 1 : 0)); sb.AppendHex(bvalue); } return new YAMLScalarNode(sb.ToString(), true); } public static YAMLNode ExportYAML(this IReadOnlyList _this) { StringBuilder sb = new StringBuilder(_this.Count * 4); foreach (char value in _this) { sb.AppendHex((ushort)value); } return new YAMLScalarNode(sb.ToString(), true); } public static YAMLNode ExportYAML(this IReadOnlyList _this) { StringBuilder sb = new StringBuilder(_this.Count * 2); foreach (byte value in _this) { sb.AppendHex(value); } return new YAMLScalarNode(sb.ToString(), true); } public static YAMLNode ExportYAML(this IReadOnlyList _this, bool isRaw) { if (isRaw) { StringBuilder sb = new StringBuilder(_this.Count * 4); foreach (ushort value in _this) { sb.AppendHex(value); } return new YAMLScalarNode(sb.ToString(), true); } else { YAMLSequenceNode node = new YAMLSequenceNode(SequenceStyle.Block); foreach (ushort value in _this) { node.Add(value); } return node; } } public static YAMLNode ExportYAML(this IReadOnlyList _this, bool isRaw) { if (isRaw) { StringBuilder sb = new StringBuilder(_this.Count * 4); foreach (short value in _this) { sb.AppendHex(value); } return new YAMLScalarNode(sb.ToString(), true); } else { YAMLSequenceNode node = new YAMLSequenceNode(SequenceStyle.Block); foreach (short value in _this) { node.Add(value); } return node; } } public static YAMLNode ExportYAML(this IReadOnlyList _this, bool isRaw) { if (isRaw) { StringBuilder sb = new StringBuilder(_this.Count * 8); foreach (uint value in _this) { sb.AppendHex(value); } return new YAMLScalarNode(sb.ToString(), true); } else { YAMLSequenceNode node = new YAMLSequenceNode(SequenceStyle.Block); foreach (uint value in _this) { node.Add(value); } return node; } } public static YAMLNode ExportYAML(this IReadOnlyList _this, bool isRaw) { if (isRaw) { StringBuilder sb = new StringBuilder(_this.Count * 8); foreach (int value in _this) { sb.AppendHex(value); } return new YAMLScalarNode(sb.ToString(), true); } else { YAMLSequenceNode node = new YAMLSequenceNode(SequenceStyle.Block); foreach (int value in _this) { node.Add(value); } return node; } } public static YAMLNode ExportYAML(this IReadOnlyList _this, bool isRaw) { if (isRaw) { StringBuilder sb = new StringBuilder(_this.Count * 16); foreach (ulong value in _this) { sb.AppendHex(value); } return new YAMLScalarNode(sb.ToString(), true); } else { YAMLSequenceNode node = new YAMLSequenceNode(SequenceStyle.Block); foreach (ulong value in _this) { node.Add(value); } return node; } } public static YAMLNode ExportYAML(this IReadOnlyList _this, bool isRaw) { if (isRaw) { StringBuilder sb = new StringBuilder(_this.Count * 16); foreach (long value in _this) { sb.AppendHex(value); } return new YAMLScalarNode(sb.ToString(), true); } else { YAMLSequenceNode node = new YAMLSequenceNode(SequenceStyle.Block); foreach (long value in _this) { node.Add(value); } return node; } } } }