pub struct BindingModel {
pub prefix: String,
pub version: String,
pub modules: Vec<ModuleBinding>,
}Expand description
The whole API, normalized and lowered for code generation.
Fields§
§prefix: StringThe C symbol prefix every emitted name is built from.
version: StringThe IR schema version of the source Api.
modules: Vec<ModuleBinding>Modules in depth-first pre-order, each carrying its joined symbol path.
Implementations§
Source§impl BindingModel
impl BindingModel
Sourcepub fn build(api: &ResolvedApi) -> Self
pub fn build(api: &ResolvedApi) -> Self
Build the model from a ResolvedApi. Every C symbol name starts
with the API identity’s prefix, which is the same for the producer and
every consumer of one library.
Sourcepub fn roots(&self) -> impl Iterator<Item = &ModuleBinding>
pub fn roots(&self) -> impl Iterator<Item = &ModuleBinding>
The top-level modules (those with a single path segment), in order.
Sourcepub fn children<'a>(
&'a self,
parent: &'a ModuleBinding,
) -> impl Iterator<Item = &'a ModuleBinding> + 'a
pub fn children<'a>( &'a self, parent: &'a ModuleBinding, ) -> impl Iterator<Item = &'a ModuleBinding> + 'a
The direct submodules of parent, in declaration order. Backends that
render nested namespaces recurse with this instead of re-walking the
IR tree.
Sourcepub fn functions(&self) -> impl Iterator<Item = (&ModuleBinding, &FnBinding)>
pub fn functions(&self) -> impl Iterator<Item = (&ModuleBinding, &FnBinding)>
Iterate every function across all modules, paired with its module.
Sourcepub fn callables(&self) -> impl Iterator<Item = (&ModuleBinding, &FnBinding)>
pub fn callables(&self) -> impl Iterator<Item = (&ModuleBinding, &FnBinding)>
Iterate every callable (free functions and interface members) across all modules, paired with its module.
Sourcepub fn callback_interfaces(
&self,
) -> impl Iterator<Item = (&ModuleBinding, &CallbackInterfaceBinding)>
pub fn callback_interfaces( &self, ) -> impl Iterator<Item = (&ModuleBinding, &CallbackInterfaceBinding)>
Iterate every callback interface across all modules, paired with its module.
Sourcepub fn interface(&self, name: &str, current: &str) -> Option<&InterfaceBinding>
pub fn interface(&self, name: &str, current: &str) -> Option<&InterfaceBinding>
Find an interface anywhere in the API by its (possibly dot-qualified)
resolved name, as carried by Ty::Interface. A bare name is looked
up in current (the referencing module’s dot path) first.
Sourcepub fn c_symbols(&self) -> Vec<(String, String)>
pub fn c_symbols(&self) -> Vec<(String, String)>
Every C identifier the library’s ABI declares, paired with a human-readable description of the declaration that owns it, in declaration order. Validation rejects an API in which two entries share an identifier.
Covers the runtime surface (RUNTIME_SYMBOLS), each top-level
module’s checksum function, every callable’s symbols (sync entry
point, async launcher and completion type, iterator launcher, type,
_next, and _destroy), interface types with their _clone and
_destroy, C-style enum types and constants, error-domain types and
code constants, and callback-interface vtable types.
Sourcepub fn has_iterators(&self) -> bool
pub fn has_iterators(&self) -> bool
true when any callable anywhere in the API returns an iterator.
Sourcepub fn has_callback_interfaces(&self) -> bool
pub fn has_callback_interfaces(&self) -> bool
true when the API declares any callback interface.
Sourcepub fn has_interfaces(&self) -> bool
pub fn has_interfaces(&self) -> bool
true when the API declares any interface.
Sourcepub fn has_buffers(&self) -> bool
pub fn has_buffers(&self) -> bool
true when any type anywhere in the API crosses the ABI as a value
buffer (records, rich enums, optionals, lists, maps, error payloads).
Sourcepub fn has_buffered_objects(&self) -> bool
pub fn has_buffered_objects(&self) -> bool
true when any interface appears inside a buffered position (a record
field, a collection element, an optional payload, a rich-enum field),
so codecs need object-token support.
Sourcepub fn any_type(&self, pred: &dyn Fn(&Ty) -> bool) -> bool
pub fn any_type(&self, pred: &dyn Fn(&Ty) -> bool) -> bool
Visit every boundary-crossing type in the API (callable and
callback-method parameters and returns, iterator elements, record,
variant, and error payload fields), recursing into composites, and
return whether any satisfies pred. Backends use this to decide which
runtime helpers a given API actually needs.
Trait Implementations§
Source§impl Clone for BindingModel
impl Clone for BindingModel
Source§impl Debug for BindingModel
impl Debug for BindingModel
impl Eq for BindingModel
Source§impl PartialEq for BindingModel
impl PartialEq for BindingModel
impl StructuralPartialEq for BindingModel
Auto Trait Implementations§
impl Freeze for BindingModel
impl RefUnwindSafe for BindingModel
impl Send for BindingModel
impl Sync for BindingModel
impl Unpin for BindingModel
impl UnsafeUnpin for BindingModel
impl UnwindSafe for BindingModel
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more