1use super::*;
6use libloading::{Library, Symbol};
7
8unsafe fn get_symbol<'f, F>(libs: &'f [Library], name: &[u8]) -> Option<Symbol<'f, F>> {
9 libs.iter().find_map(|lib| lib.get::<F>(name).ok())
10}
11
12impl DyLoadLib {
13 pub unsafe fn new(libs: Vec<libloading::Library>, libs_path: Vec<String>) -> DyLoadLib {
14 let mut result = DyLoadLib {
15 __libraries: vec![], __libraries_path: vec![], xerbla_: get_symbol(&libs, b"xerbla_\0").map(|sym| *sym),
18 srot_: get_symbol(&libs, b"srot_\0").map(|sym| *sym),
19 srotg_: get_symbol(&libs, b"srotg_\0").map(|sym| *sym),
20 srotm_: get_symbol(&libs, b"srotm_\0").map(|sym| *sym),
21 srotmg_: get_symbol(&libs, b"srotmg_\0").map(|sym| *sym),
22 sswap_: get_symbol(&libs, b"sswap_\0").map(|sym| *sym),
23 scopy_: get_symbol(&libs, b"scopy_\0").map(|sym| *sym),
24 saxpy_: get_symbol(&libs, b"saxpy_\0").map(|sym| *sym),
25 sdotsub_: get_symbol(&libs, b"sdotsub_\0").map(|sym| *sym),
26 sdsdotsub_: get_symbol(&libs, b"sdsdotsub_\0").map(|sym| *sym),
27 sscal_: get_symbol(&libs, b"sscal_\0").map(|sym| *sym),
28 snrm2sub_: get_symbol(&libs, b"snrm2sub_\0").map(|sym| *sym),
29 sasumsub_: get_symbol(&libs, b"sasumsub_\0").map(|sym| *sym),
30 isamaxsub_: get_symbol(&libs, b"isamaxsub_\0").map(|sym| *sym),
31 drot_: get_symbol(&libs, b"drot_\0").map(|sym| *sym),
32 drotg_: get_symbol(&libs, b"drotg_\0").map(|sym| *sym),
33 drotm_: get_symbol(&libs, b"drotm_\0").map(|sym| *sym),
34 drotmg_: get_symbol(&libs, b"drotmg_\0").map(|sym| *sym),
35 dswap_: get_symbol(&libs, b"dswap_\0").map(|sym| *sym),
36 dcopy_: get_symbol(&libs, b"dcopy_\0").map(|sym| *sym),
37 daxpy_: get_symbol(&libs, b"daxpy_\0").map(|sym| *sym),
38 dsdotsub_: get_symbol(&libs, b"dsdotsub_\0").map(|sym| *sym),
39 ddotsub_: get_symbol(&libs, b"ddotsub_\0").map(|sym| *sym),
40 dscal_: get_symbol(&libs, b"dscal_\0").map(|sym| *sym),
41 dnrm2sub_: get_symbol(&libs, b"dnrm2sub_\0").map(|sym| *sym),
42 dasumsub_: get_symbol(&libs, b"dasumsub_\0").map(|sym| *sym),
43 idamaxsub_: get_symbol(&libs, b"idamaxsub_\0").map(|sym| *sym),
44 crotg_: get_symbol(&libs, b"crotg_\0").map(|sym| *sym),
45 csrot_: get_symbol(&libs, b"csrot_\0").map(|sym| *sym),
46 cswap_: get_symbol(&libs, b"cswap_\0").map(|sym| *sym),
47 ccopy_: get_symbol(&libs, b"ccopy_\0").map(|sym| *sym),
48 caxpy_: get_symbol(&libs, b"caxpy_\0").map(|sym| *sym),
49 cdotcsub_: get_symbol(&libs, b"cdotcsub_\0").map(|sym| *sym),
50 cdotusub_: get_symbol(&libs, b"cdotusub_\0").map(|sym| *sym),
51 cscal_: get_symbol(&libs, b"cscal_\0").map(|sym| *sym),
52 icamaxsub_: get_symbol(&libs, b"icamaxsub_\0").map(|sym| *sym),
53 csscal_: get_symbol(&libs, b"csscal_\0").map(|sym| *sym),
54 scnrm2sub_: get_symbol(&libs, b"scnrm2sub_\0").map(|sym| *sym),
55 scasumsub_: get_symbol(&libs, b"scasumsub_\0").map(|sym| *sym),
56 scabs1sub_: get_symbol(&libs, b"scabs1sub_\0").map(|sym| *sym),
57 zrotg_: get_symbol(&libs, b"zrotg_\0").map(|sym| *sym),
58 zdrot_: get_symbol(&libs, b"zdrot_\0").map(|sym| *sym),
59 zswap_: get_symbol(&libs, b"zswap_\0").map(|sym| *sym),
60 zcopy_: get_symbol(&libs, b"zcopy_\0").map(|sym| *sym),
61 zaxpy_: get_symbol(&libs, b"zaxpy_\0").map(|sym| *sym),
62 zdotcsub_: get_symbol(&libs, b"zdotcsub_\0").map(|sym| *sym),
63 zdotusub_: get_symbol(&libs, b"zdotusub_\0").map(|sym| *sym),
64 zdscal_: get_symbol(&libs, b"zdscal_\0").map(|sym| *sym),
65 zscal_: get_symbol(&libs, b"zscal_\0").map(|sym| *sym),
66 dznrm2sub_: get_symbol(&libs, b"dznrm2sub_\0").map(|sym| *sym),
67 dzasumsub_: get_symbol(&libs, b"dzasumsub_\0").map(|sym| *sym),
68 izamaxsub_: get_symbol(&libs, b"izamaxsub_\0").map(|sym| *sym),
69 dcabs1sub_: get_symbol(&libs, b"dcabs1sub_\0").map(|sym| *sym),
70 sgemv_: get_symbol(&libs, b"sgemv_\0").map(|sym| *sym),
71 sgbmv_: get_symbol(&libs, b"sgbmv_\0").map(|sym| *sym),
72 ssymv_: get_symbol(&libs, b"ssymv_\0").map(|sym| *sym),
73 ssbmv_: get_symbol(&libs, b"ssbmv_\0").map(|sym| *sym),
74 sspmv_: get_symbol(&libs, b"sspmv_\0").map(|sym| *sym),
75 strmv_: get_symbol(&libs, b"strmv_\0").map(|sym| *sym),
76 stbmv_: get_symbol(&libs, b"stbmv_\0").map(|sym| *sym),
77 strsv_: get_symbol(&libs, b"strsv_\0").map(|sym| *sym),
78 stbsv_: get_symbol(&libs, b"stbsv_\0").map(|sym| *sym),
79 stpmv_: get_symbol(&libs, b"stpmv_\0").map(|sym| *sym),
80 stpsv_: get_symbol(&libs, b"stpsv_\0").map(|sym| *sym),
81 sger_: get_symbol(&libs, b"sger_\0").map(|sym| *sym),
82 ssyr_: get_symbol(&libs, b"ssyr_\0").map(|sym| *sym),
83 sspr_: get_symbol(&libs, b"sspr_\0").map(|sym| *sym),
84 sspr2_: get_symbol(&libs, b"sspr2_\0").map(|sym| *sym),
85 ssyr2_: get_symbol(&libs, b"ssyr2_\0").map(|sym| *sym),
86 dgemv_: get_symbol(&libs, b"dgemv_\0").map(|sym| *sym),
87 dgbmv_: get_symbol(&libs, b"dgbmv_\0").map(|sym| *sym),
88 dsymv_: get_symbol(&libs, b"dsymv_\0").map(|sym| *sym),
89 dsbmv_: get_symbol(&libs, b"dsbmv_\0").map(|sym| *sym),
90 dspmv_: get_symbol(&libs, b"dspmv_\0").map(|sym| *sym),
91 dtrmv_: get_symbol(&libs, b"dtrmv_\0").map(|sym| *sym),
92 dtbmv_: get_symbol(&libs, b"dtbmv_\0").map(|sym| *sym),
93 dtrsv_: get_symbol(&libs, b"dtrsv_\0").map(|sym| *sym),
94 dtbsv_: get_symbol(&libs, b"dtbsv_\0").map(|sym| *sym),
95 dtpmv_: get_symbol(&libs, b"dtpmv_\0").map(|sym| *sym),
96 dtpsv_: get_symbol(&libs, b"dtpsv_\0").map(|sym| *sym),
97 dger_: get_symbol(&libs, b"dger_\0").map(|sym| *sym),
98 dsyr_: get_symbol(&libs, b"dsyr_\0").map(|sym| *sym),
99 dspr_: get_symbol(&libs, b"dspr_\0").map(|sym| *sym),
100 dspr2_: get_symbol(&libs, b"dspr2_\0").map(|sym| *sym),
101 dsyr2_: get_symbol(&libs, b"dsyr2_\0").map(|sym| *sym),
102 cgemv_: get_symbol(&libs, b"cgemv_\0").map(|sym| *sym),
103 cgbmv_: get_symbol(&libs, b"cgbmv_\0").map(|sym| *sym),
104 chemv_: get_symbol(&libs, b"chemv_\0").map(|sym| *sym),
105 chbmv_: get_symbol(&libs, b"chbmv_\0").map(|sym| *sym),
106 chpmv_: get_symbol(&libs, b"chpmv_\0").map(|sym| *sym),
107 ctrmv_: get_symbol(&libs, b"ctrmv_\0").map(|sym| *sym),
108 ctbmv_: get_symbol(&libs, b"ctbmv_\0").map(|sym| *sym),
109 ctpmv_: get_symbol(&libs, b"ctpmv_\0").map(|sym| *sym),
110 ctrsv_: get_symbol(&libs, b"ctrsv_\0").map(|sym| *sym),
111 ctbsv_: get_symbol(&libs, b"ctbsv_\0").map(|sym| *sym),
112 ctpsv_: get_symbol(&libs, b"ctpsv_\0").map(|sym| *sym),
113 cgerc_: get_symbol(&libs, b"cgerc_\0").map(|sym| *sym),
114 cgeru_: get_symbol(&libs, b"cgeru_\0").map(|sym| *sym),
115 cher_: get_symbol(&libs, b"cher_\0").map(|sym| *sym),
116 cher2_: get_symbol(&libs, b"cher2_\0").map(|sym| *sym),
117 chpr_: get_symbol(&libs, b"chpr_\0").map(|sym| *sym),
118 chpr2_: get_symbol(&libs, b"chpr2_\0").map(|sym| *sym),
119 zgemv_: get_symbol(&libs, b"zgemv_\0").map(|sym| *sym),
120 zgbmv_: get_symbol(&libs, b"zgbmv_\0").map(|sym| *sym),
121 zhemv_: get_symbol(&libs, b"zhemv_\0").map(|sym| *sym),
122 zhbmv_: get_symbol(&libs, b"zhbmv_\0").map(|sym| *sym),
123 zhpmv_: get_symbol(&libs, b"zhpmv_\0").map(|sym| *sym),
124 ztrmv_: get_symbol(&libs, b"ztrmv_\0").map(|sym| *sym),
125 ztbmv_: get_symbol(&libs, b"ztbmv_\0").map(|sym| *sym),
126 ztpmv_: get_symbol(&libs, b"ztpmv_\0").map(|sym| *sym),
127 ztrsv_: get_symbol(&libs, b"ztrsv_\0").map(|sym| *sym),
128 ztbsv_: get_symbol(&libs, b"ztbsv_\0").map(|sym| *sym),
129 ztpsv_: get_symbol(&libs, b"ztpsv_\0").map(|sym| *sym),
130 zgerc_: get_symbol(&libs, b"zgerc_\0").map(|sym| *sym),
131 zgeru_: get_symbol(&libs, b"zgeru_\0").map(|sym| *sym),
132 zher_: get_symbol(&libs, b"zher_\0").map(|sym| *sym),
133 zher2_: get_symbol(&libs, b"zher2_\0").map(|sym| *sym),
134 zhpr_: get_symbol(&libs, b"zhpr_\0").map(|sym| *sym),
135 zhpr2_: get_symbol(&libs, b"zhpr2_\0").map(|sym| *sym),
136 sgemm_: get_symbol(&libs, b"sgemm_\0").map(|sym| *sym),
137 sgemmtr_: get_symbol(&libs, b"sgemmtr_\0").map(|sym| *sym),
138 ssymm_: get_symbol(&libs, b"ssymm_\0").map(|sym| *sym),
139 ssyrk_: get_symbol(&libs, b"ssyrk_\0").map(|sym| *sym),
140 ssyr2k_: get_symbol(&libs, b"ssyr2k_\0").map(|sym| *sym),
141 strmm_: get_symbol(&libs, b"strmm_\0").map(|sym| *sym),
142 strsm_: get_symbol(&libs, b"strsm_\0").map(|sym| *sym),
143 dgemm_: get_symbol(&libs, b"dgemm_\0").map(|sym| *sym),
144 dgemmtr_: get_symbol(&libs, b"dgemmtr_\0").map(|sym| *sym),
145 dsymm_: get_symbol(&libs, b"dsymm_\0").map(|sym| *sym),
146 dsyrk_: get_symbol(&libs, b"dsyrk_\0").map(|sym| *sym),
147 dsyr2k_: get_symbol(&libs, b"dsyr2k_\0").map(|sym| *sym),
148 dtrmm_: get_symbol(&libs, b"dtrmm_\0").map(|sym| *sym),
149 dtrsm_: get_symbol(&libs, b"dtrsm_\0").map(|sym| *sym),
150 cgemm_: get_symbol(&libs, b"cgemm_\0").map(|sym| *sym),
151 cgemmtr_: get_symbol(&libs, b"cgemmtr_\0").map(|sym| *sym),
152 csymm_: get_symbol(&libs, b"csymm_\0").map(|sym| *sym),
153 chemm_: get_symbol(&libs, b"chemm_\0").map(|sym| *sym),
154 csyrk_: get_symbol(&libs, b"csyrk_\0").map(|sym| *sym),
155 cherk_: get_symbol(&libs, b"cherk_\0").map(|sym| *sym),
156 csyr2k_: get_symbol(&libs, b"csyr2k_\0").map(|sym| *sym),
157 cher2k_: get_symbol(&libs, b"cher2k_\0").map(|sym| *sym),
158 ctrmm_: get_symbol(&libs, b"ctrmm_\0").map(|sym| *sym),
159 ctrsm_: get_symbol(&libs, b"ctrsm_\0").map(|sym| *sym),
160 zgemm_: get_symbol(&libs, b"zgemm_\0").map(|sym| *sym),
161 zgemmtr_: get_symbol(&libs, b"zgemmtr_\0").map(|sym| *sym),
162 zsymm_: get_symbol(&libs, b"zsymm_\0").map(|sym| *sym),
163 zhemm_: get_symbol(&libs, b"zhemm_\0").map(|sym| *sym),
164 zsyrk_: get_symbol(&libs, b"zsyrk_\0").map(|sym| *sym),
165 zherk_: get_symbol(&libs, b"zherk_\0").map(|sym| *sym),
166 zsyr2k_: get_symbol(&libs, b"zsyr2k_\0").map(|sym| *sym),
167 zher2k_: get_symbol(&libs, b"zher2k_\0").map(|sym| *sym),
168 ztrmm_: get_symbol(&libs, b"ztrmm_\0").map(|sym| *sym),
169 ztrsm_: get_symbol(&libs, b"ztrsm_\0").map(|sym| *sym),
170 };
171 result.__libraries = libs;
172 result.__libraries_path = libs_path;
173 result
174 }
175}