diff options
Diffstat (limited to 'bindgen-tests/tests/parse_callbacks/mod.rs')
-rw-r--r-- | bindgen-tests/tests/parse_callbacks/mod.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/bindgen-tests/tests/parse_callbacks/mod.rs b/bindgen-tests/tests/parse_callbacks/mod.rs new file mode 100644 index 00000000..b94b54de --- /dev/null +++ b/bindgen-tests/tests/parse_callbacks/mod.rs @@ -0,0 +1,42 @@ +use bindgen::callbacks::*; + +#[derive(Debug)] +struct EnumVariantRename; + +impl ParseCallbacks for EnumVariantRename { + fn enum_variant_name( + &self, + _enum_name: Option<&str>, + original_variant_name: &str, + _variant_value: EnumVariantValue, + ) -> Option<String> { + Some(format!("RENAMED_{}", original_variant_name)) + } +} + +#[derive(Debug)] +struct BlocklistedTypeImplementsTrait; + +impl ParseCallbacks for BlocklistedTypeImplementsTrait { + fn blocklisted_type_implements_trait( + &self, + _name: &str, + derive_trait: DeriveTrait, + ) -> Option<ImplementsTrait> { + if derive_trait == DeriveTrait::Hash { + Some(ImplementsTrait::No) + } else { + Some(ImplementsTrait::Yes) + } + } +} + +pub fn lookup(cb: &str) -> Box<dyn ParseCallbacks> { + match cb { + "enum-variant-rename" => Box::new(EnumVariantRename), + "blocklisted-type-implements-trait" => { + Box::new(BlocklistedTypeImplementsTrait) + } + _ => panic!("Couldn't find name ParseCallbacks: {}", cb), + } +} |