public static void WriteEnumTypes(List<string> lines, List<Type> enumTypes)
{
foreach(Type enumType in enumTypes)
{
if(enumType.GetEnumUnderlyingType() != typeof(int))
throw new Exception("Invalid underlying type for enum " + enumType.Name + ", must be int");
string[] enumNames = enumType.GetEnumNames();
int numEnumValues = enumNames.Length;
Array values = enumType.GetEnumValues();
int[] enumValues = new int[numEnumValues];
for(int i = 0; i < numEnumValues; ++i)
enumValues[i] = (int)values.GetValue(i);
lines.Add("enum class " + enumType.Name);
lines.Add("{");
for(int i = 0; i < values.Length; ++i)
lines.Add(" " + enumNames[i] + " = " + enumValues[i] + ",");
lines.Add("\r\n NumValues");
lines.Add("};\r\n");
lines.Add("typedef EnumSettingT<" + enumType.Name + "> " + enumType.Name + "Setting;\r\n");
}
}