in utils/SkiaSharpGenerator/Generate/Generator.cs [339:387]
private void WriteEnum(TextWriter writer, CppEnum enm)
{
var cppEnumName = enm.GetDisplayName();
if (string.IsNullOrEmpty(cppEnumName))
{
Log?.LogWarning($"Unknown enum type {enm}");
return;
}
typeMappings.TryGetValue(cppEnumName, out var map);
if (map?.Generate == false)
return;
Log?.LogVerbose($" {cppEnumName}");
var name = map?.CsType ?? CleanName(cppEnumName);
var visibility = "public";
if (map?.IsInternal == true)
visibility = "internal";
writer.WriteLine();
writer.WriteLine($"\t// {cppEnumName}");
if (map?.IsObsolete == true)
writer.WriteLine($"\t[Obsolete]");
if (map?.IsFlags == true)
writer.WriteLine($"\t[Flags]");
writer.WriteLine($"\t{visibility} enum {name} {{");
foreach (var field in enm.Items)
{
var fieldName = field.Name;
if (map != null && map.Members.TryGetValue(fieldName, out var fieldMap))
fieldName = fieldMap;
else
fieldName = CleanEnumFieldName(fieldName, cppEnumName);
if (string.IsNullOrEmpty(fieldName))
continue;
var commentVal = field.ValueExpression?.ToString();
if (string.IsNullOrEmpty(commentVal))
commentVal = field.Value.ToString();
writer.WriteLine($"\t\t// {field.Name} = {commentVal}");
writer.WriteLine($"\t\t{fieldName} = {field.Value},");
}
writer.WriteLine($"\t}}");
}