From ea249e3595bc71df7dc10e921020cdc04df7a8ac Mon Sep 17 00:00:00 2001 From: grovre Date: Sun, 2 Feb 2025 21:42:34 -0600 Subject: [PATCH 1/4] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ca8d4854..79724ad5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /.idea /.vscode +/.vs /target Cargo.lock From b244f7b292d84ce408276e689031044176a79bf3 Mon Sep 17 00:00:00 2001 From: grovre Date: Sun, 2 Feb 2025 23:37:13 -0600 Subject: [PATCH 2/4] Fix mismatched types in C# source gen --- src/output/interfaces.rs | 6 +++++- src/output/schemas.rs | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) 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"); From 4be7b1793e14c9b32faf770b7b9c0022a833618e Mon Sep 17 00:00:00 2001 From: grovre Date: Mon, 3 Feb 2025 00:07:14 -0600 Subject: [PATCH 3/4] Handle all negative enum value cases --- src/output/schemas.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/output/schemas.rs b/src/output/schemas.rs index e665a3be..d89fb0eb 100644 --- a/src/output/schemas.rs +++ b/src/output/schemas.rs @@ -42,8 +42,8 @@ impl CodeWriter for SchemaMap { .iter() .map(|member| { let hex = format!("{:#X}", member.value); - let cast = if member.value == -1 { - format!("unchecked(({})-1)", type_name) + let cast = if member.value < 0 { + format!("unchecked(({}){})", type_name, member.value) } else { format!("{}", hex) }; From 451b2e48b8b946372d33fb22cdcf6b6deef050c3 Mon Sep 17 00:00:00 2001 From: grovre Date: Mon, 3 Feb 2025 00:07:14 -0600 Subject: [PATCH 4/4] amend --- src/output/schemas.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/output/schemas.rs b/src/output/schemas.rs index e665a3be..85059042 100644 --- a/src/output/schemas.rs +++ b/src/output/schemas.rs @@ -41,13 +41,12 @@ impl CodeWriter for SchemaMap { .members .iter() .map(|member| { - let hex = format!("{:#X}", member.value); - let cast = if member.value == -1 { - format!("unchecked(({})-1)", type_name) + let hex = if member.value < 0 || member.value > i32::MAX as i64 { + format!("unchecked(({}){})", type_name, member.value) } else { - format!("{}", hex) + format!("{:#X}", member.value) }; - format!("{} = {}", member.name, cast) + format!("{} = {}", member.name, hex) }) .collect::>() .join(",\n");