/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("using System;\r\nusing System.Collections.Generic;\r\n\r\nnamespace Toe.SPIRV.Spv\r\n{\r\n " + " public partial class "); #line 13 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" : ValueEnum\r\n {\r\n [Flags]\r\n public enum Enumerant\r\n {\r\n"); #line 18 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" foreach (var kv in _operand.Enumerants) { foreach (var capability in kv.capabilities ?? new List <string>()) { #line default #line hidden this.Write(" [Capability(Capability.Enumerant."); #line 24 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(capability)); #line default #line hidden this.Write(")]\r\n"); #line 25 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } #line default #line hidden this.Write(" "); #line 28 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterId(_operand, kv.enumerant))); #line default #line hidden this.Write(" = "); #line 28 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(kv.value)); #line default #line hidden this.Write(",\r\n"); #line 29 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } #line default #line hidden this.Write(" }\r\n\r\n public "); #line 34 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("(Enumerant value)\r\n {\r\n Value = value;\r\n }\r\n"); #line 38 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" foreach (var kv in _operand.Enumerants) { var paramId = ViewUtils.GetParameterId(_operand, kv.enumerant); var parameters = kv.parameters ?? new List <Parameter>(); bool addIndex = (parameters.Count != 1); var parameterKv = parameters.Select((parameter, index) => new KeyValuePair <string, string>(addIndex?(paramId + (index + 1)):paramId, ViewUtils.GetTypeName(System.Enum.Parse <SpirvOperandKind>(parameter.kind)))); #line default #line hidden this.Write("\r\n public static "); #line 47 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" Create"); #line 47 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(paramId)); #line default #line hidden this.Write("("); #line 47 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" Write(string.Join(", ", parameterKv.Select(parameter => $"{parameter.Value} {ViewUtils.ToVarName(parameter.Key)}"))); #line default #line hidden this.Write(")\r\n {\r\n return new "); #line 49 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("(Enumerant."); #line 49 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(paramId)); #line default #line hidden this.Write(")\r\n {\r\n"); #line 51 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" foreach (var parameter in parameterKv) { #line default #line hidden this.Write(" "); #line 55 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(parameter.Key)); #line default #line hidden this.Write(" = "); #line 55 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.ToVarName(parameter.Key))); #line default #line hidden this.Write(",\r\n"); #line 56 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } #line default #line hidden this.Write(" };\r\n }\r\n\r\n public "); #line 62 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" Also"); #line 62 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(paramId)); #line default #line hidden this.Write("("); #line 62 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" Write(string.Join(", ", parameterKv.Select(parameter => $"{parameter.Value} {ViewUtils.ToVarName(parameter.Key)}"))); #line default #line hidden this.Write(")\r\n {\r\n Value |= Enumerant."); #line 64 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(paramId)); #line default #line hidden this.Write(";\r\n"); #line 65 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" foreach (var parameter in parameterKv) { #line default #line hidden this.Write(" this."); #line 69 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(parameter.Key)); #line default #line hidden this.Write(" = "); #line 69 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.ToVarName(parameter.Key))); #line default #line hidden this.Write(";\r\n"); #line 70 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } #line default #line hidden this.Write(" return this;\r\n }\r\n"); #line 75 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } #line default #line hidden this.Write("\r\n\r\n public static implicit operator "); #line 80 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("("); #line 80 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(".Enumerant value)\r\n {\r\n switch (value)\r\n {\r\n"); #line 84 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" var visitedOperands = new HashSet <object>(); foreach (var kv in _operand.Enumerants) { if (!visitedOperands.Add(kv.value)) { continue; } if (kv.parameters != null && kv.parameters.Count > 0) { var enName = ViewUtils.GetParameterId(_operand, kv.enumerant); #line default #line hidden this.Write(" case Enumerant."); #line 93 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enName)); #line default #line hidden this.Write(": throw new InvalidOperationException(\"Can\'t cast "); #line 93 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enName)); #line default #line hidden this.Write(" because it requires additional arguments.\");\r\n"); #line 94 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } } #line default #line hidden this.Write(" default:\r\n return new "); #line 99 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("(value);\r\n }\r\n }\r\n\r\n public Enumerant Value { get; priva" + "te set; }\r\n"); #line 104 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" foreach (var kv in _operand.Enumerants) { if (kv.parameters != null && kv.parameters.Count > 0) { bool addIndex = (kv.parameters.Count != 1); var enName = ViewUtils.GetParameterId(_operand, kv.enumerant); for (int i = 0; i < kv.parameters.Count; ++i) { var paramName = enName; if (addIndex) { paramName += (i + 1); } #line default #line hidden this.Write("\r\n public "); #line 116 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetTypeName(System.Enum.Parse <SpirvOperandKind>(kv.parameters[i].kind)))); #line default #line hidden this.Write(" "); #line 116 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(paramName)); #line default #line hidden this.Write(" { get; set; }\r\n"); #line 117 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } } } #line default #line hidden this.Write("\r\n public static "); #line 123 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" Parse(WordReader reader, uint wordCount)\r\n {\r\n var end = reade" + "r.Position+wordCount;\r\n var id = (Enumerant) reader.ReadWord();\r\n " + " var value = new "); #line 127 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("(id);\r\n"); #line 128 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" foreach (var kv in _operand.Enumerants) { if (kv.parameters != null && kv.parameters.Count > 0) { bool addIndex = (kv.parameters.Count != 1); var enName = ViewUtils.GetParameterId(_operand, kv.enumerant); #line default #line hidden this.Write(" if (Enumerant."); #line 136 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enName)); #line default #line hidden this.Write(" == (id & Enumerant."); #line 136 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enName)); #line default #line hidden this.Write("))\r\n {\r\n"); #line 138 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" for (int i = 0; i < kv.parameters.Count; ++i) { var paramName = enName; if (addIndex) { paramName += (i + 1); } #line default #line hidden this.Write(" value."); #line 143 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(paramName)); #line default #line hidden this.Write(" = Spv."); #line 143 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(kv.parameters[i].kind)); #line default #line hidden this.Write(".Parse(reader, wordCount - 1);\r\n"); #line 144 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } #line default #line hidden this.Write(" }\r\n"); #line 148 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } } #line default #line hidden this.Write(" value.PostParse(reader, wordCount - 1);\r\n return value;\r\n " + " }\r\n\r\n public static "); #line 156 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" ParseOptional(WordReader reader, uint wordCount)\r\n {\r\n if (wor" + "dCount == 0) return null;\r\n return Parse(reader, wordCount);\r\n " + " }\r\n\r\n public static IList<"); #line 162 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("> ParseCollection(WordReader reader, uint wordCount)\r\n {\r\n var " + "end = reader.Position + wordCount;\r\n var res = new PrintableList<"); #line 165 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(@">(); while (reader.Position < end) { res.Add(Parse(reader, end-reader.Position)); } return res; } public override string ToString() { return Value.ToString(); } public virtual uint GetWordCount() { uint wordCount = 1; "); #line 181 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" foreach (var kv in _operand.Enumerants) { if (kv.parameters != null && kv.parameters.Count > 0) { bool addIndex = (kv.parameters.Count != 1); var enName = ViewUtils.GetParameterId(_operand, kv.enumerant); #line default #line hidden this.Write(" if (Enumerant."); #line 189 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enName)); #line default #line hidden this.Write(" == (Value & Enumerant."); #line 189 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enName)); #line default #line hidden this.Write("))\r\n {\r\n"); #line 191 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" for (int i = 0; i < kv.parameters.Count; ++i) { var paramName = enName; if (addIndex) { paramName += (i + 1); } #line default #line hidden this.Write(" wordCount += "); #line 196 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(paramName)); #line default #line hidden this.Write(".GetWordCount();\r\n"); #line 197 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } #line default #line hidden this.Write(" }\r\n"); #line 201 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } } #line default #line hidden this.Write(" return wordCount;\r\n }\r\n\r\n public void Write(WordWriter " + "writer)\r\n {\r\n writer.WriteWord((uint)Value);\r\n"); #line 211 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" foreach (var kv in _operand.Enumerants) { if (kv.parameters != null && kv.parameters.Count > 0) { bool addIndex = (kv.parameters.Count != 1); var enName = ViewUtils.GetParameterId(_operand, kv.enumerant); #line default #line hidden this.Write(" if (Enumerant."); #line 219 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enName)); #line default #line hidden this.Write(" == (Value & Enumerant."); #line 219 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enName)); #line default #line hidden this.Write("))\r\n {\r\n"); #line 221 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" for (int i = 0; i < kv.parameters.Count; ++i) { var paramName = enName; if (addIndex) { paramName += (i + 1); } #line default #line hidden this.Write(" "); #line 226 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(paramName)); #line default #line hidden this.Write(".Write(writer);\r\n"); #line 227 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } #line default #line hidden this.Write(" }\r\n"); #line 231 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\FlagTemplate.tt" } } #line default #line hidden this.Write(" }\r\n }\r\n}"); return(this.GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("using System;\r\nusing System.Collections.Generic;\r\n\r\nnamespace Toe.SPIRV.Spv\r\n{\r\n " + " public abstract partial class "); #line 13 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" : ValueEnum\r\n {\r\n public enum Enumerant\r\n {\r\n"); #line 17 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" foreach (var kv in _operand.Enumerants) { foreach (var capability in kv.capabilities ?? new List <string>()) { #line default #line hidden this.Write(" [Capability(Capability.Enumerant."); #line 23 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(capability)); #line default #line hidden this.Write(")]\r\n"); #line 24 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" "); #line 27 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterId(_operand, kv.enumerant))); #line default #line hidden this.Write(" = "); #line 27 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(kv.value)); #line default #line hidden this.Write(",\r\n"); #line 28 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" }\r\n"); #line 32 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" foreach (var kv in _operand.Enumerants) { var enumerantId = ViewUtils.GetParameterId(_operand, kv.enumerant); var enumerantType = enumerantId + "Impl"; var parameters = kv.parameters ?? new List <Parameter>(); var parameterKv = parameters.Select(parameter => new KeyValuePair <string, string>(ViewUtils.GetParameterName(enumerantType, parameter), ViewUtils.GetTypeName(System.Enum.Parse <SpirvOperandKind>(parameter.kind)))) .ToList(); { #line default #line hidden this.Write("\r\n #region "); #line 43 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantId)); #line default #line hidden this.Write("\r\n public static "); #line 44 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write(" "); #line 44 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantId)); #line default #line hidden this.Write("("); #line 44 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" Write(string.Join(", ", parameterKv.Select(parameter => $"{parameter.Value} {ViewUtils.ToVarName(parameter.Key)}"))); #line default #line hidden this.Write(")\r\n {\r\n"); #line 46 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" if (parameters.Count == 0) { #line default #line hidden this.Write(" return "); #line 50 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write(".Instance;\r\n"); #line 51 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } else { #line default #line hidden this.Write(" return new "); #line 56 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write("("); #line 56 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" Write(string.Join(", ", parameterKv.Select(parameter => $"{ViewUtils.ToVarName(parameter.Key)}"))); #line default #line hidden this.Write(");\r\n"); #line 59 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" \r\n }\r\n\r\n public class "); #line 64 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write(": "); #line 64 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("\r\n {\r\n"); #line 66 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" if (parameters.Count == 0) { #line default #line hidden this.Write(" public static readonly "); #line 70 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write(" Instance = new "); #line 70 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write("();\r\n \r\n private "); #line 72 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write("()\r\n {\r\n }\r\n"); #line 75 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } //end of if (parameters.Count == 0) else { #line default #line hidden this.Write(" public "); #line 80 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write("()\r\n {\r\n }\r\n\r\n public "); #line 84 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write("("); #line 84 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" Write(string.Join(", ", parameterKv.Select(parameter => $"{parameter.Value} {ViewUtils.ToVarName(parameter.Key)}"))); #line default #line hidden this.Write(")\r\n {\r\n"); #line 86 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" foreach (var parameter in parameterKv) { #line default #line hidden this.Write(" this."); #line 90 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(parameter.Key)); #line default #line hidden this.Write(" = "); #line 90 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.ToVarName(parameter.Key))); #line default #line hidden this.Write(";\r\n"); #line 91 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" }\r\n"); #line 95 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } //end of if (parameters.Count == 0) else #line default #line hidden this.Write(" public override Enumerant Value => "); #line 98 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(".Enumerant."); #line 98 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantId)); #line default #line hidden this.Write(";\r\n"); #line 99 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" foreach (var parameter in parameterKv) { #line default #line hidden this.Write(" public "); #line 103 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture((parameter.Key == enumerantId)?"new ":"")); #line default #line hidden #line 103 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(parameter.Value)); #line default #line hidden this.Write(" "); #line 103 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(parameter.Key)); #line default #line hidden this.Write(" { get; set; }\r\n"); #line 104 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" public new static "); #line 107 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write(" Parse(WordReader reader, uint wordCount)\r\n {\r\n"); #line 109 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" if (parameters.Count == 0) { #line default #line hidden this.Write(" return Instance;\r\n"); #line 114 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } else { #line default #line hidden this.Write(" var end = reader.Position+wordCount;\r\n var res = n" + "ew "); #line 120 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write("();\r\n"); #line 121 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" foreach (var parameter in parameters) { #line default #line hidden this.Write(" res."); #line 125 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterName(enumerantType, parameter))); #line default #line hidden this.Write(" = Spv."); #line 125 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(parameter.kind)); #line default #line hidden this.Write(".Parse(reader, end-reader.Position);\r\n"); #line 126 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" return res;\r\n"); #line 130 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" }\r\n"); #line 134 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" if (parameters.Count > 0) { #line default #line hidden this.Write(" public override uint GetWordCount()\r\n {\r\n u" + "int wordCount = base.GetWordCount();\r\n"); #line 141 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" foreach (var parameter in parameters) { #line default #line hidden this.Write(" wordCount += "); #line 145 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterName(enumerantType, parameter))); #line default #line hidden this.Write(".GetWordCount();\r\n"); #line 146 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" return wordCount;\r\n }\r\n\r\n public override v" + "oid Write(WordWriter writer)\r\n {\r\n base.Write(writer);" + "\r\n"); #line 155 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" foreach (var parameter in parameters) { #line default #line hidden this.Write(" "); #line 159 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterName(enumerantType, parameter))); #line default #line hidden this.Write(".Write(writer);\r\n"); #line 160 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } #line default #line hidden this.Write(" }\r\n"); #line 164 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } // if (parameters.Count > 0) #line default #line hidden this.Write("\r\n /// <summary>Returns a string that represents the "); #line 168 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write(" object.</summary>\r\n /// <returns>A string that represents the "); #line 169 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantType)); #line default #line hidden this.Write(" object.</returns>\r\n /// <filterpriority>2</filterpriority>\r\n " + " public override string ToString()\r\n {\r\n return $\" "); #line 173 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("."); #line 173 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantId)); #line default #line hidden this.Write("("); #line 173 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(", ", parameterKv.Select(_ => "{" + _.Key + "}")))); #line default #line hidden this.Write(")\";\r\n }\r\n }\r\n #endregion //"); #line 176 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerantId)); #line default #line hidden this.Write("\r\n"); #line 177 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } } #line default #line hidden this.Write("\r\n public abstract Enumerant Value { get; }\r\n\r\n public static "); #line 184 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" Parse(WordReader reader, uint wordCount)\r\n {\r\n var id = (Enume" + "rant) reader.ReadWord();\r\n switch (id)\r\n {\r\n"); #line 189 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" var visitedEnumerants = new HashSet <object>(); foreach (var kv in _operand.Enumerants) { if (visitedEnumerants.Add(kv.value)) { #line default #line hidden this.Write(" case Enumerant."); #line 196 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterId(_operand, kv.enumerant))); #line default #line hidden this.Write(" :\r\n return "); #line 197 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterId(_operand, kv.enumerant))); #line default #line hidden this.Write("Impl.Parse(reader, wordCount - 1);\r\n"); #line 198 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } else { #line default #line hidden this.Write(" //"); #line 203 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterId(_operand, kv.enumerant))); #line default #line hidden this.Write(" has the same id as another value in enum.\r\n //case Enumerant."); #line 204 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterId(_operand, kv.enumerant))); #line default #line hidden this.Write(" :\r\n // return "); #line 205 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ViewUtils.GetParameterId(_operand, kv.enumerant))); #line default #line hidden this.Write(".Parse(reader, wordCount - 1);\r\n"); #line 206 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" } } #line default #line hidden this.Write(" default:\r\n throw new IndexOutOfRangeException(" + "\"Unknown "); #line 211 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" \"+id);\r\n }\r\n }\r\n \r\n public static "); #line 215 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(" ParseOptional(WordReader reader, uint wordCount)\r\n {\r\n if (wor" + "dCount == 0) return null;\r\n return Parse(reader, wordCount);\r\n " + " }\r\n\r\n public static IList<"); #line 221 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write("> ParseCollection(WordReader reader, uint wordCount)\r\n {\r\n var " + "end = reader.Position + wordCount;\r\n var res = new PrintableList<"); #line 224 "C:\github\Toe.SPIRV\src\Toe.SPIRV.CodeGenerator\Views\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_operand.Name)); #line default #line hidden this.Write(@">(); while (reader.Position < end) { res.Add(Parse(reader, end-reader.Position)); } return res; } public override string ToString() { return Value.ToString(); } public virtual uint GetWordCount() { return 1; } public virtual void Write(WordWriter writer) { writer.WriteWord((uint)Value); } } }"); return(this.GenerationEnvironment.ToString()); }