1use super::*;
7use libloading::{Library, Symbol};
8
9unsafe fn get_symbol<'f, F>(libs: &'f [Library], name: &[u8]) -> Option<Symbol<'f, F>> {
10 libs.iter().find_map(|lib| lib.get::<F>(name).ok())
11}
12
13impl DyLoadLib {
14 pub unsafe fn new(libs: Vec<libloading::Library>, libs_path: Vec<String>) -> DyLoadLib {
15 let mut result = DyLoadLib {
16 __libraries: vec![], __libraries_path: vec![], __error: None,
19 cuestCreate: get_symbol(&libs, b"cuestCreate\0").map(|sym| *sym),
20 cuestDestroy: get_symbol(&libs, b"cuestDestroy\0").map(|sym| *sym),
21 cuestSetMathMode: get_symbol(&libs, b"cuestSetMathMode\0").map(|sym| *sym),
22 cuestGetMathMode: get_symbol(&libs, b"cuestGetMathMode\0").map(|sym| *sym),
23 cuestSetComputeCapabilityTarget: get_symbol(
24 &libs,
25 b"cuestSetComputeCapabilityTarget\0",
26 )
27 .map(|sym| *sym),
28 cuestGetComputeCapabilityTarget: get_symbol(
29 &libs,
30 b"cuestGetComputeCapabilityTarget\0",
31 )
32 .map(|sym| *sym),
33 cuestGetMajorVersion: get_symbol(&libs, b"cuestGetMajorVersion\0").map(|sym| *sym),
34 cuestGetMinorVersion: get_symbol(&libs, b"cuestGetMinorVersion\0").map(|sym| *sym),
35 cuestGetPatchVersion: get_symbol(&libs, b"cuestGetPatchVersion\0").map(|sym| *sym),
36 cuestAOShellCreate: get_symbol(&libs, b"cuestAOShellCreate\0").map(|sym| *sym),
37 cuestAOShellDestroy: get_symbol(&libs, b"cuestAOShellDestroy\0").map(|sym| *sym),
38 cuestAOBasisCreate: get_symbol(&libs, b"cuestAOBasisCreate\0").map(|sym| *sym),
39 cuestAOBasisCreateWorkspaceQuery: get_symbol(
40 &libs,
41 b"cuestAOBasisCreateWorkspaceQuery\0",
42 )
43 .map(|sym| *sym),
44 cuestAOBasisDestroy: get_symbol(&libs, b"cuestAOBasisDestroy\0").map(|sym| *sym),
45 cuestAOPairListCreate: get_symbol(&libs, b"cuestAOPairListCreate\0").map(|sym| *sym),
46 cuestAOPairListCreateWorkspaceQuery: get_symbol(
47 &libs,
48 b"cuestAOPairListCreateWorkspaceQuery\0",
49 )
50 .map(|sym| *sym),
51 cuestAOPairListDestroy: get_symbol(&libs, b"cuestAOPairListDestroy\0").map(|sym| *sym),
52 cuestECPCompute: get_symbol(&libs, b"cuestECPCompute\0").map(|sym| *sym),
53 cuestECPComputeWorkspaceQuery: get_symbol(&libs, b"cuestECPComputeWorkspaceQuery\0")
54 .map(|sym| *sym),
55 cuestECPDerivativeCompute: get_symbol(&libs, b"cuestECPDerivativeCompute\0")
56 .map(|sym| *sym),
57 cuestECPDerivativeComputeWorkspaceQuery: get_symbol(
58 &libs,
59 b"cuestECPDerivativeComputeWorkspaceQuery\0",
60 )
61 .map(|sym| *sym),
62 cuestECPAtomCreate: get_symbol(&libs, b"cuestECPAtomCreate\0").map(|sym| *sym),
63 cuestECPAtomDestroy: get_symbol(&libs, b"cuestECPAtomDestroy\0").map(|sym| *sym),
64 cuestECPShellCreate: get_symbol(&libs, b"cuestECPShellCreate\0").map(|sym| *sym),
65 cuestECPShellDestroy: get_symbol(&libs, b"cuestECPShellDestroy\0").map(|sym| *sym),
66 cuestECPIntPlanCreate: get_symbol(&libs, b"cuestECPIntPlanCreate\0").map(|sym| *sym),
67 cuestECPIntPlanCreateWorkspaceQuery: get_symbol(
68 &libs,
69 b"cuestECPIntPlanCreateWorkspaceQuery\0",
70 )
71 .map(|sym| *sym),
72 cuestECPIntPlanDestroy: get_symbol(&libs, b"cuestECPIntPlanDestroy\0").map(|sym| *sym),
73 cuestOEIntPlanCreate: get_symbol(&libs, b"cuestOEIntPlanCreate\0").map(|sym| *sym),
74 cuestOEIntPlanCreateWorkspaceQuery: get_symbol(
75 &libs,
76 b"cuestOEIntPlanCreateWorkspaceQuery\0",
77 )
78 .map(|sym| *sym),
79 cuestOEIntPlanDestroy: get_symbol(&libs, b"cuestOEIntPlanDestroy\0").map(|sym| *sym),
80 cuestDFIntPlanCreate: get_symbol(&libs, b"cuestDFIntPlanCreate\0").map(|sym| *sym),
81 cuestDFIntPlanCreateWorkspaceQuery: get_symbol(
82 &libs,
83 b"cuestDFIntPlanCreateWorkspaceQuery\0",
84 )
85 .map(|sym| *sym),
86 cuestDFIntPlanDestroy: get_symbol(&libs, b"cuestDFIntPlanDestroy\0").map(|sym| *sym),
87 cuestOverlapCompute: get_symbol(&libs, b"cuestOverlapCompute\0").map(|sym| *sym),
88 cuestOverlapComputeWorkspaceQuery: get_symbol(
89 &libs,
90 b"cuestOverlapComputeWorkspaceQuery\0",
91 )
92 .map(|sym| *sym),
93 cuestOverlapDerivativeCompute: get_symbol(&libs, b"cuestOverlapDerivativeCompute\0")
94 .map(|sym| *sym),
95 cuestOverlapDerivativeComputeWorkspaceQuery: get_symbol(
96 &libs,
97 b"cuestOverlapDerivativeComputeWorkspaceQuery\0",
98 )
99 .map(|sym| *sym),
100 cuestKineticCompute: get_symbol(&libs, b"cuestKineticCompute\0").map(|sym| *sym),
101 cuestKineticComputeWorkspaceQuery: get_symbol(
102 &libs,
103 b"cuestKineticComputeWorkspaceQuery\0",
104 )
105 .map(|sym| *sym),
106 cuestKineticDerivativeCompute: get_symbol(&libs, b"cuestKineticDerivativeCompute\0")
107 .map(|sym| *sym),
108 cuestKineticDerivativeComputeWorkspaceQuery: get_symbol(
109 &libs,
110 b"cuestKineticDerivativeComputeWorkspaceQuery\0",
111 )
112 .map(|sym| *sym),
113 cuestMultipoleCompute: get_symbol(&libs, b"cuestMultipoleCompute\0").map(|sym| *sym),
114 cuestMultipoleComputeWorkspaceQuery: get_symbol(
115 &libs,
116 b"cuestMultipoleComputeWorkspaceQuery\0",
117 )
118 .map(|sym| *sym),
119 cuestMultipoleDerivativeCompute: get_symbol(
120 &libs,
121 b"cuestMultipoleDerivativeCompute\0",
122 )
123 .map(|sym| *sym),
124 cuestMultipoleDerivativeComputeWorkspaceQuery: get_symbol(
125 &libs,
126 b"cuestMultipoleDerivativeComputeWorkspaceQuery\0",
127 )
128 .map(|sym| *sym),
129 cuestAngularMomentumCompute: get_symbol(&libs, b"cuestAngularMomentumCompute\0")
130 .map(|sym| *sym),
131 cuestAngularMomentumComputeWorkspaceQuery: get_symbol(
132 &libs,
133 b"cuestAngularMomentumComputeWorkspaceQuery\0",
134 )
135 .map(|sym| *sym),
136 cuestAngularMomentumDerivativeCompute: get_symbol(
137 &libs,
138 b"cuestAngularMomentumDerivativeCompute\0",
139 )
140 .map(|sym| *sym),
141 cuestAngularMomentumDerivativeComputeWorkspaceQuery: get_symbol(
142 &libs,
143 b"cuestAngularMomentumDerivativeComputeWorkspaceQuery\0",
144 )
145 .map(|sym| *sym),
146 cuestNablaCompute: get_symbol(&libs, b"cuestNablaCompute\0").map(|sym| *sym),
147 cuestNablaComputeWorkspaceQuery: get_symbol(
148 &libs,
149 b"cuestNablaComputeWorkspaceQuery\0",
150 )
151 .map(|sym| *sym),
152 cuestNablaDerivativeCompute: get_symbol(&libs, b"cuestNablaDerivativeCompute\0")
153 .map(|sym| *sym),
154 cuestNablaDerivativeComputeWorkspaceQuery: get_symbol(
155 &libs,
156 b"cuestNablaDerivativeComputeWorkspaceQuery\0",
157 )
158 .map(|sym| *sym),
159 cuestPotentialCompute: get_symbol(&libs, b"cuestPotentialCompute\0").map(|sym| *sym),
160 cuestPotentialComputeWorkspaceQuery: get_symbol(
161 &libs,
162 b"cuestPotentialComputeWorkspaceQuery\0",
163 )
164 .map(|sym| *sym),
165 cuestPotentialDerivativeCompute: get_symbol(
166 &libs,
167 b"cuestPotentialDerivativeCompute\0",
168 )
169 .map(|sym| *sym),
170 cuestPotentialDerivativeComputeWorkspaceQuery: get_symbol(
171 &libs,
172 b"cuestPotentialDerivativeComputeWorkspaceQuery\0",
173 )
174 .map(|sym| *sym),
175 cuestDFCoulombCompute: get_symbol(&libs, b"cuestDFCoulombCompute\0").map(|sym| *sym),
176 cuestDFCoulombComputeWorkspaceQuery: get_symbol(
177 &libs,
178 b"cuestDFCoulombComputeWorkspaceQuery\0",
179 )
180 .map(|sym| *sym),
181 cuestDFSymmetricExchangeCompute: get_symbol(
182 &libs,
183 b"cuestDFSymmetricExchangeCompute\0",
184 )
185 .map(|sym| *sym),
186 cuestDFSymmetricExchangeComputeWorkspaceQuery: get_symbol(
187 &libs,
188 b"cuestDFSymmetricExchangeComputeWorkspaceQuery\0",
189 )
190 .map(|sym| *sym),
191 cuestDFNonsymmetricExchangeCompute: get_symbol(
192 &libs,
193 b"cuestDFNonsymmetricExchangeCompute\0",
194 )
195 .map(|sym| *sym),
196 cuestDFNonsymmetricExchangeComputeWorkspaceQuery: get_symbol(
197 &libs,
198 b"cuestDFNonsymmetricExchangeComputeWorkspaceQuery\0",
199 )
200 .map(|sym| *sym),
201 cuestDFSymmetricDerivativeCompute: get_symbol(
202 &libs,
203 b"cuestDFSymmetricDerivativeCompute\0",
204 )
205 .map(|sym| *sym),
206 cuestDFSymmetricDerivativeComputeWorkspaceQuery: get_symbol(
207 &libs,
208 b"cuestDFSymmetricDerivativeComputeWorkspaceQuery\0",
209 )
210 .map(|sym| *sym),
211 cuestDFMOIntegralsCompute: get_symbol(&libs, b"cuestDFMOIntegralsCompute\0")
212 .map(|sym| *sym),
213 cuestDFMOIntegralsComputeWorkspaceQuery: get_symbol(
214 &libs,
215 b"cuestDFMOIntegralsComputeWorkspaceQuery\0",
216 )
217 .map(|sym| *sym),
218 cuestAtomGridCreate: get_symbol(&libs, b"cuestAtomGridCreate\0").map(|sym| *sym),
219 cuestAtomGridDestroy: get_symbol(&libs, b"cuestAtomGridDestroy\0").map(|sym| *sym),
220 cuestMolecularGridCreate: get_symbol(&libs, b"cuestMolecularGridCreate\0")
221 .map(|sym| *sym),
222 cuestMolecularGridCreateWorkspaceQuery: get_symbol(
223 &libs,
224 b"cuestMolecularGridCreateWorkspaceQuery\0",
225 )
226 .map(|sym| *sym),
227 cuestMolecularGridDestroy: get_symbol(&libs, b"cuestMolecularGridDestroy\0")
228 .map(|sym| *sym),
229 cuestXCIntPlanCreate: get_symbol(&libs, b"cuestXCIntPlanCreate\0").map(|sym| *sym),
230 cuestXCIntPlanCreateWorkspaceQuery: get_symbol(
231 &libs,
232 b"cuestXCIntPlanCreateWorkspaceQuery\0",
233 )
234 .map(|sym| *sym),
235 cuestXCIntPlanDestroy: get_symbol(&libs, b"cuestXCIntPlanDestroy\0").map(|sym| *sym),
236 cuestXCIntegrationGridCompute: get_symbol(&libs, b"cuestXCIntegrationGridCompute\0")
237 .map(|sym| *sym),
238 cuestXCIntegrationGridComputeWorkspaceQuery: get_symbol(
239 &libs,
240 b"cuestXCIntegrationGridComputeWorkspaceQuery\0",
241 )
242 .map(|sym| *sym),
243 cuestXCIntegrationWeightCompute: get_symbol(
244 &libs,
245 b"cuestXCIntegrationWeightCompute\0",
246 )
247 .map(|sym| *sym),
248 cuestXCIntegrationWeightComputeWorkspaceQuery: get_symbol(
249 &libs,
250 b"cuestXCIntegrationWeightComputeWorkspaceQuery\0",
251 )
252 .map(|sym| *sym),
253 cuestXCPotentialRKSCompute: get_symbol(&libs, b"cuestXCPotentialRKSCompute\0")
254 .map(|sym| *sym),
255 cuestXCPotentialRKSComputeWorkspaceQuery: get_symbol(
256 &libs,
257 b"cuestXCPotentialRKSComputeWorkspaceQuery\0",
258 )
259 .map(|sym| *sym),
260 cuestXCPotentialUKSCompute: get_symbol(&libs, b"cuestXCPotentialUKSCompute\0")
261 .map(|sym| *sym),
262 cuestXCPotentialUKSComputeWorkspaceQuery: get_symbol(
263 &libs,
264 b"cuestXCPotentialUKSComputeWorkspaceQuery\0",
265 )
266 .map(|sym| *sym),
267 cuestXCDensityCompute: get_symbol(&libs, b"cuestXCDensityCompute\0").map(|sym| *sym),
268 cuestXCDensityComputeWorkspaceQuery: get_symbol(
269 &libs,
270 b"cuestXCDensityComputeWorkspaceQuery\0",
271 )
272 .map(|sym| *sym),
273 cuestXCPotentialCompute: get_symbol(&libs, b"cuestXCPotentialCompute\0")
274 .map(|sym| *sym),
275 cuestXCPotentialComputeWorkspaceQuery: get_symbol(
276 &libs,
277 b"cuestXCPotentialComputeWorkspaceQuery\0",
278 )
279 .map(|sym| *sym),
280 cuestXCNonsymmetricDensityCompute: get_symbol(
281 &libs,
282 b"cuestXCNonsymmetricDensityCompute\0",
283 )
284 .map(|sym| *sym),
285 cuestXCNonsymmetricDensityComputeWorkspaceQuery: get_symbol(
286 &libs,
287 b"cuestXCNonsymmetricDensityComputeWorkspaceQuery\0",
288 )
289 .map(|sym| *sym),
290 cuestXCDerivativeRKSCompute: get_symbol(&libs, b"cuestXCDerivativeRKSCompute\0")
291 .map(|sym| *sym),
292 cuestXCDerivativeRKSComputeWorkspaceQuery: get_symbol(
293 &libs,
294 b"cuestXCDerivativeRKSComputeWorkspaceQuery\0",
295 )
296 .map(|sym| *sym),
297 cuestXCDerivativeUKSCompute: get_symbol(&libs, b"cuestXCDerivativeUKSCompute\0")
298 .map(|sym| *sym),
299 cuestXCDerivativeUKSComputeWorkspaceQuery: get_symbol(
300 &libs,
301 b"cuestXCDerivativeUKSComputeWorkspaceQuery\0",
302 )
303 .map(|sym| *sym),
304 cuestXCDerivativeCompute: get_symbol(&libs, b"cuestXCDerivativeCompute\0")
305 .map(|sym| *sym),
306 cuestXCDerivativeComputeWorkspaceQuery: get_symbol(
307 &libs,
308 b"cuestXCDerivativeComputeWorkspaceQuery\0",
309 )
310 .map(|sym| *sym),
311 cuestXCGridDerivativeCompute: get_symbol(&libs, b"cuestXCGridDerivativeCompute\0")
312 .map(|sym| *sym),
313 cuestXCGridDerivativeComputeWorkspaceQuery: get_symbol(
314 &libs,
315 b"cuestXCGridDerivativeComputeWorkspaceQuery\0",
316 )
317 .map(|sym| *sym),
318 cuestXCNonsymmetricDerivativeCompute: get_symbol(
319 &libs,
320 b"cuestXCNonsymmetricDerivativeCompute\0",
321 )
322 .map(|sym| *sym),
323 cuestXCNonsymmetricDerivativeComputeWorkspaceQuery: get_symbol(
324 &libs,
325 b"cuestXCNonsymmetricDerivativeComputeWorkspaceQuery\0",
326 )
327 .map(|sym| *sym),
328 cuestNonlocalXCPotentialRKSCompute: get_symbol(
329 &libs,
330 b"cuestNonlocalXCPotentialRKSCompute\0",
331 )
332 .map(|sym| *sym),
333 cuestNonlocalXCPotentialRKSComputeWorkspaceQuery: get_symbol(
334 &libs,
335 b"cuestNonlocalXCPotentialRKSComputeWorkspaceQuery\0",
336 )
337 .map(|sym| *sym),
338 cuestNonlocalXCPotentialUKSCompute: get_symbol(
339 &libs,
340 b"cuestNonlocalXCPotentialUKSCompute\0",
341 )
342 .map(|sym| *sym),
343 cuestNonlocalXCPotentialUKSComputeWorkspaceQuery: get_symbol(
344 &libs,
345 b"cuestNonlocalXCPotentialUKSComputeWorkspaceQuery\0",
346 )
347 .map(|sym| *sym),
348 cuestNonlocalXCDerivativeRKSCompute: get_symbol(
349 &libs,
350 b"cuestNonlocalXCDerivativeRKSCompute\0",
351 )
352 .map(|sym| *sym),
353 cuestNonlocalXCDerivativeRKSComputeWorkspaceQuery: get_symbol(
354 &libs,
355 b"cuestNonlocalXCDerivativeRKSComputeWorkspaceQuery\0",
356 )
357 .map(|sym| *sym),
358 cuestNonlocalXCDerivativeUKSCompute: get_symbol(
359 &libs,
360 b"cuestNonlocalXCDerivativeUKSCompute\0",
361 )
362 .map(|sym| *sym),
363 cuestNonlocalXCDerivativeUKSComputeWorkspaceQuery: get_symbol(
364 &libs,
365 b"cuestNonlocalXCDerivativeUKSComputeWorkspaceQuery\0",
366 )
367 .map(|sym| *sym),
368 cuestPCMIntPlanCreate: get_symbol(&libs, b"cuestPCMIntPlanCreate\0").map(|sym| *sym),
369 cuestPCMIntPlanCreateWorkspaceQuery: get_symbol(
370 &libs,
371 b"cuestPCMIntPlanCreateWorkspaceQuery\0",
372 )
373 .map(|sym| *sym),
374 cuestPCMIntPlanDestroy: get_symbol(&libs, b"cuestPCMIntPlanDestroy\0").map(|sym| *sym),
375 cuestPCMPotentialCompute: get_symbol(&libs, b"cuestPCMPotentialCompute\0")
376 .map(|sym| *sym),
377 cuestPCMPotentialComputeWorkspaceQuery: get_symbol(
378 &libs,
379 b"cuestPCMPotentialComputeWorkspaceQuery\0",
380 )
381 .map(|sym| *sym),
382 cuestPCMDerivativeCompute: get_symbol(&libs, b"cuestPCMDerivativeCompute\0")
383 .map(|sym| *sym),
384 cuestPCMDerivativeComputeWorkspaceQuery: get_symbol(
385 &libs,
386 b"cuestPCMDerivativeComputeWorkspaceQuery\0",
387 )
388 .map(|sym| *sym),
389 cuestPCMRadiiDerivativeCompute: get_symbol(&libs, b"cuestPCMRadiiDerivativeCompute\0")
390 .map(|sym| *sym),
391 cuestPCMRadiiDerivativeComputeWorkspaceQuery: get_symbol(
392 &libs,
393 b"cuestPCMRadiiDerivativeComputeWorkspaceQuery\0",
394 )
395 .map(|sym| *sym),
396 cuestPCMIntegrationGridCompute: get_symbol(&libs, b"cuestPCMIntegrationGridCompute\0")
397 .map(|sym| *sym),
398 cuestPCMIntegrationGridComputeWorkspaceQuery: get_symbol(
399 &libs,
400 b"cuestPCMIntegrationGridComputeWorkspaceQuery\0",
401 )
402 .map(|sym| *sym),
403 cuestPCMIntegrationWeightCompute: get_symbol(
404 &libs,
405 b"cuestPCMIntegrationWeightCompute\0",
406 )
407 .map(|sym| *sym),
408 cuestPCMIntegrationWeightComputeWorkspaceQuery: get_symbol(
409 &libs,
410 b"cuestPCMIntegrationWeightComputeWorkspaceQuery\0",
411 )
412 .map(|sym| *sym),
413 cuestQuery: get_symbol(&libs, b"cuestQuery\0").map(|sym| *sym),
414 cuestResultsCreate: get_symbol(&libs, b"cuestResultsCreate\0").map(|sym| *sym),
415 cuestResultsDestroy: get_symbol(&libs, b"cuestResultsDestroy\0").map(|sym| *sym),
416 cuestResultsQuery: get_symbol(&libs, b"cuestResultsQuery\0").map(|sym| *sym),
417 cuestParametersCreate: get_symbol(&libs, b"cuestParametersCreate\0").map(|sym| *sym),
418 cuestParametersDestroy: get_symbol(&libs, b"cuestParametersDestroy\0").map(|sym| *sym),
419 cuestParametersQuery: get_symbol(&libs, b"cuestParametersQuery\0").map(|sym| *sym),
420 cuestParametersConfigure: get_symbol(&libs, b"cuestParametersConfigure\0")
421 .map(|sym| *sym),
422 };
423 result.__libraries = libs;
424 result.__libraries_path = libs_path;
425 result
426 }
427}