private void WriteEnum()

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}}");
		}