crseo_sys/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4#![allow(improper_ctypes)]
5
6#[cfg(bindings)]
7include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
8#[cfg(docs_rs)]
9include!("bindings.rs");
10
11use std::ptr;
12
13unsafe impl Send for vector {}
14impl Default for vector {
15    fn default() -> Self {
16        Self {
17            x: 0.,
18            y: 0.,
19            z: 0.,
20        }
21    }
22}
23impl From<[f64; 3]> for vector {
24    fn from(v: [f64; 3]) -> Self {
25        Self {
26            x: v[0],
27            y: v[1],
28            z: v[2],
29        }
30    }
31}
32unsafe impl Send for mask {}
33impl Default for mask {
34    fn default() -> Self {
35        Self {
36            m: ptr::null_mut(),
37            f: ptr::null_mut(),
38            idx: ptr::null_mut(),
39            size_px: [0; 2usize],
40            nel: 0,
41            nnz: 0f32,
42            size_m: [0f32; 2usize],
43            area: 0f32,
44            delta: [0f32; 2usize],
45            handle: ptr::null_mut(),
46            d__piston_mask: ptr::null_mut(),
47        }
48    }
49}
50unsafe impl Send for complex_amplitude {}
51impl Default for complex_amplitude {
52    fn default() -> Self {
53        Self {
54            N_PX: 0,
55            N: 0,
56            amplitude: ptr::null_mut(),
57            phase: ptr::null_mut(),
58            M: ptr::null_mut(),
59            handle: ptr::null_mut(),
60            buffer: ptr::null_mut(),
61        }
62    }
63}
64unsafe impl Send for bundle {}
65impl Default for bundle {
66    fn default() -> Self {
67        Self {
68            N_RAY: 0,
69            d__ray: ptr::null_mut(),
70            N_BUNDLE: 0,
71            N_RAY_TOTAL: 0,
72            d__origin: ptr::null_mut(),
73            rot_angle: 0.,
74            d__chief_ray: ptr::null_mut(),
75            d__chief_origin: ptr::null_mut(),
76            V: Default::default(),
77            geom: [0; 8usize],
78            N_RADIUS: 0,
79            N_THETA: 0,
80            N_L: 0,
81            L: 0.,
82            d__sphere_distance: ptr::null_mut(),
83            d__sphere_radius: ptr::null_mut(),
84            d__sphere_origin: ptr::null_mut(),
85            d__piston_mask: ptr::null_mut(),
86            refractive_index: 0.,
87            d__Vx: ptr::null_mut(),
88            d__Vy: ptr::null_mut(),
89        }
90    }
91}
92unsafe impl Send for source {}
93impl Default for source {
94    fn default() -> Self {
95        Self {
96            N_SRC: 0,
97            zenith: 0.,
98            azimuth: 0.,
99            height: 0.,
100            theta_x: 0.,
101            theta_y: 0.,
102            _zenith_64_: 0.,
103            _azimuth_64_: 0.,
104            _height_64_: 0.,
105            _theta_x_64_: 0.,
106            _theta_y_64_: 0.,
107            photometric_band: ptr::null(),
108            magnitude: 0.,
109            N_PHOTON: 0.,
110            fwhm: 0.,
111            wavefront: Default::default(),
112            dev_ptr: ptr::null_mut(),
113            tag: [0; 8usize],
114            rays_exist: 0,
115            rays: Default::default(),
116        }
117    }
118}
119unsafe impl Send for coordinate_system {}
120impl Default for coordinate_system {
121    fn default() -> Self {
122        Self {
123            origin: ptr::null_mut(),
124            euler_angles: ptr::null_mut(),
125            N: 0,
126            R: ptr::null_mut(),
127            d__R: ptr::null_mut(),
128            float_R: ptr::null_mut(),
129            d__origin: ptr::null_mut(),
130            tag: [0; 32usize],
131        }
132    }
133}
134unsafe impl Send for modes {}
135impl Default for modes {
136    fn default() -> Self {
137        Self {
138            d__x_BM: ptr::null_mut(),
139            d__y_BM: ptr::null_mut(),
140            d__BM: ptr::null_mut(),
141            d__BMS: ptr::null_mut(),
142            BM_radius: 0.,
143            BM_N_SAMPLE: 0,
144            d__BM_buffer: ptr::null_mut(),
145            n_mode: 0,
146            b: ptr::null_mut(),
147            d__b: ptr::null_mut(),
148            N: 0,
149            filename: [0; 256usize],
150            N_SET: 0,
151            N_MODE: 0,
152            d__s2b: ptr::null_mut(),
153        }
154    }
155}
156unsafe impl Send for gmt_m1 {}
157impl Default for gmt_m1 {
158    fn default() -> Self {
159        Self {
160            M_ID: 0,
161            D_assembly: 0.,
162            D_clear: 0.,
163            D_full: 0.,
164            ri: 0.,
165            beta: 0.,
166            L: 0.,
167            area0: 0.,
168            area_fraction: 0.,
169            area0_px: 0.,
170            area: 0.,
171            N: 0,
172            depth: 0.,
173            aperture_CS: Default::default(),
174            conic_CS: Default::default(),
175            conic_origin: [Default::default(); 7usize],
176            d__conic_origin: ptr::null_mut(),
177            conic_c: 0.,
178            conic_k: 0.,
179            d__conic_c: ptr::null_mut(),
180            d__conic_k: ptr::null_mut(),
181            rigid_body_CS: Default::default(),
182            motion_CS: Default::default(),
183            height: 0.,
184            V: ptr::null_mut(),
185            idx_offset: 0,
186            ZS: ptr::null_mut(),
187            d__piston_mask: ptr::null_mut(),
188            TT_CS: Default::default(),
189            d__C: ptr::null_mut(),
190            d__D: ptr::null_mut(),
191            handle: ptr::null_mut(),
192            d__valid_segments: ptr::null_mut(),
193            BS: Default::default(),
194            d__segment_reflectivity: ptr::null_mut(),
195        }
196    }
197}
198unsafe impl Send for gmt_m2 {}
199impl Default for gmt_m2 {
200    fn default() -> Self {
201        Self {
202            M_ID: 0,
203            D_assembly: 0.,
204            D_clear: 0.,
205            D_full: 0.,
206            ri: 0.,
207            beta: 0.,
208            L: 0.,
209            area0: 0.,
210            area_fraction: 0.,
211            area0_px: 0.,
212            area: 0.,
213            N: 0,
214            depth: 0.,
215            aperture_CS: Default::default(),
216            conic_CS: Default::default(),
217            conic_origin: [Default::default(); 7usize],
218            d__conic_origin: ptr::null_mut(),
219            conic_c: 0.,
220            conic_k: 0.,
221            d__conic_c: ptr::null_mut(),
222            d__conic_k: ptr::null_mut(),
223            rigid_body_CS: Default::default(),
224            motion_CS: Default::default(),
225            height: 0.,
226            V: ptr::null_mut(),
227            idx_offset: 0,
228            ZS: ptr::null_mut(),
229            d__piston_mask: ptr::null_mut(),
230            TT_CS: Default::default(),
231            d__C: ptr::null_mut(),
232            d__D: ptr::null_mut(),
233            handle: ptr::null_mut(),
234            d__valid_segments: ptr::null_mut(),
235            BS: Default::default(),
236            d__segment_reflectivity: ptr::null_mut(),
237        }
238    }
239}
240unsafe impl Send for geometricShackHartmann {}
241impl Default for geometricShackHartmann {
242    fn default() -> Self {
243        Self {
244            N_WFS: 0,
245            N_SIDE_LENSLET: 0,
246            N_LENSLET: 0,
247            N_ACTUATOR: 0,
248            N_SLOPE: 0,
249            d__c0: ptr::null_mut(),
250            d__cx0: ptr::null_mut(),
251            d__cy0: ptr::null_mut(),
252            valid_lenslet: Default::default(),
253            valid_actuator: Default::default(),
254            camera: Default::default(),
255            data_proc: Default::default(),
256            DFT_osf: 0,
257            lenslet_pitch: 0f32,
258            pixel_scale: 0f32,
259            intensity_threshold: 0f32,
260            slopes_gain: 0f32,
261            _d__c_: ptr::null_mut(),
262            _d__cx_: ptr::null_mut(),
263            _d__cy_: ptr::null_mut(),
264            N_FRAME: 0,
265            handle: ptr::null_mut(),
266        }
267    }
268}
269unsafe impl Send for shackHartmann {}
270impl Default for shackHartmann {
271    fn default() -> Self {
272        Self {
273            N_WFS: 0,
274            N_SIDE_LENSLET: 0,
275            N_LENSLET: 0,
276            N_ACTUATOR: 0,
277            N_SLOPE: 0,
278            d__c0: ptr::null_mut(),
279            d__cx0: ptr::null_mut(),
280            d__cy0: ptr::null_mut(),
281            valid_lenslet: Default::default(),
282            valid_actuator: Default::default(),
283            camera: Default::default(),
284            data_proc: Default::default(),
285            DFT_osf: 0,
286            lenslet_pitch: 0f32,
287            pixel_scale: 0f32,
288            intensity_threshold: 0f32,
289            slopes_gain: 0f32,
290        }
291    }
292}
293unsafe impl Send for profile {}
294impl Default for profile {
295    fn default() -> Self {
296        Self {
297            L0: 0f32,
298            l0: 0f32,
299            L: 0f32,
300            f: 0f32,
301            delta: 0f32,
302            N_k: 0f32,
303            N_a: 0f32,
304            kmin: 0f32,
305            altitude: ptr::null_mut(),
306            xi0: ptr::null_mut(),
307            wind_speed: ptr::null_mut(),
308            wind_direction: ptr::null_mut(),
309        }
310    }
311}
312unsafe impl Send for atmosphere {}
313impl Default for atmosphere {
314    fn default() -> Self {
315        Self {
316            photometric_band: ptr::null_mut(),
317            wavelength: 0f32,
318            r0: 0f32,
319            wavenumber: 0f32,
320            N_LAYER: 0,
321            field_size: 0f32,
322            layers_OSF: 0,
323            layers_duration: 0f32,
324            layers_tau0: 0f32,
325            W: 0f32,
326            N_W: 0,
327            phase_screen_LAYER: ptr::null_mut(),
328            N_DURATION: 0,
329            LOCAL_RAND_SEED: 0,
330            ID: 0,
331            EPH: 0f32,
332            d__phase_screen_LAYER: ptr::null_mut(),
333            N_PHASE_LAYER: 0,
334            mmap_size: 0,
335            zeta1: ptr::null_mut(),
336            eta1: ptr::null_mut(),
337            zeta2: ptr::null_mut(),
338            eta2: ptr::null_mut(),
339            devStates: ptr::null_mut(),
340            turbulence: Default::default(),
341            d__turbulence: ptr::null_mut(),
342            layers: ptr::null_mut(),
343            d__layers: ptr::null_mut(),
344        }
345    }
346}
347unsafe impl Send for imaging {}
348impl Default for imaging {
349    fn default() -> Self {
350        Self {
351            N_PX_PUPIL: 0,
352            N_DFT: 0,
353            N_SIDE_LENSLET: 0,
354            N_LENSLET: 0,
355            N_SOURCE: 0,
356            N_PX_IMAGE: 0,
357            N_PX_CAMERA: 0,
358            N_FRAME: 0,
359            BIN_IMAGE: 0,
360            LOCAL_RAND_SEED: 0,
361            plan: 0,
362            N_PHOTON_PER_SECOND_PER_FRAME: 0f32,
363            N_PHOTON_PER_FRAME: 0f32,
364            d__wave_PUPIL: ptr::null_mut(),
365            d__frame: ptr::null_mut(),
366            zenith: 0f32,
367            azimuth: 0f32,
368            theta_x: 0f32,
369            theta_y: 0f32,
370            d__zenith: ptr::null_mut(),
371            d__azimuth: ptr::null_mut(),
372            d__theta_x: ptr::null_mut(),
373            d__theta_y: ptr::null_mut(),
374            pixel_scale: 0f32,
375            photoelectron_gain: 0f32,
376            absolute_pointing: 0,
377            devStates: ptr::null_mut(),
378        }
379    }
380}
381unsafe impl Send for stopwatch {}
382impl Default for stopwatch {
383    fn default() -> Self {
384        Self {
385            elapsedTime: 0f32,
386            start: ptr::null_mut(),
387            stop: ptr::null_mut(),
388        }
389    }
390}
391unsafe impl Send for aaStats {}
392impl Default for aaStats {
393    fn default() -> Self {
394        Self {
395            N: 0,
396            N2: 0,
397            NU: 0,
398            NU2: 0,
399            NF: 0,
400            NF2: 0,
401            psd_size: 0,
402            cov_size: 0,
403            ind_size: 0,
404            d__psd: ptr::null_mut(),
405            d__cov: ptr::null_mut(),
406            d__alpha: ptr::null_mut(),
407            d__beta: ptr::null_mut(),
408            n_full: 0f32,
409            n_comp: 0f32,
410            b_full: 0f32,
411            b_comp: 0f32,
412            cov_eval_et: 0f32,
413            sampling: 0f32,
414            plan: 0,
415            N_SRC2: 0,
416        }
417    }
418}
419unsafe impl Send for paStats {}
420impl Default for paStats {
421    fn default() -> Self {
422        Self {
423            osf: 0,
424            M: 0,
425            shift: 0,
426            M_LAYER: ptr::null_mut(),
427            N: 0,
428            N2: 0,
429            NU: 0,
430            NU2: 0,
431            NF: 0,
432            NF2: 0,
433            psd_size: 0,
434            cov_size: 0,
435            ind_size: 0,
436            d__psd: ptr::null_mut(),
437            d__cov: ptr::null_mut(),
438            d__alpha: ptr::null_mut(),
439            d__beta: ptr::null_mut(),
440            n_full: 0f32,
441            n_comp: 0f32,
442            b_full: 0f32,
443            b_comp: 0f32,
444            cov_eval_et: 0f32,
445            sampling: 0f32,
446            plan: 0,
447            N_SRC2: 0,
448        }
449    }
450}
451unsafe impl Send for BTBT {}
452impl Default for BTBT {
453    fn default() -> Self {
454        Self {
455            M: 0,
456            N: 0,
457            MT: 0,
458            MT2: 0,
459            NT: 0,
460            NT2: 0,
461            NU: 0,
462            NU2: 0,
463            NDFT: 0,
464            HALF_NDFT: 0,
465            NU_TOTAL: 0,
466            NF: 0,
467            NF2: 0,
468            ind_size: 0,
469            cov_size: 0,
470            mask: ptr::null_mut(),
471            d__cov: ptr::null_mut(),
472            d__b: ptr::null_mut(),
473            d__c: ptr::null_mut(),
474            d__alpha: ptr::null_mut(),
475            d__beta: ptr::null_mut(),
476            n_full: 0f32,
477            n_comp: 0f32,
478            b_full: 0f32,
479            b_comp: 0f32,
480            cov_eval_et: 0f32,
481            d__mu: ptr::null_mut(),
482            d__xi: ptr::null_mut(),
483            raster_plan: 0,
484            MVM_input_plan: 0,
485            MVM_output_plan: 0,
486        }
487    }
488}
489unsafe impl Send for GBTBT {}
490impl Default for GBTBT {
491    fn default() -> Self {
492        Self {
493            M: 0,
494            N: 0,
495            NT: 0,
496            NT2: 0,
497            NDFT: 0,
498            HALF_NDFT: 0,
499            NU_TOTAL: 0,
500            NF: 0,
501            NF2: 0,
502            ind_size: 0,
503            cov_size: 0,
504            MT2_TOTAL: 0,
505            MT_size: 0,
506            MAX_MT: 0,
507            MT: ptr::null_mut(),
508            MT2: ptr::null_mut(),
509            NU: ptr::null_mut(),
510            NU2: ptr::null_mut(),
511            CS_MT2: ptr::null_mut(),
512            d__MT: ptr::null_mut(),
513            d__MT2: ptr::null_mut(),
514            d__NU: ptr::null_mut(),
515            d__NU2: ptr::null_mut(),
516            d__CS_MT2: ptr::null_mut(),
517            mask: ptr::null_mut(),
518            d__cov: ptr::null_mut(),
519            d__b: ptr::null_mut(),
520            d__c: ptr::null_mut(),
521            d__alpha: ptr::null_mut(),
522            d__beta: ptr::null_mut(),
523            n_full: 0f32,
524            n_comp: 0f32,
525            b_full: 0f32,
526            b_comp: 0f32,
527            cov_eval_et: 0f32,
528            d__mu: ptr::null_mut(),
529            d__xi: ptr::null_mut(),
530            raster_plan: 0,
531            MVM_input_plan: 0,
532            MVM_output_plan: 0,
533        }
534    }
535}
536unsafe impl Send for iterativeSolvers {}
537impl Default for iterativeSolvers {
538    fn default() -> Self {
539        Self {
540            d__vectors: ptr::null_mut(),
541            q: ptr::null_mut(),
542            x: ptr::null_mut(),
543            r: ptr::null_mut(),
544            p: ptr::null_mut(),
545            z: ptr::null_mut(),
546            nu_i: ptr::null_mut(),
547            nu_im1: ptr::null_mut(),
548            nu_ip1: ptr::null_mut(),
549            w_i: ptr::null_mut(),
550            w_im1: ptr::null_mut(),
551            w_im2: ptr::null_mut(),
552            rnorm: 0f32,
553            rel_rnorm: 0f32,
554            mean_time_per_iteration: 0f32,
555            RTOL: 0f32,
556            ATOL: 0f32,
557            N: 0,
558            N_ITERATION: 0,
559            cvgce_iteration: 0,
560            tid: Default::default(),
561            handle: ptr::null_mut(),
562            status: 0,
563            VERBOSE: 0,
564        }
565    }
566}
567unsafe impl Send for LMMSE {}
568impl Default for LMMSE {
569    fn default() -> Self {
570        Self {
571            d__idx: ptr::null_mut(),
572            PS_E_N_PX: 0,
573            N_guide_star: 0,
574            N_mmse_star: 0,
575            offset: 0,
576            N_SIDE_LENSLET_: 0,
577            NP: 0,
578            NS: 0,
579            osf: 0,
580            d__ce: ptr::null_mut(),
581            d__phase_est: ptr::null_mut(),
582            d__phase_est_c: ptr::null_mut(),
583            d__phase_est_i: ptr::null_mut(),
584            d__x: ptr::null_mut(),
585            d__zp_x: ptr::null_mut(),
586            aa: Default::default(),
587            aaCov: Default::default(),
588            pa: Default::default(),
589            paCov: Default::default(),
590            iSolve: Default::default(),
591            tid: Default::default(),
592            nnz: 0,
593            NI: 0,
594            csrValH: ptr::null_mut(),
595            csrColIndH: ptr::null_mut(),
596            csrRowPtrH: ptr::null_mut(),
597            alpha: 0f32,
598            beta: 0f32,
599            elapsed_time: 0f32,
600            cudaStat: 0,
601            status: 0,
602            handle: ptr::null_mut(),
603            descr: ptr::null_mut(),
604            start: ptr::null_mut(),
605            stop: ptr::null_mut(),
606        }
607    }
608}
609unsafe impl Send for centroiding {}
610impl Default for centroiding {
611    fn default() -> Self {
612        Self {
613            _N_SIDE_LENSLET_: 0,
614            N_LENSLET: 0,
615            N_SOURCE: 0,
616            d__c: ptr::null_mut(),
617            d__cx: ptr::null_mut(),
618            d__cy: ptr::null_mut(),
619            d__mass: ptr::null_mut(),
620            lenslet_mask: ptr::null_mut(),
621            MASK_SET: 0,
622            n_data: 0,
623            DEV_SHARED_MEM: 0,
624            DEV_MAX_THREADS: 0,
625            handle: ptr::null_mut(),
626            status: 0,
627        }
628    }
629}
630unsafe impl Send for pssn {}
631impl Default for pssn {
632    fn default() -> Self {
633        Self {
634            N_O: 0,
635            N_O0: 0,
636            n_byte: 0,
637            d__O: ptr::null_mut(),
638            d__O0: ptr::null_mut(),
639            buffer: ptr::null_mut(),
640            d__C: ptr::null_mut(),
641            N_PX: 0,
642            N: 0,
643            d__W: ptr::null_mut(),
644            N_OTF: 0,
645            N_OTF2: 0,
646            NN: 0,
647            plan: 0,
648            handle: ptr::null_mut(),
649            num: 0f32,
650            denom: ptr::null_mut(),
651        }
652    }
653}
654unsafe impl Send for stats {}
655impl Default for stats {
656    fn default() -> Self {
657        Self {
658            handle: ptr::null_mut(),
659            status: 0,
660        }
661    }
662}
663unsafe impl Send for gpu_double {}
664unsafe impl Sync for gpu_double {}
665impl Default for gpu_double {
666    fn default() -> Self {
667        Self {
668            dev_data: ptr::null_mut(),
669            host_data: ptr::null_mut(),
670            N: 0,
671            nb: 0,
672            S: Default::default(),
673            stat: 0,
674            handle: ptr::null_mut(),
675            cusolverH: ptr::null_mut(),
676        }
677    }
678}
679unsafe impl Send for gpu_int {}
680unsafe impl Sync for gpu_int {}
681impl Default for gpu_int {
682    fn default() -> Self {
683        Self {
684            dev_data: ptr::null_mut(),
685            host_data: ptr::null_mut(),
686            N: 0,
687            nb: 0,
688            S: Default::default(),
689            stat: 0,
690            handle: ptr::null_mut(),
691            cusolverH: ptr::null_mut(),
692        }
693    }
694}
695unsafe impl Send for gpu_float {}
696unsafe impl Sync for gpu_float {}
697
698impl Default for gpu_float {
699    fn default() -> Self {
700        Self {
701            dev_data: ptr::null_mut(),
702            host_data: ptr::null_mut(),
703            d_tau: ptr::null_mut(),
704            N: 0,
705            nb: 0,
706            S: Default::default(),
707            stat: 0,
708            handle: ptr::null_mut(),
709            cusolverH: ptr::null_mut(),
710        }
711    }
712}
713unsafe impl Send for conic {}
714impl Default for conic {
715    fn default() -> Self {
716        Self {
717            ref_frame: Default::default(),
718            origin: Default::default(),
719            d__origin: ptr::null_mut(),
720            c: 0f64,
721            k: 0f64,
722            refractive_index: 0f64,
723            even_asphere_N: 0,
724            d__even_asphere_a: ptr::null_mut(),
725        }
726    }
727}
728
729unsafe impl Send for pyramid {}
730impl Default for pyramid {
731    fn default() -> Self {
732        Self {
733            N_PX_LENSLET: 0,
734            N_SIDE_LENSLET: 0,
735            modulation: 0f32,
736            modulation_sampling: 0,
737            camera: imaging::default(),
738            alpha: 0f32,
739        }
740    }
741}
742
743unsafe impl Send for segmentPistonSensor {}
744impl Default for segmentPistonSensor {
745    fn default() -> Self {
746        Self {
747            ri: Default::default(),
748            ro: Default::default(),
749            lenslet_height: Default::default(),
750            lenslet_size: Default::default(),
751            lenslet: Default::default(),
752            lenslet_mask: Default::default(),
753            lenslet_src: Default::default(),
754            dispersion: Default::default(),
755            N_LAMBDA: Default::default(),
756            N_GS: Default::default(),
757            pixel_scale: Default::default(),
758            field_of_view: Default::default(),
759            camera: Default::default(),
760            camera_array: ptr::null_mut(),
761            nyquist_factor: Default::default(),
762            BIN_IMAGE: Default::default(),
763            N_PX_LENSLET: Default::default(),
764            N_PX_LENSLET2: Default::default(),
765            N_PX: Default::default(),
766            N_PX2: Default::default(),
767            N_PX_IMAGE: Default::default(),
768            N_LENSLET: Default::default(),
769            N_LENSLET2: Default::default(),
770            FFT: Default::default(),
771            fft_src: Default::default(),
772            fft_phase: ptr::null_mut(),
773            fft_mask: Default::default(),
774            D_px: Default::default(),
775            D_px2: Default::default(),
776            m2px: Default::default(),
777            R: Default::default(),
778            lambda0: Default::default(),
779            spectral_bandwidth: Default::default(),
780        }
781    }
782}
783
784impl std::fmt::Display for gmt_m1 {
785    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
786        write!(f, "M1")
787    }
788}
789impl std::fmt::Display for gmt_m2 {
790    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
791        write!(f, "M2")
792    }
793}