1#[cxx::bridge(namespace = "OpenBabel")]
54pub mod ob {
55 unsafe extern "C++" {
56 include!("openbabel-sys/src/wrapper.h");
57 type OBMol;
58 type OBSmartsPattern;
59 type OBConversion;
60 type OBForceField;
61
62 fn print_global_instances();
64
65 fn OBConversion_new() -> UniquePtr<OBConversion>;
68 fn OBConversion_set_in_format(
69 conv: &UniquePtr<OBConversion>,
70 input_format: &CxxString,
71 ) -> bool;
72 fn OBConversion_set_out_format(
73 conv: &UniquePtr<OBConversion>,
74 output_format: &CxxString,
75 ) -> bool;
76 fn OBConversion_set_in_and_out_formats(
77 conv: &UniquePtr<OBConversion>,
78 input_format: &CxxString,
79 output_format: &CxxString,
80 ) -> bool;
81 fn OBConversion_read_string(
82 conv: &UniquePtr<OBConversion>,
83 mol: &UniquePtr<OBMol>,
84 input: &CxxString,
85 ) -> bool;
86 fn OBConversion_write_string(
87 conv: &UniquePtr<OBConversion>,
88 mol: &UniquePtr<OBMol>,
89 ) -> String;
90 fn OBConversion_read_file(
91 conv: &UniquePtr<OBConversion>,
92 mol: &UniquePtr<OBMol>,
93 input_path: &CxxString,
94 ) -> bool;
95 fn OBConversion_write_file(
96 conv: &UniquePtr<OBConversion>,
97 mol: &UniquePtr<OBMol>,
98 output_path: &CxxString,
99 ) -> bool;
100 fn OBConversion_get_supported_input_format() -> Vec<String>;
101 fn OBConversion_get_supported_output_format() -> Vec<String>;
102
103 fn OBForceField_find_forcefield(ff_name: &CxxString) -> UniquePtr<OBForceField>;
105 fn OBForceField_setup(mol: &UniquePtr<OBMol>, pFF: &UniquePtr<OBForceField>) -> u32;
106 fn OBForceField_conjugate_gradients(pFF: &UniquePtr<OBForceField>, steps: u32, econv: f64);
107 fn OBForceField_conjugate_gradients_initialize(
108 pFF: &UniquePtr<OBForceField>,
109 steps: u32,
110 econv: f64,
111 );
112 fn OBForceField_conjugate_gradients_take_n_steps(
113 pFF: &UniquePtr<OBForceField>,
114 n: u32,
115 ) -> bool;
116 fn OBForceField_steepest_descent(pFF: &UniquePtr<OBForceField>, steps: u32, econv: f64);
117 fn OBForceField_steepest_descent_initialize(
118 pFF: &UniquePtr<OBForceField>,
119 steps: u32,
120 econv: f64,
121 );
122 fn OBForceField_steepest_descent_take_n_steps(
123 pFF: &UniquePtr<OBForceField>,
124 n: u32,
125 ) -> bool;
126 fn OBForceField_energy(pFF: &UniquePtr<OBForceField>) -> f64;
127 fn OBForceField_is_setup_needed(
128 pFF: &UniquePtr<OBForceField>,
129 mol: &UniquePtr<OBMol>,
130 ) -> bool;
131
132 fn OBMol_new() -> UniquePtr<OBMol>;
134 fn OBMol_from_smiles(smiles: &CxxString) -> UniquePtr<OBMol>;
135 fn OBMol_num_atoms(mol: &UniquePtr<OBMol>) -> u32;
136 fn OBMol_num_bonds(mol: &UniquePtr<OBMol>) -> u32;
137 fn OBMol_num_hvy_atoms(mol: &UniquePtr<OBMol>) -> u32;
138 fn OBMol_get_mol_wt(mol: &UniquePtr<OBMol>) -> f64;
139
140 fn OBFingerprint_get_fingerprint(fp_name: &CxxString, mol: &UniquePtr<OBMol>, nbits: u32) -> UniquePtr<CxxVector<u32>>;
142
143 fn OBSmartsPattern_from_smarts(smarts: &CxxString) -> UniquePtr<OBSmartsPattern>;
145 fn OBSmartsPattern_num_atoms(pattern: &UniquePtr<OBSmartsPattern>) -> u32;
146 fn OBSmartsPattern_num_bonds(pattern: &UniquePtr<OBSmartsPattern>) -> u32;
147 fn OBSmartsPattern_num_matches(pattern: &UniquePtr<OBSmartsPattern>) -> u32;
148 fn OBSmartsPattern_match(pattern: &UniquePtr<OBSmartsPattern>, mol: &UniquePtr<OBMol>) -> UniquePtr<CxxVector<i32>>;
149 }
150}
151
152
153mod tests;