Add more documentation to printbuffer.h

This commit is contained in:
2026-02-21 20:48:02 -05:00
parent 8081297207
commit 61b98db9b0
2 changed files with 31 additions and 10 deletions

View File

@@ -24,14 +24,14 @@ struct PrintBufferCore : public eng::opnew {
PrintBufferCore() : first_line_(0), first_unchecked_(0) {}
};
static PrintBufferCore shared_core;
static PrintBufferCore empty_core_;
PrintBuffer::PrintBuffer() {
core_ = &shared_core;
core_ = &empty_core_;
}
PrintBuffer::~PrintBuffer() {
if (core_ != &shared_core) delete core_;
if (core_ != &empty_core_) delete core_;
}
int PrintBuffer::first_line() const {
@@ -64,9 +64,9 @@ eng::string PrintBuffer::debug_string() const {
}
void PrintBuffer::clear() {
if (core_ != &shared_core) {
if (core_ != &empty_core_) {
delete core_;
core_ = &shared_core;
core_ = &empty_core_;
}
}
@@ -78,7 +78,7 @@ static int first_line_len(const char *text, int len) {
}
static void add_line(PrintBufferCore *core, const char *text, int len, bool auth) {
assert(core != &shared_core);
assert(core != &empty_core_);
core->lines_.emplace_back(text, len);
if (auth) {
core->first_unchecked_ = core->first_line_ + int(core->lines_.size());
@@ -88,7 +88,7 @@ static void add_line(PrintBufferCore *core, const char *text, int len, bool auth
void PrintBuffer::add_string(const eng::string &s, bool auth) {
const char *text = s.c_str();
int len = s.size();
if (core_ == &shared_core) core_ = new PrintBufferCore;
if (core_ == &empty_core_) core_ = new PrintBufferCore;
while (true) {
int fll = first_line_len(text, len);
if (fll == len) {
@@ -105,7 +105,7 @@ void PrintBuffer::add_string(const eng::string &s, bool auth) {
}
void PrintBuffer::discard_upto(int n) {
if (core_ == &shared_core) return;
if (core_ == &empty_core_) return;
while ((!core_->lines_.empty()) && (core_->first_line_ < n)) {
core_->lines_.pop_front();
core_->first_line_ += 1;
@@ -134,7 +134,7 @@ void PrintBuffer::deserialize(StreamBuffer *sb) {
if (never_printed) {
clear();
} else {
if (core_ == &shared_core) core_ = new PrintBufferCore;
if (core_ == &empty_core_) core_ = new PrintBufferCore;
core_->first_line_ = sb->read_uint32();
core_->first_unchecked_ = sb->read_uint32();
int nlines = sb->read_uint32();
@@ -163,7 +163,7 @@ void PrintBuffer::diff(const PrintBuffer &auth, StreamBuffer *sb) const {
void PrintBuffer::patch(StreamBuffer *sb, DebugCollector *dbc) {
DebugBlock dbb(dbc, "PrintBuffer::patch");
if (core_ == &shared_core) core_ = new PrintBufferCore;
if (core_ == &empty_core_) core_ = new PrintBufferCore;
int auth_first = sb->read_int32();
int auth_last = sb->read_int32();
core_->lines_.resize(core_->first_unchecked_ - core_->first_line_);