OpenTTD
Public Types | Public Member Functions
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.
void AppendStr (const char *str)
 Append zero-ended C string.
void Append (const CStrA &src)
 Append another CStrA.
CStrAoperator= (const char *src)
 Assignment from C string.
CStrAoperator= (const CStrA &src)
 Assignment from another CStrA.
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.
int CDECL WARN_FORMAT (2, 3) AddFormat(const char *format
 Add formated string (like sprintf) at the end of existing contents.
- 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.
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.
byte * Append (size_t num_bytes)
 Increase Length() by num_bytes.
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

Additional Inherited Members

- Static Public Attributes inherited from CBlobT< char >
static const size_t type_size
- 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

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(), CBlobT< char >::GetReserve(), GrowSizeNC(), CBlobT< char >::MakeFreeSpace(), and vseprintf().

Referenced by DumpTarget::WriteLine().

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().

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().

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().

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

Assignment from C string.

Definition at line 70 of file str.hpp.

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

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().

int CDECL CStrA::WARN_FORMAT ( ,
 
) const

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


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