libswe_sys/swerust/swe08/
handler.rs1use crate::raw;
2use crate::sweconst::Calandar;
3use std::ffi::{CStr, CString};
4pub fn julday(
10 year: i32,
11 month: i32,
12 day: i32,
13 hour: f64,
14 calandar: Calandar,
15) -> f64 {
16 let result: f64 =
17 unsafe { raw::swe_julday(year, month, day, hour, calandar as i32) };
18 result
19}
20
21#[derive(Debug, Clone)]
23pub struct UtcTimeZoneResult {
24 pub year: [i32; 2],
25 pub month: [i32; 2],
26 pub day: [i32; 2],
27 pub hour: [i32; 2],
28 pub min: [i32; 2],
29 pub sec: [f64; 2],
30}
31
32pub fn utc_time_zone(
33 year: i32,
34 month: i32,
35 day: i32,
36 hour: i32,
37 min: i32,
38 sec: f64,
39 timezone: f64,
40) -> UtcTimeZoneResult {
41 let mut year_out = [0; 2];
42 let mut month_out = [0; 2];
43 let mut day_out = [0; 2];
44 let mut hour_out = [0; 2];
45 let mut min_out = [0; 2];
46 let mut sec_out = [0.0; 2];
47 unsafe {
48 let p_year_out = year_out.as_mut_ptr();
49 let p_month_out = month_out.as_mut_ptr();
50 let p_day_out = day_out.as_mut_ptr();
51 let p_hour_out = hour_out.as_mut_ptr();
52 let p_min_out = min_out.as_mut_ptr();
53 let p_sec_out = sec_out.as_mut_ptr();
54 raw::swe_utc_time_zone(
55 year,
56 month,
57 day,
58 hour,
59 min,
60 sec,
61 timezone,
62 p_year_out,
63 p_month_out,
64 p_day_out,
65 p_hour_out,
66 p_min_out,
67 p_sec_out,
68 );
69 UtcTimeZoneResult {
70 year: year_out,
71 month: month_out,
72 day: day_out,
73 hour: hour_out,
74 min: min_out,
75 sec: sec_out,
76 }
77 }
78}
79
80#[derive(Debug, Clone)]
81pub struct UtcToJdResult {
82 pub julian_day_et: f64,
83 pub julian_day_ut: f64,
84 pub err: String, pub result: i32,
86}
87pub fn utc_to_jd(
88 year: i32,
89 month: i32,
90 day: i32,
91 hour: i32,
92 min: i32,
93 sec: f64,
94 calandar: Calandar,
95) -> UtcToJdResult {
96 let mut dret = [0.0; 2];
97 let mut serr = [0; 255];
98 unsafe {
99 let p_dret = dret.as_mut_ptr();
100 let p_serr = serr.as_mut_ptr();
101 let result = raw::swe_utc_to_jd(
102 year,
103 month,
104 day,
105 hour,
106 min,
107 sec,
108 calandar as i32,
109 p_dret,
110 p_serr,
111 );
112 let s_serr = CString::from(CStr::from_ptr(p_serr))
113 .to_str()
114 .unwrap()
115 .to_string();
116 UtcToJdResult {
117 julian_day_et: dret[0],
118 julian_day_ut: dret[1],
119 err: s_serr,
120 result,
121 }
122 }
123}