pub struct Model {
pub identity: Identity,
pub version: String,
pub modules: Vec<ModuleBinding>,
pub types: TypeIndex,
}Expand description
The whole API, validated and lowered for code generation.
Built once per run by validate; every
generator renders from it alone.
Fields§
§identity: IdentityThe library’s identity: its name, C symbol prefix, native library name, and package metadata.
version: StringThe IR schema version of the source document.
modules: Vec<ModuleBinding>Modules in depth-first pre-order, each carrying its joined symbol path.
types: TypeIndexEvery user type name, mapped to its declaration.
Implementations§
Source§impl Model
impl Model
Sourcepub fn resolve(&self, ty: &TypeRef) -> Ty
pub fn resolve(&self, ty: &TypeRef) -> Ty
Resolve a written type reference against this model’s declarations.
A name no declaration provides resolves to a Ty::Record (see
assume_valid).
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 owner(&self, name: &str) -> &ModuleBinding
pub fn owner(&self, name: &str) -> &ModuleBinding
Sourcepub fn interface(&self, name: &str) -> &InterfaceBinding
pub fn interface(&self, name: &str) -> &InterfaceBinding
The interface named name, as carried by Ty::Interface.
§Panics
Panics when no interface has that name.
Sourcepub fn callback_interface(&self, name: &str) -> &CallbackInterfaceBinding
pub fn callback_interface(&self, name: &str) -> &CallbackInterfaceBinding
The callback interface named name, as carried by
Ty::CallbackInterface.
§Panics
Panics when no callback interface has that name.
Sourcepub fn enumeration(&self, name: &str) -> &EnumBinding
pub fn enumeration(&self, name: &str) -> &EnumBinding
The enum (C-style or rich) named name, as carried by Ty::Enum
and Ty::RichEnum.
§Panics
Panics when no enum has that name.
Sourcepub fn error_domain(&self, module: &ModuleBinding) -> Option<&ErrorBinding>
pub fn error_domain(&self, module: &ModuleBinding) -> Option<&ErrorBinding>
The error domain in scope for module’s throwing functions: its own,
else the nearest ancestor’s, else None (in which case validation
has rejected any throws there).
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 contract table function and the C header’s checker for it,
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, enum types and
constants (and a rich enum’s tag type), error-domain types and code
constants, callback-interface vtable types, and what the C
value-buffer helper header declares per user type: the struct of
every record, rich enum, and error code with fields
(ErrorCodeBinding::payload_tag), each with its
VALUE_CODECS. (The header’s list, map, and optional shapes fall
in RESERVED_SYMBOL_FAMILIES.)
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).
Trait Implementations§
impl Eq for Model
impl StructuralPartialEq for Model
Auto Trait Implementations§
impl Freeze for Model
impl RefUnwindSafe for Model
impl Send for Model
impl Sync for Model
impl Unpin for Model
impl UnsafeUnpin for Model
impl UnwindSafe for Model
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