7#include "core/fxcrt/binary_buffer.h"
12#include "core/fxcrt/fx_safe_types.h"
13#include "core/fxcrt/span_util.h"
14#include "core/fxcrt/stl_util.h"
35 m_AllocStep = that.m_AllocStep;
36 m_DataSize = that.m_DataSize;
37 m_buffer = std::move(that.m_buffer);
44 if (m_buffer.empty() || count > GetSize() || start_index > GetSize() - count)
47 auto buffer_span = GetMutableSpan();
48 fxcrt::spanmove(buffer_span.subspan(start_index),
49 buffer_span.subspan(start_index + count));
54 return pdfium::make_span(m_buffer).first(GetSize());
58 return pdfium::make_span(m_buffer).first(GetSize());
70 m_buffer.resize(GetSize());
72 return std::move(m_buffer);
76 if (m_buffer.size() < size)
77 ExpandBuf(size - GetSize());
81 FX_SAFE_SIZE_T new_size = GetSize();
83 if (m_buffer.size() >= new_size.ValueOrDie())
86 size_t alloc_step = std::max(
static_cast<size_t>(128),
87 m_AllocStep ? m_AllocStep : m_buffer.size() / 4);
88 new_size += alloc_step - 1;
89 new_size /= alloc_step;
90 new_size *= alloc_step;
91 m_buffer.resize(new_size.ValueOrDie());
98 ExpandBuf(span.size());
99 fxcrt::Copy(span, pdfium::make_span(m_buffer).subspan(GetSize()));
100 m_DataSize += span.size();
104 AppendSpan(str.unsigned_span());
108 AppendSpan(pdfium::span_from_ref(value));
112 AppendSpan(pdfium::as_bytes(pdfium::span_from_ref(value)));
116 AppendSpan(pdfium::as_bytes(pdfium::span_from_ref(value)));
120 AppendSpan(pdfium::as_bytes(pdfium::span_from_ref(value)));
virtual size_t GetLength() const
void AppendUint8(uint8_t value)
void AppendUint16(uint16_t value)
void AppendSpan(pdfium::span< const uint8_t > span)
pdfium::span< const uint8_t > GetSpan() const
void DeleteBuf(size_t start_index, size_t count)
void AppendDouble(double value)
void ExpandBuf(size_t size)
void AppendString(const ByteString &str)
void EstimateSize(size_t size)
BinaryBuffer & operator=(BinaryBuffer &&that) noexcept
BinaryBuffer(BinaryBuffer &&that) noexcept
void AppendUint32(uint32_t value)
pdfium::span< uint8_t > GetMutableSpan()
DataVector< uint8_t > DetachBuffer()