public Definitions.EnumDefinition MakeDefinition(Enumeration enumeration, string name) { name = string.IsNullOrEmpty(enumeration.Name) ? name : enumeration.Name; var result = new Definitions.EnumDefinition { 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 Definitions.EnumItem { Name = x.Name, Value = EnumValueToString(result.TypeName, x.Value), Content = x.Comment?.BriefText, DetailedContent = x.Comment?.Text }) .ToArray(); return(result); }
//-------------------------------------------------------------------------------------------------- bool _AddEnum(CastXml.ItemsEnumeration enumeration, string enumId, string package, Definitions.ClassDefinition c = null) { var name = enumeration.name; if (string.IsNullOrEmpty(name)) { return(true); } if (Configuration.KnownTypes.Any(def => def.NativeFqn == name)) { Logger.WriteLine(true, "Enum " + name + " already in known types list."); return(true); } if (Configuration.ClassOptInList.ContainsKey(package)) { // OptIn-Package if (!Configuration.ClassOptInList[package].Contains(name)) { Logger.WriteLine(true, "Enum " + name + " ignored beacause of opt-in package."); return(true); } } Logger.WriteLine(true, $"Relevant enum: [{enumeration.id}] [{enumId}] {name}"); var e = new Definitions.EnumDefinition() { Name = name, Package = package, OuterClass = c }; if (c == null) { Definitions.EnumItems.Add(e); } else { if (e.Name.Contains("::")) { e.Name = e.Name.Remove(0, e.Name.LastIndexOf(":", StringComparison.Ordinal)); } c.InnerEnums.Add(e); } foreach (var enumValue in enumeration.EnumValue) { e.Enumerators.Add(enumValue.name, enumValue.init.ToString()); } _AddInclude(enumeration.file); return(true); }
void GenerateEnumHeader(StringWriter wh, Definitions.EnumDefinition ed, bool inner) { string prefix = inner ? "\t" : ""; wh.WriteLine($"{prefix}//---------------------------------------------------------------------"); wh.WriteLine($"{prefix}// Enum {ed.Name}"); wh.WriteLine($"{prefix}//---------------------------------------------------------------------"); if (!inner) { wh.Write("public "); } wh.WriteLine($"{prefix}enum class {ed.Name}"); wh.WriteLine($"{prefix}{{"); bool isFirst = true; // write enumerators foreach (var e in ed.Enumerators) { if (isFirst) { isFirst = false; } else { wh.WriteLine(","); } wh.Write($"{prefix}\t{e.Key}"); if (!string.IsNullOrEmpty(e.Value)) { wh.Write(" = " + e.Value); } } wh.WriteLine(); wh.WriteLine($"{prefix}}}; // enum class {ed.Name}"); wh.WriteLine(); }