public EnumerationDefinition MakeEnumerationDefinition(Enumeration enumeration, string name) { name = string.IsNullOrEmpty(enumeration.Name) ? name : enumeration.Name; var result = new EnumerationDefinition { Name = name }; if (_context.IsKnownUnitName(name)) { return(result); } _context.AddUnit(result); result.TypeName = TypeHelper.GetTypeName(enumeration.Type); result.Content = enumeration.Comment?.BriefText; result.Items = enumeration.Items .Select(x => new EnumerationItem { Name = x.Name, Value = ConvertValue(x.Value, enumeration.BuiltinType.Type).ToString(), Content = x.Comment?.BriefText }) .ToArray(); return(result); }
public void Write(EnumerationDefinition enumeration) { WriteSummary(enumeration); WriteLine($"public enum {enumeration.Name} : {enumeration.TypeName}"); using (BeginBlock()) foreach (var item in enumeration.Items) { WriteSummary(item); WriteLine($"@{item.Name} = {item.Value},"); } }
private static EnumerationDefinition GradeDefinition() { EnumerationDefinition grade = new EnumerationDefinition("Grade"); grade.AddValue("A"); grade.AddValue("B"); grade.AddValue("C"); grade.AddValue("D"); grade.AddValue("E"); grade.AddValue("F"); return(grade); }
private static void DumpEnumerations(CacheFile scriptCacheFile) { EnumerationDefinition previousEnumeration = null; var sb = new StringBuilder(); foreach (var tuple in scriptCacheFile.Definitions .OfType <EnumerationDefinition>() .Select(e => (enumeration: e, path: e.ToPath())) .OrderBy(t => t.path)) { var(enumeration, path) = tuple; if (previousEnumeration != null) { sb.AppendLine(); } sb.AppendLine($"enum {path} // {enumeration.Size}"); sb.AppendLine("{"); foreach (var enumeral in enumeration.Enumerals) { sb.Append(" "); if (string.IsNullOrEmpty(enumeral.Name) == true) { sb.Append("_ /* blank name */"); } else { sb.Append(enumeral.Name); } sb.AppendLine($" = {enumeral.Value},"); } sb.AppendLine("}"); previousEnumeration = enumeration; } File.WriteAllText("test_enumeration_dump.txt", sb.ToString(), Encoding.UTF8); }
/// <summary> /// Generates an enumeration type /// </summary> /// <param name="emitter">The emitter to write to</param> /// <param name="typeName">The name of the type</param> /// <param name="def">The enumeration definition</param> private void _generateEnumeration(CSharpEmitter emitter, string typeName, string fieldName, EnumerationDefinition def) { typeName = _getDefinitionName(typeName, fieldName, def); using (var e = emitter.Enum(typeName)) { for (int i = 0; i < def.Options.Length; i++) { var opt = def.Options[i]; var optName = _transformFieldName(opt.Name); e.EnumValue(optName, opt.Value, i == def.Options.Length - 1); } } }
public void Deconstruct(out EnumerationDefinition enumeration, out EnumeralDefinition enumeral) { enumeration = this.Enumeration; enumeral = this.Enumeral; }
public EnumConst(EnumerationDefinition enumeration, EnumeralDefinition enumeral) { this.Enumeration = enumeration; this.Enumeral = enumeral; }