Lines Matching refs:iter

126 func (iter *Iterator) Pool() IteratorPool {
127 return iter.cfg
131 func (iter *Iterator) Reset(reader io.Reader) *Iterator {
132 iter.reader = reader
133 iter.head = 0
134 iter.tail = 0
135 iter.depth = 0
136 return iter
140 func (iter *Iterator) ResetBytes(input []byte) *Iterator {
141 iter.reader = nil
142 iter.buf = input
143 iter.head = 0
144 iter.tail = len(input)
145 iter.depth = 0
146 return iter
150 func (iter *Iterator) WhatIsNext() ValueType {
151 valueType := valueTypes[iter.nextToken()]
152 iter.unreadByte()
156 func (iter *Iterator) skipWhitespacesWithoutLoadMore() bool {
157 for i := iter.head; i < iter.tail; i++ {
158 c := iter.buf[i]
163 iter.head = i
169 func (iter *Iterator) isObjectEnd() bool {
170 c := iter.nextToken()
177 iter.ReportError("isObjectEnd", "object ended prematurely, unexpected char "+string([]byte{c}))
181 func (iter *Iterator) nextToken() byte {
184 for i := iter.head; i < iter.tail; i++ {
185 c := iter.buf[i]
190 iter.head = i + 1
193 if !iter.loadMore() {
200 func (iter *Iterator) ReportError(operation string, msg string) {
201 if iter.Error != nil {
202 if iter.Error != io.EOF {
206 peekStart := iter.head - 10
210 peekEnd := iter.head + 10
211 if peekEnd > iter.tail {
212 peekEnd = iter.tail
214 parsing := string(iter.buf[peekStart:peekEnd])
215 contextStart := iter.head - 50
219 contextEnd := iter.head + 50
220 if contextEnd > iter.tail {
221 contextEnd = iter.tail
223 context := string(iter.buf[contextStart:contextEnd])
224 iter.Error = fmt.Errorf("%s: %s, error found in #%v byte of ...|%s|..., bigger context ...|%s|...",
225 operation, msg, iter.head-peekStart, parsing, context)
229 func (iter *Iterator) CurrentBuffer() string {
230 peekStart := iter.head - 10
234 return fmt.Sprintf("parsing #%v byte, around ...|%s|..., whole buffer ...|%s|...", iter.head,
235 string(iter.buf[peekStart:iter.head]), string(iter.buf[0:iter.tail]))
238 func (iter *Iterator) readByte() (ret byte) {
239 if iter.head == iter.tail {
240 if iter.loadMore() {
241 ret = iter.buf[iter.head]
242 iter.head++
247 ret = iter.buf[iter.head]
248 iter.head++
252 func (iter *Iterator) loadMore() bool {
253 if iter.reader == nil {
254 if iter.Error == nil {
255 iter.head = iter.tail
256 iter.Error = io.EOF
260 if iter.captured != nil {
261 iter.captured = append(iter.captured,
262 iter.buf[iter.captureStartedAt:iter.tail]...)
263 iter.captureStartedAt = 0
266 n, err := iter.reader.Read(iter.buf)
269 if iter.Error == nil {
270 iter.Error = err
275 iter.head = 0
276 iter.tail = n
282 func (iter *Iterator) unreadByte() {
283 if iter.Error != nil {
286 iter.head--
291 func (iter *Iterator) Read() interface{} {
292 valueType := iter.WhatIsNext()
295 return iter.ReadString()
297 if iter.cfg.configBeforeFrozen.UseNumber {
298 return json.Number(iter.readNumberAsString())
300 return iter.ReadFloat64()
302 iter.skipFourBytes('n', 'u', 'l', 'l')
305 return iter.ReadBool()
308 iter.ReadArrayCB(func(iter *Iterator) bool {
310 iter.ReadVal(&elem)
317 iter.ReadMapCB(func(Iter *Iterator, field string) bool {
319 iter.ReadVal(&elem)
325 iter.ReportError("Read", fmt.Sprintf("unexpected value type: %v", valueType))
333 func (iter *Iterator) incrementDepth() (success bool) {
334 iter.depth++
335 if iter.depth <= maxDepth {
338 iter.ReportError("incrementDepth", "exceeded max depth")
342 func (iter *Iterator) decrementDepth() (success bool) {
343 iter.depth--
344 if iter.depth >= 0 {
347 iter.ReportError("decrementDepth", "unexpected negative nesting")