| 17 | } |
| 18 | |
| 19 | void read(char* content, size_t length) { |
| 20 | if (pos + length > STREAM_INPUT_BUFFER_SIZE) { |
| 21 | const size_t n_avail = STREAM_INPUT_BUFFER_SIZE - pos; |
| 22 | read_core(content, n_avail); |
| 23 | length -= n_avail; |
| 24 | content += n_avail; |
| 25 | if (length > STREAM_INPUT_BUFFER_SIZE) { |
| 26 | stream->read(content, length); |
| 27 | load(); |
| 28 | return; |
| 29 | } |
| 30 | load(); |
| 31 | } |
| 32 | read_core(content, length); |
| 33 | } |
| 34 | |
| 35 | char read_char() { |
| 36 | if (pos == STREAM_INPUT_BUFFER_SIZE) { |