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 try_parse_long s base |> map { _ as i32 } 31 32 def try_parse (s : String) = try_parse s 10 33 34 def parse (s : String) (base : u32) = 35 let n = try_parse_long s base |> unwrap 36 n as i32 37 38 def parse (s : String) = parse s 10 39 40 object f32 41 def try_parse (s : String) = 42 let array = s.to_array<17> 43 let c_string = array.to_c_string 44 let mut str_end = null 45 let x = strtof c_string str_end@mut_ptr 46 if str_end[0] == '\0' then Some x else None 47 48 def parse (s : String) = try_parse s |> unwrap 49