1 private@ 2 3 type locale_t = MutPtr 4 5 public@ 6 7 let strtol (str : CString @restrict 8 str_end : mut ptr MutPtr<CChar> @restrict 9 base : int) : long 10 11 let strtof (str : CString) (str_end : mut ptr MutPtr<CChar>) : f32 12 13 let try_parse_long (s : String) (base : u32) = 14 let array = s.to_array<17> 15 let c_string = array.to_c_string 16 let mut str_end = null 17 let n = strtol c_string str_end@mut_ptr base.as<int> 18 if str_end[0] == '\0' then Some n else None 19 20 object u32 21 def parse (s : String) (base : u32) = 22 let n = try_parse_long s base |> unwrap 23 assert n >= 0 24 n as u32 25 26 def parse (s : String) = parse s 10 27 28 object i32 29 def try_parse (s : String) (base : u32) = 30 let maybe_n = try_parse_long s base 31 case maybe_n of 32 Some n -> Some n.as<i32> 33 None -> None 34 35 def try_parse (s : String) = try_parse s 10 36 37 def parse (s : String) (base : u32) = 38 let n = try_parse_long s base |> unwrap 39 n as i32 40 41 def parse (s : String) = parse s 10 42 43 object f32 44 def try_parse (s : String) = 45 let array = s.to_array<17> 46 let c_string = array.to_c_string 47 let mut str_end = null 48 let x = strtof c_string str_end@mut_ptr 49 if str_end[0] == '\0' then Some x else None 50 51 def parse (s : String) = try_parse s |> unwrap 52