| 4019 | } |
| 4020 | |
| 4021 | void buf_append(const char* data, size_t n) { |
| 4022 | auto remaining_size = buf_size(); |
| 4023 | if (remaining_size > 0 && buf_spos_ > 0) { |
| 4024 | for (size_t i = 0; i < remaining_size; i++) { |
| 4025 | buf_[i] = buf_[buf_spos_ + i]; |
| 4026 | } |
| 4027 | } |
| 4028 | buf_spos_ = 0; |
| 4029 | buf_epos_ = remaining_size; |
| 4030 | |
| 4031 | if (remaining_size + n > buf_.size()) { buf_.resize(remaining_size + n); } |
| 4032 | |
| 4033 | for (size_t i = 0; i < n; i++) { |
| 4034 | buf_[buf_epos_ + i] = data[i]; |
| 4035 | } |
| 4036 | buf_epos_ += n; |
| 4037 | } |
| 4038 | |
| 4039 | void buf_erase(size_t size) { buf_spos_ += size; } |
| 4040 | |