1#[cxx::bridge(namespace = "RDKit")]
2pub mod rd {
3 unsafe extern "C++" {
4 include!("rdkit-ffi/src/wrapper.h");
5
6 fn SmilesParse_smi_to_mol(smiles: &CxxString) -> SharedPtr<RWMol>;
8
9 type RWMol;
11 fn RWMol_get_num_atoms(mol: &SharedPtr<RWMol>) -> u32;
12 fn RWMol_get_num_heavy_atoms(mol: &SharedPtr<RWMol>) -> u32;
13 fn RWMol_get_num_bonds(mol: &SharedPtr<RWMol>) -> u32;
14 type ROMolPtrVec;
15 fn ROMolPtrVec_new() -> UniquePtr<ROMolPtrVec>;
16 fn ROMolPtrVec_emplace_back(mols: &UniquePtr<ROMolPtrVec>, mol: &SharedPtr<RWMol>);
17 fn ROMolPtrVec_ptrs_count(mols: &UniquePtr<ROMolPtrVec>) -> u32;
18 fn ROMolPtrVec_first_ptr_atom_count(mols: &UniquePtr<ROMolPtrVec>, index: usize) -> u32;
19
20 type MorganFingerprint;
22 fn MorganFP_get_fingerprint(mol: &SharedPtr<RWMol>, radius: u32, useChirality: bool, useBondTypes: bool, useCounts: bool, onlyNonzeroInvariants: bool, includeRedundantEnvironments: bool) -> UniquePtr<MorganFingerprint>;
23 fn MorganFP_get_nonzero_elements_size(mfp: &UniquePtr<MorganFingerprint>) -> usize;
24
25 type MCSResult;
27 fn FMCS_find_mcs(mols: &UniquePtr<ROMolPtrVec>) -> UniquePtr<MCSResult>;
28 fn MCSResult_num_atoms(mcsr: &UniquePtr<MCSResult>) -> u32;
29 fn MCSResult_num_bonds(mcsr: &UniquePtr<MCSResult>) -> u32;
30 fn MCSResult_smarts_string(mcsr: &UniquePtr<MCSResult>) -> &CxxString;
31 }
32}