//+build !jsoniter_sloppy

package jsoniter

import (
	
	
)

func ( *Iterator) () {
	if !.trySkipNumber() {
		.unreadByte()
		if .Error != nil && .Error != io.EOF {
			return
		}
		.ReadFloat64()
		if .Error != nil && .Error != io.EOF {
			.Error = nil
			.ReadBigFloat()
		}
	}
}

func ( *Iterator) () bool {
	 := false
	for  := .head;  < .tail; ++ {
		 := .buf[]
		switch  {
		case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
		case '.':
			if  {
				.ReportError("validateNumber", `more than one dot found in number`)
				return true // already failed
			}
			if +1 == .tail {
				return false
			}
			 = .buf[+1]
			switch  {
			case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
			default:
				.ReportError("validateNumber", `missing digit after dot`)
				return true // already failed
			}
			 = true
		default:
			switch  {
			case ',', ']', '}', ' ', '\t', '\n', '\r':
				if .head ==  {
					return false // if - without following digits
				}
				.head = 
				return true // must be valid
			}
			return false // may be invalid
		}
	}
	return false
}

func ( *Iterator) () {
	if !.trySkipString() {
		.unreadByte()
		.ReadString()
	}
}

func ( *Iterator) () bool {
	for  := .head;  < .tail; ++ {
		 := .buf[]
		if  == '"' {
			.head =  + 1
			return true // valid
		} else if  == '\\' {
			return false
		} else if  < ' ' {
			.ReportError("trySkipString",
				fmt.Sprintf(`invalid control character found: %d`, ))
			return true // already failed
		}
	}
	return false
}

func ( *Iterator) () {
	.unreadByte()
	.ReadObjectCB(func( *Iterator,  string) bool {
		.Skip()
		return true
	})
}

func ( *Iterator) () {
	.unreadByte()
	.ReadArrayCB(func( *Iterator) bool {
		.Skip()
		return true
	})
}