summaryrefslogtreecommitdiff
path: root/src/pkg/strconv/atoi.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/strconv/atoi.go')
-rw-r--r--src/pkg/strconv/atoi.go106
1 files changed, 53 insertions, 53 deletions
diff --git a/src/pkg/strconv/atoi.go b/src/pkg/strconv/atoi.go
index bcfaf2ce5..60492b653 100644
--- a/src/pkg/strconv/atoi.go
+++ b/src/pkg/strconv/atoi.go
@@ -7,19 +7,19 @@ package strconv
import "os"
type NumError struct {
- Num string;
- Error os.Error;
+ Num string
+ Error os.Error
}
-func (e *NumError) String() string { return "parsing " + e.Num + ": " + e.Error.String() }
+func (e *NumError) String() string { return "parsing " + e.Num + ": " + e.Error.String() }
func computeIntsize() uint {
- siz := uint(8);
+ siz := uint(8)
for 1<<siz != 0 {
siz *= 2
}
- return siz;
+ return siz
}
var IntSize = computeIntsize()
@@ -29,7 +29,7 @@ func cutoff64(base int) uint64 {
if base < 2 {
return 0
}
- return (1<<64-1)/uint64(base) + 1;
+ return (1<<64-1)/uint64(base) + 1
}
// Btoui64 interprets a string s in an arbitrary base b (2 to 36)
@@ -42,11 +42,11 @@ func cutoff64(base int) uint64 {
// digits, err.Error = os.EINVAL; if the value corresponding
// to s cannot be represented by a uint64, err.Error = os.ERANGE.
func Btoui64(s string, b int) (n uint64, err os.Error) {
- s0 := s;
+ s0 := s
switch {
case len(s) < 1:
- err = os.EINVAL;
- goto Error;
+ err = os.EINVAL
+ goto Error
case 2 <= b && b <= 36:
// valid base; nothing to do
@@ -55,11 +55,11 @@ func Btoui64(s string, b int) (n uint64, err os.Error) {
// Look for octal, hex prefix.
switch {
case s[0] == '0' && len(s) > 1 && (s[1] == 'x' || s[1] == 'X'):
- b = 16;
- s = s[2:];
+ b = 16
+ s = s[2:]
if len(s) < 1 {
- err = os.EINVAL;
- goto Error;
+ err = os.EINVAL
+ goto Error
}
case s[0] == '0':
b = 8
@@ -68,15 +68,15 @@ func Btoui64(s string, b int) (n uint64, err os.Error) {
}
default:
- err = os.ErrorString("invalid base " + Itoa(b));
- goto Error;
+ err = os.ErrorString("invalid base " + Itoa(b))
+ goto Error
}
- n = 0;
- cutoff := cutoff64(b);
+ n = 0
+ cutoff := cutoff64(b)
for i := 0; i < len(s); i++ {
- var v byte;
+ var v byte
switch {
case '0' <= s[i] && s[i] <= '9':
v = s[i] - '0'
@@ -85,38 +85,38 @@ func Btoui64(s string, b int) (n uint64, err os.Error) {
case 'A' <= s[i] && s[i] <= 'Z':
v = s[i] - 'A' + 10
default:
- n = 0;
- err = os.EINVAL;
- goto Error;
+ n = 0
+ err = os.EINVAL
+ goto Error
}
if int(v) >= b {
- n = 0;
- err = os.EINVAL;
- goto Error;
+ n = 0
+ err = os.EINVAL
+ goto Error
}
if n >= cutoff {
// n*b overflows
- n = 1<<64 - 1;
- err = os.ERANGE;
- goto Error;
+ n = 1<<64 - 1
+ err = os.ERANGE
+ goto Error
}
- n *= uint64(b);
+ n *= uint64(b)
- n1 := n + uint64(v);
+ n1 := n + uint64(v)
if n1 < n {
// n+v overflows
- n = 1<<64 - 1;
- err = os.ERANGE;
- goto Error;
+ n = 1<<64 - 1
+ err = os.ERANGE
+ goto Error
}
- n = n1;
+ n = n1
}
- return n, nil;
+ return n, nil
Error:
- return n, &NumError{s0, err};
+ return n, &NumError{s0, err}
}
// Atoui64 interprets a string s as a decimal number and
@@ -137,21 +137,21 @@ func Btoi64(s string, base int) (i int64, err os.Error) {
}
// Pick off leading sign.
- s0 := s;
- neg := false;
+ s0 := s
+ neg := false
if s[0] == '+' {
s = s[1:]
} else if s[0] == '-' {
- neg = true;
- s = s[1:];
+ neg = true
+ s = s[1:]
}
// Convert unsigned and check range.
- var un uint64;
- un, err = Btoui64(s, base);
+ var un uint64
+ un, err = Btoui64(s, base)
if err != nil && err.(*NumError).Error != os.ERANGE {
- err.(*NumError).Num = s0;
- return 0, err;
+ err.(*NumError).Num = s0
+ return 0, err
}
if !neg && un >= 1<<63 {
return 1<<63 - 1, &NumError{s0, os.ERANGE}
@@ -159,43 +159,43 @@ func Btoi64(s string, base int) (i int64, err os.Error) {
if neg && un > 1<<63 {
return -1 << 63, &NumError{s0, os.ERANGE}
}
- n := int64(un);
+ n := int64(un)
if neg {
n = -n
}
- return n, nil;
+ return n, nil
}
// Atoi64 is like Atoui64 but allows signed numbers and
// returns its result in an int64.
-func Atoi64(s string) (i int64, err os.Error) { return Btoi64(s, 10) }
+func Atoi64(s string) (i int64, err os.Error) { return Btoi64(s, 10) }
// Atoui is like Atoui64 but returns its result as a uint.
func Atoui(s string) (i uint, err os.Error) {
- i1, e1 := Atoui64(s);
+ i1, e1 := Atoui64(s)
if e1 != nil && e1.(*NumError).Error != os.ERANGE {
return 0, e1
}
- i = uint(i1);
+ i = uint(i1)
if uint64(i) != i1 {
return ^uint(0), &NumError{s, os.ERANGE}
}
- return i, nil;
+ return i, nil
}
// Atoi is like Atoi64 but returns its result as an int.
func Atoi(s string) (i int, err os.Error) {
- i1, e1 := Atoi64(s);
+ i1, e1 := Atoi64(s)
if e1 != nil && e1.(*NumError).Error != os.ERANGE {
return 0, e1
}
- i = int(i1);
+ i = int(i1)
if int64(i) != i1 {
if i1 < 0 {
return -1 << (IntSize - 1), &NumError{s, os.ERANGE}
}
- return 1<<(IntSize-1) - 1, &NumError{s, os.ERANGE};
+ return 1<<(IntSize-1) - 1, &NumError{s, os.ERANGE}
}
- return i, nil;
+ return i, nil
}