mod bridge_functions;
mod generator;
mod methods;
mod native_args;
#[cfg(test)]
mod tests;
mod visitor_bridge;
pub use crate::codegen::generators::trait_bridge::find_bridge_param;
pub use bridge_functions::{gen_bridge_field_function, gen_bridge_function};
pub use generator::{RustlerBridgeGenerator, gen_trait_bridge};
use crate::core::config::{ResolvedCrateConfig, TraitBridgeConfig};
use crate::core::ir::{ApiSurface, TypeDef};
pub const TARGET_SPELLINGS: [&str; 2] = ["elixir", "rustler"];
pub fn targets_rustler(bridge: &TraitBridgeConfig) -> bool {
crate::codegen::generators::trait_bridge::bridge_targets_language(bridge, &TARGET_SPELLINGS)
}
pub fn active_bridges(config: &ResolvedCrateConfig) -> impl Iterator<Item = &TraitBridgeConfig> {
config.trait_bridges.iter().filter(|bridge| targets_rustler(bridge))
}
pub fn active_bridge_trait<'a>(bridge: &TraitBridgeConfig, api: &'a ApiSurface) -> Option<&'a TypeDef> {
crate::codegen::generators::trait_bridge::active_bridge_trait_def(bridge, api, &TARGET_SPELLINGS)
}