#[cxx::bridge] mod ffi { unsafe extern "C++" { include!("molview/include/rdkit_bridge.hpp"); /// Return true when RDKit can parse the supplied SMILES. fn can_parse_smiles(smiles: &str) -> Result; /// Count valid molecule records in an in-memory SDF. fn count_sdf_molecules(sdf: &[u8]) -> Result; /// Render a SMILES molecule to PNG. fn render_smiles_png(smiles: &str) -> Result>; /// Render all valid molecule records in an SDF to a PNG grid. fn render_sdf_png(sdf: &[u8]) -> Result>; } } /// Check whether RDKit can parse a SMILES string. /// /// An RDKit C++ exception is returned as a `cxx::Exception`. pub fn can_parse_smiles(smiles: &str) -> Result { ffi::can_parse_smiles(smiles) } /// Count the valid molecules in an SDF byte stream. /// /// Invalid individual records are skipped by the underlying supplier. /// Structural errors that escape RDKit are returned as `cxx::Exception`. pub fn count_sdf_molecules(sdf: &[u8]) -> Result { ffi::count_sdf_molecules(sdf) } /// Render a SMILES molecule to PNG. pub fn render_smiles_png(smiles: &str) -> Result, cxx::Exception> { ffi::render_smiles_png(smiles) } /// Render all valid molecules in an SDF byte stream to a PNG grid. pub fn render_sdf_png(sdf: &[u8]) -> Result, cxx::Exception> { ffi::render_sdf_png(sdf) }