in src/Json.Schema.ToDotNet/EnumGenerator.cs [44:95]
public override void AddMembers()
{
if (Schema?.Enum.Count > 0)
{
EnumHint enumHint = GetEnumHintForType(TypeName);
int[] enumValues = enumHint?.MemberValues;
bool isFlagsEnum = enumHint?.Flags == true;
var enumDeclaration = TypeDeclaration as EnumDeclarationSyntax;
var enumMembers = new List<EnumMemberDeclarationSyntax>();
int enumValueIndexOffset = enumHint?.HasZeroValue == true ? 1 : 0;
for (int i = 0; i < Schema.Enum.Count; ++i)
{
EqualsValueClauseSyntax equalsValueClause = null;
int? enumValue = null;
if (ShouldSupplyValueFor(i, enumHint?.HasZeroValue == true))
{
if (enumValues != null)
{
enumValue = enumValues[i - enumValueIndexOffset];
}
else if (isFlagsEnum)
{
enumValue = (int)Math.Pow(2, i - 1);
}
}
if (enumValue.HasValue)
{
equalsValueClause = SyntaxFactory.EqualsValueClause(
SyntaxFactory.LiteralExpression(
SyntaxKind.NumericLiteralExpression,
SyntaxFactory.Literal(enumValue.Value)));
}
string enumName = Schema.Enum[i].ToString().ToPascalCase();
enumMembers.Add(
SyntaxFactory.EnumMemberDeclaration(
default(SyntaxList<AttributeListSyntax>),
SyntaxFactory.Identifier(enumName),
equalsValueClause));
}
TypeDeclaration = enumDeclaration.AddMembers(enumMembers.ToArray());
}
}