1// +build amd64
2// +build !appengine
3
4/**
5 *  Copyright 2014 Paul Querna
6 *
7 *  Licensed under the Apache License, Version 2.0 (the "License");
8 *  you may not use this file except in compliance with the License.
9 *  You may obtain a copy of the License at
10 *
11 *      http://www.apache.org/licenses/LICENSE-2.0
12 *
13 *  Unless required by applicable law or agreed to in writing, software
14 *  distributed under the License is distributed on an "AS IS" BASIS,
15 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 *  See the License for the specific language governing permissions and
17 *  limitations under the License.
18 *
19 */
20
21package v1
22
23func haveSSE42() bool
24func scanStringSSE(s []byte, j int) (int, byte)
25
26var sse42 = haveSSE42()
27
28func scanString(s []byte, j int) (int, byte) {
29	// XXX The following fails to compile on Go 1.2.
30	/*
31		if false && sse42 {
32			return scanStringSSE(s, j)
33		}
34	*/
35
36	for {
37		if j >= len(s) {
38			return j, 0
39		}
40
41		c := s[j]
42		j++
43		if byteLookupTable[c]&sliceStringMask == 0 {
44			continue
45		}
46
47		return j, c
48	}
49}
50