Lines Matching refs:iter

122 func (iter *Iterator) Pool() IteratorPool {
123 return iter.cfg
127 func (iter *Iterator) Reset(reader io.Reader) *Iterator {
128 iter.reader = reader
129 iter.head = 0
130 iter.tail = 0
131 return iter
135 func (iter *Iterator) ResetBytes(input []byte) *Iterator {
136 iter.reader = nil
137 iter.buf = input
138 iter.head = 0
139 iter.tail = len(input)
140 return iter
144 func (iter *Iterator) WhatIsNext() ValueType {
145 valueType := valueTypes[iter.nextToken()]
146 iter.unreadByte()
150 func (iter *Iterator) skipWhitespacesWithoutLoadMore() bool {
151 for i := iter.head; i < iter.tail; i++ {
152 c := iter.buf[i]
157 iter.head = i
163 func (iter *Iterator) isObjectEnd() bool {
164 c := iter.nextToken()
171 iter.ReportError("isObjectEnd", "object ended prematurely, unexpected char "+string([]byte{c}))
175 func (iter *Iterator) nextToken() byte {
178 for i := iter.head; i < iter.tail; i++ {
179 c := iter.buf[i]
184 iter.head = i + 1
187 if !iter.loadMore() {
194 func (iter *Iterator) ReportError(operation string, msg string) {
195 if iter.Error != nil {
196 if iter.Error != io.EOF {
200 peekStart := iter.head - 10
204 peekEnd := iter.head + 10
205 if peekEnd > iter.tail {
206 peekEnd = iter.tail
208 parsing := string(iter.buf[peekStart:peekEnd])
209 contextStart := iter.head - 50
213 contextEnd := iter.head + 50
214 if contextEnd > iter.tail {
215 contextEnd = iter.tail
217 context := string(iter.buf[contextStart:contextEnd])
218 iter.Error = fmt.Errorf("%s: %s, error found in #%v byte of ...|%s|..., bigger context ...|%s|...",
219 operation, msg, iter.head-peekStart, parsing, context)
223 func (iter *Iterator) CurrentBuffer() string {
224 peekStart := iter.head - 10
228 return fmt.Sprintf("parsing #%v byte, around ...|%s|..., whole buffer ...|%s|...", iter.head,
229 string(iter.buf[peekStart:iter.head]), string(iter.buf[0:iter.tail]))
232 func (iter *Iterator) readByte() (ret byte) {
233 if iter.head == iter.tail {
234 if iter.loadMore() {
235 ret = iter.buf[iter.head]
236 iter.head++
241 ret = iter.buf[iter.head]
242 iter.head++
246 func (iter *Iterator) loadMore() bool {
247 if iter.reader == nil {
248 if iter.Error == nil {
249 iter.head = iter.tail
250 iter.Error = io.EOF
254 if iter.captured != nil {
255 iter.captured = append(iter.captured,
256 iter.buf[iter.captureStartedAt:iter.tail]...)
257 iter.captureStartedAt = 0
260 n, err := iter.reader.Read(iter.buf)
263 if iter.Error == nil {
264 iter.Error = err
269 iter.head = 0
270 iter.tail = n
276 func (iter *Iterator) unreadByte() {
277 if iter.Error != nil {
280 iter.head--
285 func (iter *Iterator) Read() interface{} {
286 valueType := iter.WhatIsNext()
289 return iter.ReadString()
291 if iter.cfg.configBeforeFrozen.UseNumber {
292 return json.Number(iter.readNumberAsString())
294 return iter.ReadFloat64()
296 iter.skipFourBytes('n', 'u', 'l', 'l')
299 return iter.ReadBool()
302 iter.ReadArrayCB(func(iter *Iterator) bool {
304 iter.ReadVal(&elem)
311 iter.ReadMapCB(func(Iter *Iterator, field string) bool {
313 iter.ReadVal(&elem)
319 iter.ReportError("Read", fmt.Sprintf("unexpected value type: %v", valueType))