| 460 | } |
| 461 | |
| 462 | size_t LA(ptrdiff_t i) override { |
| 463 | if (ABSL_PREDICT_FALSE(i == 0)) { |
| 464 | return 0; |
| 465 | } |
| 466 | auto p = static_cast<ptrdiff_t>(index_); |
| 467 | if (i < 0) { |
| 468 | i++; |
| 469 | if (p + i - 1 < 0) { |
| 470 | return IntStream::EOF; |
| 471 | } |
| 472 | } |
| 473 | if (p + i - 1 >= static_cast<ptrdiff_t>(size_)) { |
| 474 | return IntStream::EOF; |
| 475 | } |
| 476 | return buffer_.at(static_cast<size_t>(p + i - 1)); |
| 477 | } |
| 478 | |
| 479 | ptrdiff_t mark() override { return -1; } |
| 480 |