Write enum member values in hexadecimal

This commit is contained in:
a2x 2024-03-29 18:36:51 +10:00
parent 413ae710b1
commit 8b79c3ba8d
3 changed files with 29 additions and 29 deletions

View File

@ -73,7 +73,7 @@ impl<'a> CodeGen for Item<'a> {
fn to_cs(&self, results: &Results, indent_size: usize) -> Result<String> {
match self {
Item::Buttons(buttons) => buttons.to_cs(results, indent_size),
Item::Interfaces(interfaces) => interfaces.to_cs(results, indent_size),
Item::Interfaces(ifaces) => ifaces.to_cs(results, indent_size),
Item::Offsets(offsets) => offsets.to_cs(results, indent_size),
Item::Schemas(schemas) => schemas.to_cs(results, indent_size),
}
@ -82,7 +82,7 @@ impl<'a> CodeGen for Item<'a> {
fn to_hpp(&self, results: &Results, indent_size: usize) -> Result<String> {
match self {
Item::Buttons(buttons) => buttons.to_hpp(results, indent_size),
Item::Interfaces(interfaces) => interfaces.to_hpp(results, indent_size),
Item::Interfaces(ifaces) => ifaces.to_hpp(results, indent_size),
Item::Offsets(offsets) => offsets.to_hpp(results, indent_size),
Item::Schemas(schemas) => schemas.to_hpp(results, indent_size),
}
@ -91,7 +91,7 @@ impl<'a> CodeGen for Item<'a> {
fn to_json(&self, results: &Results, indent_size: usize) -> Result<String> {
match self {
Item::Buttons(buttons) => buttons.to_json(results, indent_size),
Item::Interfaces(interfaces) => interfaces.to_json(results, indent_size),
Item::Interfaces(ifaces) => ifaces.to_json(results, indent_size),
Item::Offsets(offsets) => offsets.to_json(results, indent_size),
Item::Schemas(schemas) => schemas.to_json(results, indent_size),
}
@ -100,7 +100,7 @@ impl<'a> CodeGen for Item<'a> {
fn to_rs(&self, results: &Results, indent_size: usize) -> Result<String> {
match self {
Item::Buttons(buttons) => buttons.to_rs(results, indent_size),
Item::Interfaces(interfaces) => interfaces.to_rs(results, indent_size),
Item::Interfaces(ifaces) => ifaces.to_rs(results, indent_size),
Item::Offsets(offsets) => offsets.to_rs(results, indent_size),
Item::Schemas(schemas) => schemas.to_rs(results, indent_size),
}

View File

@ -27,10 +27,10 @@ impl CodeGen for SchemaMap {
|fmt| {
for enum_ in enums {
let ty = match enum_.ty.as_str() {
"int8" => "sbyte",
"int16" => "short",
"int32" => "int",
"int64" => "long",
"uint8" => "byte",
"uint16" => "ushort",
"uint32" => "uint",
"uint64" => "ulong",
_ => continue,
};
@ -40,13 +40,13 @@ impl CodeGen for SchemaMap {
fmt.block(
&format!("public enum {} : {}", sanitize_name(&enum_.name), ty),
|fmt| {
let members: Vec<_> = enum_
let members = enum_
.members
.iter()
.map(|member| {
format!("{} = {}", member.name, member.value)
format!("{} = {:#X}", member.name, member.value)
})
.collect()
.collect::<Vec<_>>()
.join(",\n");
writeln!(fmt, "{}", members)
@ -111,10 +111,10 @@ impl CodeGen for SchemaMap {
|fmt| {
for enum_ in enums {
let ty = match enum_.ty.as_str() {
"int8" => "int8_t",
"int16" => "int16_t",
"int32" => "int32_t",
"int64" => "int64_t",
"uint8" => "uint8_t",
"uint16" => "uint16_t",
"uint32" => "uint32_t",
"uint64" => "uint64_t",
_ => continue,
};
@ -128,13 +128,13 @@ impl CodeGen for SchemaMap {
ty
),
|fmt| {
let members: Vec<_> = enum_
let members = enum_
.members
.iter()
.map(|member| {
format!("{} = {}", member.name, member.value)
format!("{} = {:#X}", member.name, member.value)
})
.collect()
.collect::<Vec<_>>()
.join(",\n");
writeln!(fmt, "{}", members)
@ -276,10 +276,10 @@ impl CodeGen for SchemaMap {
|fmt| {
for enum_ in enums {
let ty = match enum_.ty.as_str() {
"int8" => "i8",
"int16" => "i16",
"int32" => "i32",
"int64" => "i64",
"uint8" => "u8",
"uint16" => "u16",
"uint32" => "u32",
"uint64" => "u64",
_ => continue,
};
@ -295,13 +295,13 @@ impl CodeGen for SchemaMap {
|fmt| {
// TODO: Handle the case where multiple members share
// the same value.
let members: Vec<_> = enum_
let members = enum_
.members
.iter()
.map(|member| {
format!("{} = {}", member.name, member.value)
format!("{} = {:#X}", member.name, member.value)
})
.collect()
.collect::<Vec<_>>()
.join(",\n");
writeln!(fmt, "{}", members)

View File

@ -23,10 +23,10 @@ impl SchemaEnumInfoData {
#[inline]
pub fn type_name(&self) -> &str {
match self.alignment {
1 => "int8",
2 => "int16",
4 => "int32",
8 => "int64",
1 => "uint8",
2 => "uint16",
4 => "uint32",
8 => "uint64",
_ => "unknown",
}
}