diff options
Diffstat (limited to 'tests/parse_callbacks')
-rw-r--r-- | tests/parse_callbacks/mod.rs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/tests/parse_callbacks/mod.rs b/tests/parse_callbacks/mod.rs index 01993cfc..b94b54de 100644 --- a/tests/parse_callbacks/mod.rs +++ b/tests/parse_callbacks/mod.rs @@ -1,4 +1,4 @@ -use bindgen::callbacks::ParseCallbacks; +use bindgen::callbacks::*; #[derive(Debug)] struct EnumVariantRename; @@ -8,15 +8,35 @@ impl ParseCallbacks for EnumVariantRename { &self, _enum_name: Option<&str>, original_variant_name: &str, - _variant_value: bindgen::callbacks::EnumVariantValue, + _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), } } |