OpenTTD Source 20260218-master-g2123fca5ea
InPlaceBuilder Class Referencefinal

Builder implementation for InPlaceReplacement. More...

#include <string_inplace.hpp>

Inheritance diagram for InPlaceBuilder:
BaseStringBuilder

Data Structures

class  back_insert_iterator
 Implementation of std::back_insert_iterator for non-growing destination buffer. More...

Public Member Functions

 InPlaceBuilder (const InPlaceBuilder &)=delete
InPlaceBuilderoperator= (const InPlaceBuilder &)=delete
bool AnyBytesWritten () const noexcept
 Check whether any bytes have been written.
size_type GetBytesWritten () const noexcept
 Get number of already written bytes.
std::string_view GetWrittenData () const noexcept
 Get already written data.
bool AnyBytesUnused () const noexcept
 Check whether any unused bytes are left between the Builder and Consumer position.
size_type GetBytesUnused () const noexcept
 Get number of unused bytes left between the Builder and Consumer position.
void PutBuffer (std::span< const char > str) override
 Append buffer.
back_insert_iterator back_inserter ()
 Create a back-insert-iterator.
Public Member Functions inherited from BaseStringBuilder
void Put (std::string_view str)
 Append string.
void PutUint8 (uint8_t value)
 Append binary uint8.
void PutSint8 (int8_t value)
 Append binary int8.
void PutUint16LE (uint16_t value)
 Append binary uint16 using little endian.
void PutSint16LE (int16_t value)
 Append binary int16 using little endian.
void PutUint32LE (uint32_t value)
 Append binary uint32 using little endian.
void PutSint32LE (int32_t value)
 Append binary int32 using little endian.
void PutUint64LE (uint64_t value)
 Append binary uint64 using little endian.
void PutSint64LE (int64_t value)
 Append binary int64 using little endian.
void PutChar (char c)
 Append 8-bit char.
void PutUtf8 (char32_t c)
 Append UTF-8 char.
template<class T>
void PutIntegerBase (T value, int base)
 Append integer 'value' in given number 'base'.

Private Member Functions

 InPlaceBuilder (std::span< char > dest, const StringConsumer &consumer)
 Create this builder.
 InPlaceBuilder (const InPlaceBuilder &src, const StringConsumer &consumer)
 Create this builder based on an existing builder's buffer.
void AssignBuffer (const InPlaceBuilder &src)
 Copy assignment of the buffer and its position.

Private Attributes

std::span< char > dest
 The buffer to process.
size_type position = 0
 The location to write to.
const StringConsumerconsumer
 The string consumer to read with.

Friends

class InPlaceReplacement

Additional Inherited Members

Public Types inherited from BaseStringBuilder
using size_type = std::string_view::size_type
 The type of the size of our strings.

Detailed Description

Builder implementation for InPlaceReplacement.

Definition at line 19 of file string_inplace.hpp.

Constructor & Destructor Documentation

◆ InPlaceBuilder() [1/2]

InPlaceBuilder::InPlaceBuilder ( std::span< char > dest,
const StringConsumer & consumer )
inlineexplicitprivate

Create this builder.

Parameters
destThe buffer to write to.
consumerThe consumer to read with.

Definition at line 31 of file string_inplace.hpp.

References consumer, and dest.

Referenced by AssignBuffer(), InPlaceBuilder::back_insert_iterator::back_insert_iterator(), and InPlaceBuilder().

◆ InPlaceBuilder() [2/2]

InPlaceBuilder::InPlaceBuilder ( const InPlaceBuilder & src,
const StringConsumer & consumer )
inlineprivate

Create this builder based on an existing builder's buffer.

Parameters
srcThe existing builder to use the buffer from.
consumerThe consumer to read with.

Definition at line 38 of file string_inplace.hpp.

References consumer, dest, InPlaceBuilder(), and position.

Member Function Documentation

◆ AnyBytesUnused()

bool InPlaceBuilder::AnyBytesUnused ( ) const
nodiscardnoexcept

Check whether any unused bytes are left between the Builder and Consumer position.

Returns
true iff the number of bytes read from the consumer is bigger than the number of bytes written to this builder.

Definition at line 18 of file string_inplace.cpp.

References consumer, and position.

Referenced by StrMakeValidInPlace().

◆ AnyBytesWritten()

bool InPlaceBuilder::AnyBytesWritten ( ) const
inlinenodiscardnoexcept

Check whether any bytes have been written.

Returns
true if any bytes were written.

Definition at line 53 of file string_inplace.hpp.

◆ AssignBuffer()

void InPlaceBuilder::AssignBuffer ( const InPlaceBuilder & src)
inlineprivate

Copy assignment of the buffer and its position.

Parameters
srcThe builder to copy the information from.

Definition at line 44 of file string_inplace.hpp.

References dest, InPlaceBuilder(), and position.

◆ back_inserter()

back_insert_iterator InPlaceBuilder::back_inserter ( )
inline

Create a back-insert-iterator.

Returns
The back insert iterator.

Definition at line 102 of file string_inplace.hpp.

◆ GetBytesUnused()

InPlaceBuilder::size_type InPlaceBuilder::GetBytesUnused ( ) const
nodiscardnoexcept

Get number of unused bytes left between the Builder and Consumer position.

Returns
The difference between the number of bytes read from the consumer and bytes written to this builder.

Definition at line 27 of file string_inplace.cpp.

References consumer, and position.

Referenced by PutBuffer().

◆ GetBytesWritten()

size_type InPlaceBuilder::GetBytesWritten ( ) const
inlinenodiscardnoexcept

Get number of already written bytes.

Returns
The number of bytes written so far.

Definition at line 58 of file string_inplace.hpp.

Referenced by StrMakeValidInPlace().

◆ GetWrittenData()

std::string_view InPlaceBuilder::GetWrittenData ( ) const
inlinenodiscardnoexcept

Get already written data.

Returns
The part of the buffer we have written so far.

Definition at line 63 of file string_inplace.hpp.

◆ PutBuffer()

void InPlaceBuilder::PutBuffer ( std::span< const char > str)
overridevirtual

Append buffer.

Parameters
strThe string to add to the buffer.

Implements BaseStringBuilder.

Definition at line 36 of file string_inplace.cpp.

References dest, GetBytesUnused(), and position.

◆ InPlaceReplacement

friend class InPlaceReplacement
friend

Definition at line 24 of file string_inplace.hpp.

Field Documentation

◆ consumer

const StringConsumer& InPlaceBuilder::consumer
private

The string consumer to read with.

Definition at line 22 of file string_inplace.hpp.

Referenced by AnyBytesUnused(), GetBytesUnused(), InPlaceBuilder(), and InPlaceBuilder().

◆ dest

std::span<char> InPlaceBuilder::dest
private

The buffer to process.

Definition at line 20 of file string_inplace.hpp.

Referenced by AssignBuffer(), InPlaceBuilder(), InPlaceBuilder(), and PutBuffer().

◆ position

size_type InPlaceBuilder::position = 0
private

The location to write to.

Definition at line 21 of file string_inplace.hpp.

Referenced by AnyBytesUnused(), AssignBuffer(), GetBytesUnused(), InPlaceBuilder(), and PutBuffer().


The documentation for this class was generated from the following files: