#[macro_use]
pub mod nodes;
mod callable;
mod callback_interfaces;
mod checksums;
mod default;
mod enums;
mod ffi_async_data;
mod ffi_functions;
mod ffi_types;
mod modules;
mod objects;
mod records;
mod rename;
mod rust_buffer;
mod rust_future;
mod self_types;
mod sort;
mod type_definitions_from_api;
mod type_nodes;
mod uniffi_traits;
use crate::pipeline::initial;
use anyhow::{bail, Result};
use indexmap::IndexMap;
pub use nodes::*;
use uniffi_pipeline::{new_pipeline, Node, Pipeline};
pub fn pipeline(bindings_toml_key: &str) -> Pipeline<initial::Root, Root> {
let bindings_toml_key = bindings_toml_key.to_string();
new_pipeline()
.convert_ir_pass::<Root>()
.pass(modules::pass)
.pass(rust_buffer::pass)
.pass(rust_future::pass)
.pass(self_types::pass)
.pass(callable::pass)
.pass(type_definitions_from_api::pass)
.pass(ffi_types::pass)
.pass(ffi_async_data::pass)
.pass(type_nodes::pass)
.pass(enums::pass)
.pass(records::pass)
.pass(objects::pass)
.pass(callback_interfaces::pass)
.pass(ffi_functions::pass)
.pass(checksums::pass)
.pass(move |root: &mut Root| rename::pass(root, &bindings_toml_key))
.pass(sort::pass)
.pass(default::pass)
.pass(uniffi_traits::pass)
}