ferment-sys 0.2.14

Syntax tree morphing of FFI-compatible stuff
Documentation
use crate::{Config, Error};
use crate::lang::Specification;
use crate::tree::CrateTree;

#[allow(unused)]
pub trait CrateTreeWrite<SPEC> where SPEC: Specification {
    fn write(&self, crate_tree: &CrateTree) -> Result<(), Error>;
}

pub struct Writer {
    pub(crate) config: Config
}

impl From<Config> for Writer {
    fn from(config: Config) -> Self {
        Self { config }
    }
}


impl Writer {

    pub(crate) fn write_all(&self) -> Result<(), Error> {
        #[cfg(not(feature = "cbindgen_only"))]
        {
            let crate_tree = crate::tree::FileTreeProcessor::build(&self.config)?;
            CrateTreeWrite::<crate::lang::RustSpecification>::write(self, &crate_tree)?;
            #[cfg(feature = "objc")]
            {
                CrateTreeWrite::<crate::lang::objc::ObjCSpecification>::write(self, &crate_tree)?;
            }
        }
        #[cfg(feature = "cbindgen")]
        self.write_headers()
    }
}