@@ -56,7 +56,7 @@ func (dec *Decoder) Decode(v interface{}) error {
56
56
}
57
57
58
58
if ! dec .tokenValueAllowed () {
59
- return & SyntaxError {msg : "not at beginning of value" , Offset : dec .offset ()}
59
+ return & SyntaxError {msg : "not at beginning of value" , Offset : dec .InputOffset ()}
60
60
}
61
61
62
62
// Read whole value into buffer.
@@ -314,7 +314,7 @@ func (dec *Decoder) tokenPrepareForDecode() error {
314
314
return err
315
315
}
316
316
if c != ',' {
317
- return & SyntaxError {"expected comma after array element" , dec .offset ()}
317
+ return & SyntaxError {"expected comma after array element" , dec .InputOffset ()}
318
318
}
319
319
dec .scanp ++
320
320
dec .tokenState = tokenArrayValue
@@ -324,7 +324,7 @@ func (dec *Decoder) tokenPrepareForDecode() error {
324
324
return err
325
325
}
326
326
if c != ':' {
327
- return & SyntaxError {"expected colon after object key" , dec .offset ()}
327
+ return & SyntaxError {"expected colon after object key" , dec .InputOffset ()}
328
328
}
329
329
dec .scanp ++
330
330
dec .tokenState = tokenObjectValue
@@ -477,7 +477,7 @@ func (dec *Decoder) tokenError(c byte) (Token, error) {
477
477
case tokenObjectComma :
478
478
context = " after object key:value pair"
479
479
}
480
- return nil , & SyntaxError {"invalid character " + quoteChar (c ) + context , dec .offset ()}
480
+ return nil , & SyntaxError {"invalid character " + quoteChar (c ) + context , dec .InputOffset ()}
481
481
}
482
482
483
483
// More reports whether there is another element in the
@@ -506,6 +506,9 @@ func (dec *Decoder) peek() (byte, error) {
506
506
}
507
507
}
508
508
509
- func (dec * Decoder ) offset () int64 {
509
+ // InputOffset returns the input stream byte offset of the current decoder position.
510
+ // The offset gives the location of the end of the most recently returned token
511
+ // and the beginning of the next token.
512
+ func (dec * Decoder ) InputOffset () int64 {
510
513
return dec .scanned + int64 (dec .scanp )
511
514
}
0 commit comments