diff --git a/src/output/interfaces.rs b/src/output/interfaces.rs index ea25fd8e..ff5677f4 100644 --- a/src/output/interfaces.rs +++ b/src/output/interfaces.rs @@ -16,7 +16,11 @@ impl CodeWriter for InterfaceMap { false, |fmt| { for (name, value) in ifaces { - writeln!(fmt, "public const nint {} = {:#X};", name, value)?; + if *value > i32::MAX as u64 { + writeln!(fmt, "public static readonly nint {} = unchecked((nint){:#X});", name, value)?; + } else { + writeln!(fmt, "public const nint {} = {:#X};", name, value)?; + }; } Ok(()) diff --git a/src/output/schemas.rs b/src/output/schemas.rs index 4a6b0ac1..e665a3be 100644 --- a/src/output/schemas.rs +++ b/src/output/schemas.rs @@ -41,7 +41,13 @@ impl CodeWriter for SchemaMap { .members .iter() .map(|member| { - format!("{} = {:#X}", member.name, member.value) + let hex = format!("{:#X}", member.value); + let cast = if member.value == -1 { + format!("unchecked(({})-1)", type_name) + } else { + format!("{}", hex) + }; + format!("{} = {}", member.name, cast) }) .collect::>() .join(",\n");