<commit_before>package strconv

import (
	"math"
)

// ParseInt parses a byte-slice and returns the integer it represents.
// If an invalid character is encountered, it will stop there.
func ParseInt(b []byte) (int64, int) {
	i := 0
	neg := false
	if len(b) > 0 && (b[0] == '+' || b[0] == '-') {
		neg = b[0] == '-'
		i++
	}
	start := i
	n := uint64(0)
	for i < len(b) {
		c := b[i]
		if n > math.MaxUint64/10 {
			return 0, 0
		} else if c >= '0' && c <= '9' {
			n *= 10
			n += uint64(c - '0')
		} else {
			break
		}
		i++
	}
	if i == start {
		return 0, 0
	}
	if !neg && n > uint64(math.MaxInt64) || n > uint64(math.MaxInt64)+1 {
		return 0, 0
	} else if neg {
		return -int64(n), i
	}
	return int64(n), i
}

// LenInt returns the written length of an integer.
func LenInt(i int64) int {
	if i < 0 {
		if i == -9223372036854775808 {
			return 19
		}
		i = -i
	}
	switch {
	case i < 10:
		return 1
	case i < 100:
		return 2
	case i < 1000:
		return 3
	case i < 10000:
		return 4
	case i < 100000:
		return 5
	case i < 1000000:
		return 6
	case i < 10000000:
		return 7
	case i < 100000000:<commit_msg>Add ParseUint<commit_after>package strconv

import (
	"math"
)

// ParseInt parses a byte-slice and returns the integer it represents.
// If an invalid character is encountered, it will stop there.
func ParseInt(b []byte) (int64, int) {
	i := 0
	neg := false
	if len(b) > 0 && (b[0] == '+' || b[0] == '-') {
		neg = b[0] == '-'
		i++
	}
	start := i
	n := uint64(0)
	for i < len(b) {
		c := b[i]
		if n > math.MaxUint64/10 {
			return 0, 0
		} else if c >= '0' && c <= '9' {
			n *= 10
			n += uint64(c - '0')
		} else {
			break
		}
		i++
	}
	if i == start {
		return 0, 0
	}
	if !neg && n > uint64(math.MaxInt64) || n > uint64(math.MaxInt64)+1 {
		return 0, 0
	} else if neg {
		return -int64(n), i
	}
	return int64(n), i
}

// ParseUint parses a byte-slice and returns the integer it represents.
// If an invalid character is encountered, it will stop there.
func ParseUint(b []byte) (uint64, int) {
	i := 0
	n := uint64(0)
	for i < len(b) {
		c := b[i]
		if n > math.MaxUint64/10 {
			return 0, 0
		} else if c >= '0' && c <= '9' {
			n *= 10
			n += uint64(c - '0')
		} else {
			break
		}
		i++
	}
	return n, i
}

// LenInt returns the written length of an integer.
func LenInt(i int64) int {
	if i < 0 {
		if i == -9223372036854775808 {
			return 19
		}
		i = -i
	}
	switch {
	case i < 10:
		return 1
	case i < 100:
		return 2
	case i < 1000:
		return 3
	case i < 10000:
		return 4
	case i < 100000:
		return 5
	case i < 1000000:
		return 6
	case i < 10000000:
		return 7
	case i < 100000000:
{'fraction_non_alphanumeric': 0.15751056473300037, 'fraction_numerical': 0.09565885516711486, 'mean_word_length': 2.347043701799486, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 4, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1147808', 'n_tokens_mistral': 1346, 'n_tokens_neox': 1091, 'n_words': 367}