use super::doc::*;
use super::*;
pub(crate) fn generate(
f: &mut impl Printer,
native_enum: &Handle<Enum<Validated>>,
) -> FormattingResult<()> {
let enum_name = native_enum.name.camel_case();
documentation(f, |f| javadoc_print(f, &native_enum.doc))?;
f.writeln(&format!("public enum {enum_name}"))?;
blocked(f, |f| {
for variant in &native_enum.variants {
documentation(f, |f| javadoc_print(f, &variant.doc))?;
f.writeln(&format!(
"{}({}),",
variant.name.capital_snake_case(),
variant.value
))?;
}
f.write(";")?;
f.newline()?;
f.writeln("final private int value;")?;
f.newline()?;
f.writeln(&format!("private {enum_name}(int value)"))?;
blocked(f, |f| f.writeln("this.value = value;"))
})
}