Browse Source

Merge pull request #5742 from samwega/utoi_and_rtoi_strconv

feat: added rtoi & utoi to core/strconv/strconv.odin
Jeroen van Rijn 1 week ago
parent
commit
b2e695e634
1 changed files with 68 additions and 0 deletions
  1. 68 0
      core/strconv/strconv.odin

+ 68 - 0
core/strconv/strconv.odin

@@ -1656,6 +1656,74 @@ write_float :: proc(buf: []byte, f: f64, fmt: byte, prec, bit_size: int) -> stri
 	return string(generic_ftoa(buf, f, fmt, prec, bit_size))
 	return string(generic_ftoa(buf, f, fmt, prec, bit_size))
 }
 }
 /*
 /*
+Casts a rune to int
+
+**Input:**
+
+- r: The input rune to find the integer value of
+
+Example:
+
+	import "core:strconv"
+	rune_to_int :: proc () {
+		my_int, ok := strconv.rtoi('5')
+		if ok {
+			assert(typeid_of(type_of(my_int)) == int)
+			fmt.println(my_int)
+		}
+	}
+
+Output:
+
+	5
+
+**Returns:**
+
+- value: the integer value of the given rune
+- ok: ok=false if input not a rune or not numeric.
+*/
+rtoi :: proc(r: rune) -> (value: int, ok: bool) #optional_ok {
+	if '0' <= r && r <= '9' {
+		return int(r - '0'), true
+	}
+	return -1, false
+}
+/*
+Casts one u8 character to int
+
+**Input:**
+
+- u: The input u8 character to find the integer value of
+
+Example:
+
+	import "core:strconv"
+	u8_to_int :: proc () {
+		my_u8 := u8('8')
+		my_int, ok := strconv.utoi(my_u8)
+		if ok {
+			assert(typeid_of(type_of(my_int)) == int)
+			fmt.println(my_int)
+		}
+	}
+
+Output:
+
+	8
+
+
+**Returns:**
+
+- value: the integer value of the given u8 character
+- ok: ok=false if input not a u8 character or not numeric.
+*/
+utoi :: proc(u: u8) -> (value: int, ok: bool) #optional_ok {
+	if '0' <= u && u <= '9' {
+		return int(u - '0'), true
+	}
+	return -1, false
+}
+/*
 Writes a quoted string representation of the input string to a given byte slice and returns the result as a string
 Writes a quoted string representation of the input string to a given byte slice and returns the result as a string
 
 
 **Inputs**
 **Inputs**