OpenTTD
Public Types | Public Member Functions | Data Fields
CStrA Struct Reference

Blob based case sensitive ANSI/UTF-8 string. More...

#include <str.hpp>

Inheritance diagram for CStrA:
CBlobT< char > ByteBlob

Public Types

typedef CBlobT< char > base
 base class
 
- Public Types inherited from CBlobT< char >
typedef ByteBlob base
 

Public Member Functions

 CStrA ()
 Create an empty CStrT.
 
 CStrA (const CStrA &src)
 Copy constructor.
 
 CStrA (const OnTransfer &ot)
 Take over ownership constructor.
 
char * GrowSizeNC (uint count)
 Grow the actual buffer and fix the trailing zero at the end. More...
 
void AppendStr (const char *str)
 Append zero-ended C string. More...
 
void Append (const CStrA &src)
 Append another CStrA. More...
 
CStrAoperator= (const char *src)
 Assignment from C string. More...
 
CStrAoperator= (const CStrA &src)
 Assignment from another CStrA. More...
 
bool operator< (const CStrA &other) const
 Lower-than operator (to support stl collections)
 
int AddFormatL (const char *format, va_list args)
 Add formated string (like vsprintf) at the end of existing contents. More...
 
int CDECL WARN_FORMAT (2, 3) AddFormat(const char *format
 Add formated string (like sprintf) at the end of existing contents. More...
 
int CDECL va_start (args, format)
 
 va_end (args)
 
int CDECL WARN_FORMAT (2, 3) Format(const char *format
 Assign formated string (like sprintf). More...
 
 va_start (args, format)
 
 va_end (args)
 
- Public Member Functions inherited from CBlobT< char >
 CBlobT ()
 Default constructor - makes new Blob ready to accept any data.
 
 CBlobT (const OnTransfer &ot)
 Take ownership constructor.
 
 ~CBlobT ()
 Destructor - ensures that allocated memory (if any) is freed.
 
void CheckIdx (size_t index) const
 Check the validity of item index (only in debug mode)
 
char * Data ()
 Return pointer to the first data item - non-const version.
 
const char * Data () const
 Return pointer to the first data item - const version.
 
char * Data (size_t index)
 Return pointer to the index-th data item - non-const version.
 
const char * Data (size_t index) const
 Return pointer to the index-th data item - const version.
 
size_t Size () const
 Return number of items in the Blob.
 
size_t MaxSize () const
 Return total number of items that can fit in the Blob without buffer reallocation.
 
size_t GetReserve () const
 Return number of additional items that can fit in the Blob without buffer reallocation.
 
char * GrowSizeNC (size_t num_items)
 Grow number of data items in Blob by given number - doesn't construct items.
 
char * MakeFreeSpace (size_t num_items)
 Ensures that given number of items can be added to the end of Blob. More...
 
OnTransfer Transfer ()
 
- Public Member Functions inherited from ByteBlob
 ByteBlob ()
 default constructor - initializes empty blob
 
 ByteBlob (const ByteBlob &src)
 copy constructor
 
 ByteBlob (BlobHeader *const &src)
 move constructor - take ownership of blob data
 
 ~ByteBlob ()
 destructor
 
bool IsEmpty () const
 return true if blob doesn't contain valid data
 
size_t Length () const
 return the number of valid data bytes in the blob
 
size_t Capacity () const
 return the current blob capacity in bytes
 
byte * Begin ()
 return pointer to the first byte of data - non-const version
 
const byte * Begin () const
 return pointer to the first byte of data - const version
 
void Clear ()
 invalidate blob's data - doesn't free buffer
 
void Free ()
 free the blob's memory
 
void AppendRaw (const void *p, size_t num_bytes)
 append new bytes at the end of existing data bytes - reallocates if necessary
 
void AppendRaw (const ByteBlob &src)
 append bytes from given source blob to the end of existing data bytes - reallocates if necessary
 
byte * Prepare (size_t num_bytes)
 Reallocate if there is no free space for num_bytes bytes. More...
 
byte * Append (size_t num_bytes)
 Increase Length() by num_bytes. More...
 
void SmartAlloc (size_t new_size)
 reallocate blob data if needed
 
void FixTail () const
 fixing the four bytes at the end of blob data - useful when blob is used to hold string
 

Data Fields

int ret = AddFormatL(format, args)
 
return ret
 
int CDECL va_list args
 

Additional Inherited Members

- Static Public Attributes inherited from CBlobT< char >
static const size_t type_size
 
- Static Public Attributes inherited from ByteBlob
static const size_t tail_reserve = 4
 four extra bytes will be always allocated and zeroed at the end
 
static const size_t header_size = sizeof(BlobHeader)
 
- Protected Member Functions inherited from ByteBlob
void InitEmpty ()
 initialize the empty blob
 
void Init (BlobHeader *src)
 initialize blob by attaching it to the given header followed by data
 
BlobHeaderHdr ()
 blob header accessor - use it rather than using the pointer arithmetics directly - non-const version
 
const BlobHeaderHdr () const
 blob header accessor - use it rather than using the pointer arithmetics directly - const version
 
size_t & LengthRef ()
 return reference to the actual blob size - used when the size needs to be modified
 
- Static Protected Member Functions inherited from ByteBlob
static BlobHeaderRawAlloc (size_t num_bytes)
 all allocation should happen here
 
static BlobHeaderZero ()
 Return header pointer to the static BlobHeader with both items and capacity containing zero.
 
static size_t AllocPolicy (size_t min_alloc)
 simple allocation policy - can be optimized later
 
static void RawFree (BlobHeader *p)
 all deallocations should happen here
 
- Protected Attributes inherited from ByteBlob
union {
   byte *   data
 ptr to the first byte of data
 
   BlobHeader *   header
 ptr just after the BlobHeader holding items and capacity
 
}; 
 type used as class member
 

Detailed Description

Blob based case sensitive ANSI/UTF-8 string.

Definition at line 22 of file str.hpp.

Member Function Documentation

◆ AddFormatL()

int CStrA::AddFormatL ( const char *  format,
va_list  args 
)
inline

Add formated string (like vsprintf) at the end of existing contents.

Definition at line 95 of file str.hpp.

References ByteBlob::FixTail(), ByteBlob::Free(), CBlobT< char >::GetReserve(), GrowSizeNC(), CBlobT< char >::MakeFreeSpace(), vseprintf(), and WARN_FORMAT().

Referenced by DumpTarget::WriteLine().

◆ Append()

void CStrA::Append ( const CStrA src)
inline

Append another CStrA.

Definition at line 61 of file str.hpp.

References ByteBlob::AppendRaw(), ByteBlob::FixTail(), and ByteBlob::Length().

◆ AppendStr()

void CStrA::AppendStr ( const char *  str)
inline

Append zero-ended C string.

Definition at line 52 of file str.hpp.

References ByteBlob::AppendRaw(), ByteBlob::FixTail(), and StrEmpty().

Referenced by DumpTarget::BeginStruct(), operator=(), and DumpTarget::WriteLine().

◆ GrowSizeNC()

char* CStrA::GrowSizeNC ( uint  count)
inline

Grow the actual buffer and fix the trailing zero at the end.

Definition at line 44 of file str.hpp.

References ByteBlob::FixTail(), and CBlobT< char >::GrowSizeNC().

Referenced by AddFormatL(), and DumpTarget::WriteIndent().

◆ operator=() [1/2]

CStrA& CStrA::operator= ( const char *  src)
inline

Assignment from C string.

Definition at line 70 of file str.hpp.

References AppendStr(), and ByteBlob::Clear().

◆ operator=() [2/2]

CStrA& CStrA::operator= ( const CStrA src)
inline

Assignment from another CStrA.

Definition at line 78 of file str.hpp.

References ByteBlob::AppendRaw(), ByteBlob::Clear(), CBlobT< T >::Data(), ByteBlob::FixTail(), and CBlobT< T >::Size().

◆ WARN_FORMAT() [1/2]

int CDECL CStrA::WARN_FORMAT ( ,
 
) const

Add formated string (like sprintf) at the end of existing contents.

Referenced by AddFormatL().

◆ WARN_FORMAT() [2/2]

int CDECL CStrA::WARN_FORMAT ( ,
 
) const

Assign formated string (like sprintf).

Field Documentation

◆ args

int CDECL va_list CStrA::args
Initial value:

Definition at line 141 of file str.hpp.


The documentation for this struct was generated from the following file: