diff options
| author | gingerBill <bill@gingerbill.org> | 2019-12-21 11:22:46 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2019-12-21 11:22:46 +0000 |
| commit | 494b1e7eaa0368f95fa7bd6d993a2f3ecec831ea (patch) | |
| tree | c1d3c07aa31eea60ad85f868af57f017ddd179d3 /core/strconv/generic_float.odin | |
| parent | c43d17bfec9cc99f4d282fe05c5579e318825c2a (diff) | |
Add `-help` which prints information about the compiler flags
Diffstat (limited to 'core/strconv/generic_float.odin')
| -rw-r--r-- | core/strconv/generic_float.odin | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/core/strconv/generic_float.odin b/core/strconv/generic_float.odin index e4784a2e5..99830ad30 100644 --- a/core/strconv/generic_float.odin +++ b/core/strconv/generic_float.odin @@ -2,13 +2,6 @@ package strconv using import "decimal" -Int_Flag :: enum { - Prefix, - Plus, - Space, -} -Int_Flags :: bit_set[Int_Flag]; - Decimal_Slice :: struct { digits: []byte, count: int, @@ -286,154 +279,3 @@ round_shortest :: proc(d: ^Decimal, mant: u64, exp: int, flt: ^Float_Info) { } } - -MAX_BASE :: 32; -digits := "0123456789abcdefghijklmnopqrstuvwxyz"; - - -is_integer_negative :: proc(x: u64, is_signed: bool, bit_size: int) -> (u: u64, neg: bool) { - u = x; - if is_signed { - switch bit_size { - case 8: - i := i8(u); - neg = i < 0; - u = u64(abs(i64(i))); - case 16: - i := i16(u); - neg = i < 0; - u = u64(abs(i64(i))); - case 32: - i := i32(u); - neg = i < 0; - u = u64(abs(i64(i))); - case 64: - i := i64(u); - neg = i < 0; - u = u64(abs(i64(i))); - case: - panic("is_integer_negative: Unknown integer size"); - } - } - return; -} - -append_bits :: proc(buf: []byte, x: u64, base: int, is_signed: bool, bit_size: int, digits: string, flags: Int_Flags) -> string { - if base < 2 || base > MAX_BASE { - panic("strconv: illegal base passed to append_bits"); - } - - a: [129]byte; - i := len(a); - u, neg := is_integer_negative(x, is_signed, bit_size); - b := u64(base); - for u >= b { - i-=1; a[i] = digits[u % b]; - u /= b; - } - i-=1; a[i] = digits[u % b]; - - if .Prefix in flags { - ok := true; - switch base { - case 2: i-=1; a[i] = 'b'; - case 8: i-=1; a[i] = 'o'; - case 10: i-=1; a[i] = 'd'; - case 12: i-=1; a[i] = 'z'; - case 16: i-=1; a[i] = 'x'; - case: ok = false; - } - if ok { - i-=1; a[i] = '0'; - } - } - - switch { - case neg: - i-=1; a[i] = '-'; - case .Plus in flags: - i-=1; a[i] = '+'; - case .Space in flags: - i-=1; a[i] = ' '; - } - - out := a[i:]; - copy(buf, out); - return string(buf[0:len(out)]); -} - -is_integer_negative_128 :: proc(x: u128, is_signed: bool, bit_size: int) -> (u: u128, neg: bool) { - u = x; - if is_signed { - switch bit_size { - case 8: - i := i8(u); - neg = i < 0; - u = u128(abs(i128(i))); - case 16: - i := i16(u); - neg = i < 0; - u = u128(abs(i128(i))); - case 32: - i := i32(u); - neg = i < 0; - u = u128(abs(i128(i))); - case 64: - i := i64(u); - neg = i < 0; - u = u128(abs(i128(i))); - case 128: - i := i128(u); - neg = i < 0; - u = u128(abs(i128(i))); - case: - panic("is_integer_negative: Unknown integer size"); - } - } - return; -} - - -append_bits_128 :: proc(buf: []byte, x: u128, base: int, is_signed: bool, bit_size: int, digits: string, flags: Int_Flags) -> string { - if base < 2 || base > MAX_BASE { - panic("strconv: illegal base passed to append_bits"); - } - - a: [140]byte; - i := len(a); - u, neg := is_integer_negative_128(x, is_signed, bit_size); - b := u128(base); - for u >= b { - i-=1; a[i] = digits[u % b]; - u /= b; - } - i-=1; a[i] = digits[u % b]; - - if .Prefix in flags { - ok := true; - switch base { - case 2: i-=1; a[i] = 'b'; - case 8: i-=1; a[i] = 'o'; - case 10: i-=1; a[i] = 'd'; - case 12: i-=1; a[i] = 'z'; - case 16: i-=1; a[i] = 'x'; - case: ok = false; - } - if ok { - i-=1; a[i] = '0'; - } - } - - switch { - case neg: - i-=1; a[i] = '-'; - case .Plus in flags: - i-=1; a[i] = '+'; - case .Space in flags: - i-=1; a[i] = ' '; - } - - out := a[i:]; - copy(buf, out); - return string(buf[0:len(out)]); -} |