mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 01:20:25 +00:00
f083031a27
This class works by eagerly allocating 1MB of virtual memory but only adding physical pages on demand. In other words, when you append to it, its memory usage will increase by 1 page whenever you append across a page boundary (4KB.)
28 lines
559 B
C++
28 lines
559 B
C++
#pragma once
|
|
|
|
#include <AK/AKString.h>
|
|
#include <Kernel/KBuffer.h>
|
|
#include <stdarg.h>
|
|
|
|
class KBufferBuilder {
|
|
public:
|
|
using OutputType = KBuffer;
|
|
|
|
explicit KBufferBuilder();
|
|
~KBufferBuilder() {}
|
|
|
|
void append(const StringView&);
|
|
void append(char);
|
|
void append(const char*, int);
|
|
void appendf(const char*, ...);
|
|
void appendvf(const char*, va_list);
|
|
|
|
KBuffer build();
|
|
|
|
private:
|
|
bool can_append(size_t) const;
|
|
u8* insertion_ptr() { return m_buffer.data() + m_size; }
|
|
|
|
KBuffer m_buffer;
|
|
size_t m_size { 0 };
|
|
};
|