1use std::str::FromStr;
2use core::fmt::Display;
3use num::Float;
4use crate::{h_bool::HBool, h_coord::HCoord, h_date::HDate, h_datetime::HDateTime, h_dict::HDict, h_grid::HGrid, h_list::HList, h_marker::HMarker, h_na::HNA, h_null::HNull, h_number::HNumber, h_ref::HRef, h_remove::HRemove, h_str::HStr, h_time::HTime, h_uri::HUri, io::HBox, HVal, NumTrait};
5
6
7pub trait HCast<'a,FT>
8 where
9 FT: NumTrait + 'a,
10 {
12 fn get_null(&self) -> Option<&HNull>;
13 fn get_marker(&self) -> Option<&HMarker>;
14 fn get_remove(&self) -> Option<&HRemove>;
15 fn get_na(&self) -> Option<&HNA>;
16 fn get_bool(&self) -> Option<&HBool>;
17 fn get_string(&self) -> Option<&HStr>;
18 fn get_uri(&self) -> Option<&HUri>;
19 fn get_coord(&self) -> Option<&HCoord<FT>>;
20 fn get_number(&self) -> Option<&HNumber<FT>>;
21 fn get_datetime(&self) -> Option<&HDateTime>;
22 fn get_date(&self) -> Option<&HDate>;
23 fn get_time(&self) -> Option<&HTime>;
24 fn get_ref(&self) -> Option<&HRef>;
25 fn get_dict(&'a self) -> Option<&'a HDict<'a,FT>>;
26 fn get_list(&'a self) -> Option<&'a HList<'a,FT>>;
27 fn get_grid(&'a self) -> Option<&'a HGrid<'a,FT>>;
28}
29
30impl <'a,FT>HCast<'a,FT> for HBox<'a,FT>
31 where
32 FT: NumTrait + 'a,
33 {
35 fn get_null(&self) -> Option<&HNull> { self.get_null_val() }
36 fn get_marker(&self) -> Option<&HMarker> { self.get_marker_val() }
37 fn get_remove(&self) -> Option<&HRemove> { self.get_remove_val() }
38 fn get_na(&self) -> Option<&HNA> { self.get_na_val() }
39 fn get_bool(&self) -> Option<&HBool> { self.get_bool_val() }
40 fn get_string(&self) -> Option<&HStr> { self.get_string_val() }
41 fn get_uri(&self) -> Option<&HUri> { self.get_uri_val() }
42 fn get_coord(&self) -> Option<&HCoord<FT>> { self.get_coord_val() }
43 fn get_number(&self) -> Option<&HNumber<FT>> { self.get_number_val() }
44 fn get_datetime(&self) -> Option<&HDateTime> { self.get_datetime_val() }
45 fn get_date(&self) -> Option<&HDate> { self.get_date_val() }
46 fn get_time(&self) -> Option<&HTime> { self.get_time_val() }
47 fn get_ref(&self) -> Option<&HRef> { self.get_ref_val() }
48 fn get_dict(&'a self) -> Option<&'a HDict<'a,FT>> { self.get_dict_val() }
49 fn get_list(&'a self) -> Option<&'a HList<'a,FT>> { self.get_list_val() }
50 fn get_grid(&'a self) -> Option<&'a HGrid<'a,FT>> { self.get_grid_val() }
51}