CStringInterface Class Reference

#include <string.h>

Inheritance diagram for CStringInterface:

Detailed Description

Class to store ASCII strings. CString stores 8 bit characters. Any characters are legal, including 0C (strings are not null-terminated). CStrings are reference-counted objects. This means that as long as you copy and do not modify strings they are just referenced. The first modification breaks the link and it becomes a unique new object.

@MAXON_ANNOTATION{refclass=false}

Public Member Functions

MAXON_METHOD Result< IntGetCStringBlock (const Block< Char > &buffer) const
 
MAXON_METHOD Result< void > GetCStringAppendArray (const NonConstArray< Char > &array) const
 
MAXON_METHOD Result< Block< Char > > Disconnect ()
 
MAXON_METHOD Result< void > SetCString (const Char *buffer, Int count=-1)
 
MAXON_FUNCTION Result< void > SetCString (const Block< const Char > &buffer)
 
MAXON_METHOD Result< BaseArray< Char > > GetCString () const
 
String ToString (const FormatStatement *formatStatement=nullptr) const
 
MAXON_METHOD Block< const CharGetInternalData () const
 
- Public Member Functions inherited from StringTemplate< CStringInterface, CString, Char >
MAXON_METHOD Int GetLength () const
 
MAXON_METHOD Result< void > Init (Int count=0, Char fillChar=0)
 
MAXON_METHOD Result< void > Shrink ()
 
MAXON_METHOD Result< void > Append (const CStringInterface *str)
 
MAXON_FUNCTION Result< void > Append (const CString &str)
 
MAXON_METHOD Result< void > Append (const Char *str, Int len)
 
MAXON_FUNCTION Result< void > Append (const Block< const Char > &block)
 
MAXON_FUNCTION Result< void > AppendChar (Char v)
 
MAXON_METHOD Int FindIndex (const CStringInterface *str, StringPosition start=0) const
 
MAXON_METHOD Int FindIndex (Char ch, StringPosition start=0) const
 
MAXON_METHOD Int FindLastIndex (const CStringInterface *str, StringPosition start=StringEnd()) const
 
MAXON_METHOD Int FindLastIndex (Char ch, StringPosition start=StringEnd()) const
 
MAXON_METHOD Int FindUpperIndex (const CStringInterface *str, StringPosition start=0) const
 
MAXON_METHOD Int FindLastUpperIndex (const CStringInterface *str, StringPosition start=StringEnd()) const
 
MAXON_METHOD Result< void > Erase (StringPosition position, StringCount count)
 
MAXON_METHOD Result< void > Insert (StringPosition position, const CStringInterface *str, StringPosition strStart=0, StringCount strCount=StringEnd())
 
MAXON_METHOD Result< void > Insert (StringPosition position, Char ch)
 
MAXON_METHOD CStringInterfaceGetPart (StringPosition start, StringCount count) const
 
MAXON_METHOD CStringInterfaceToUpper () const
 
MAXON_METHOD CStringInterfaceToLower () const
 
MAXON_METHOD COMPARERESULT ComparePart (const CStringInterface *str, STRINGCOMPARISON mode, StringPosition position, StringCount count) const
 
MAXON_FUNCTION COMPARERESULT Compare (const CStringInterface *str, STRINGCOMPARISON mode=STRINGCOMPARISON::UNICODE_NUMBERS) const
 
MAXON_FUNCTION Bool IsEqual (const CStringInterface *str) const
 
MAXON_METHOD HashInt GetHashCode () const
 
MAXON_METHOD UniqueHash GetUniqueHashCode () const
 
MAXON_METHOD void SetChar (Int pos, Char ch)
 
MAXON_METHOD Char GetChar (Int pos) const
 
MAXON_FUNCTION Result< Float64ToFloat64 (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION Result< Float32ToFloat32 (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION Result< FloatToFloat (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION Result< Int64ToInt64 (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION Result< Int32ToInt32 (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION Result< IntToInt (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION Result< UInt64ToUInt64 (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION Result< UInt32ToUInt32 (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION Result< UIntToUInt (STRINGCONVERSION flags=STRINGCONVERSION::NONE) const
 
MAXON_FUNCTION CStringInterfaceAppendInt (Int32 v)
 
MAXON_FUNCTION CStringInterfaceAppendInt (Int64 v)
 
MAXON_FUNCTION CStringInterfaceAppendUInt (UInt32 v)
 
MAXON_FUNCTION CStringInterfaceAppendUInt (UInt64 v)
 
MAXON_METHOD Result< void > GetUtf32 (Utf32CharBuffer &stringData) const
 
MAXON_METHOD Result< void > TrimLeft ()
 
MAXON_METHOD Result< void > TrimRight ()
 
MAXON_METHOD Result< void > Split (const CString &splitSymbol, Bool trim, const ValueReceiver< const CString & > &parts) const
 
MAXON_METHOD Result< IntReplace (Char find, Char replace)
 
MAXON_METHOD Result< IntReplace (const CString &find, const CString &replace)
 
MAXON_METHOD Result< IntReplace (Char find, const CString &replace)
 
MAXON_FUNCTION Bool Find (const CString &str, Int *pos, StringPosition start=0) const
 
MAXON_FUNCTION Bool Find (Char ch, Int *pos, StringPosition start=0) const
 
MAXON_FUNCTION Bool FindLast (const CString &str, Int *pos, StringPosition start=StringEnd()) const
 
MAXON_FUNCTION Bool FindLast (Char ch, Int *pos, StringPosition start=StringEnd()) const
 
MAXON_FUNCTION Bool FindUpper (const CString &str, Int *pos, StringPosition start=0) const
 
MAXON_FUNCTION Bool FindLastUpper (const CString &str, Int *pos, StringPosition start=StringEnd()) const
 
MAXON_FUNCTION CStringInterfaceGetLeftPart (StringPosition start) const
 
MAXON_FUNCTION CStringInterfaceGetRightPart (StringPosition start) const
 
MAXON_FUNCTION Bool StartsWith (Char ch) const
 
MAXON_FUNCTION Bool StartsWith (const CString &str) const
 
MAXON_FUNCTION Bool EndsWith (Char ch) const
 
MAXON_FUNCTION Bool EndsWith (const CString &str) const
 
MAXON_FUNCTION Result< void > Trim ()
 

Static Public Member Functions

static MAXON_METHOD const CStringGetAndCacheConstString (const Char *chr, Int len)
 
template<typename T >
static MAXON_ATTRIBUTE_FORCE_INLINE const CStringGetAndCacheConstStringT (const T *chr, Int len)
 
- Static Public Member Functions inherited from StringTemplate< CStringInterface, CString, Char >
static MAXON_FUNCTION CString FloatToString (Float32 value, Int charsBeforeComma=STRING_DYNAMIC_DIGITS, Int digitsAfterComma=-3, Bool exponent=false, Char fillChar=' ')
 
static MAXON_FUNCTION CString FloatToString (Float64 value, Int charsBeforeComma=STRING_DYNAMIC_DIGITS, Int digitsAfterComma=-3, Bool exponent=false, Char fillChar=' ')
 
static MAXON_FUNCTION CString IntToString (Int32 v)
 
static MAXON_FUNCTION CString IntToString (Int64 v)
 
static MAXON_FUNCTION CString UIntToString (UInt32 v)
 
static MAXON_FUNCTION CString UIntToString (UInt64 v)
 
static MAXON_FUNCTION CString MemorySizeToString (Int64 v, Bool mebibytes=true)
 
static MAXON_FUNCTION CString HexToString (UInt32 v, Bool prefix0x=true)
 
static MAXON_FUNCTION CString HexToString (UInt64 v, Bool prefix0x=true)
 
static MAXON_FUNCTION CString PointerToString (const void *v)
 

Private Member Functions

 MAXON_INTERFACE_NONVIRTUAL (CStringInterface, MAXON_REFERENCE_COPY_ON_WRITE, "net.maxon.interface.cstring", MAXON_IMPLEMENTATION_MODULE("net.maxon.kernel"))
 

Additional Inherited Members

- Public Types inherited from StringTemplate< CStringInterface, CString, Char >
using Super = StringTemplate
 
using CharType = Char
 

Member Function Documentation

◆ MAXON_INTERFACE_NONVIRTUAL()

MAXON_INTERFACE_NONVIRTUAL ( CStringInterface  ,
MAXON_REFERENCE_COPY_ON_WRITE  ,
"net.maxon.interface.cstring"  ,
MAXON_IMPLEMENTATION_MODULE("net.maxon.kernel")   
)
private

◆ GetCStringBlock()

MAXON_METHOD Result<Int> GetCStringBlock ( const Block< Char > &  buffer) const

Copies the string into 'buffer'.

Parameters
[in,out]bufferBlock describing the buffer. A \0 byte will be appended to the string in any case.
Returns
The length of the corresponding 8-bit string for the given encoding. the \0 byte is not counted.

◆ GetCStringAppendArray()

MAXON_METHOD Result<void> GetCStringAppendArray ( const NonConstArray< Char > &  array) const

Appends the string to the given array.

Parameters
[in,out]arrayArray to be filled with the string. The string is NOT terminated with a \0 byte.
Returns
OK on success.

◆ Disconnect()

MAXON_METHOD Result<Block<Char> > Disconnect ( )

Disconnected the cstring internally and returns the memory

Returns
The length of the corresponding 8-bit string for the given encoding. the \0 byte is not counted.

◆ SetCString() [1/2]

MAXON_METHOD Result<void> SetCString ( const Char buffer,
Int  count = -1 
)

Initializes the string with a given 8-bit Char string (the CString will contain an exact copy of the buffer, there's no encoding to a different character set).

Parameters
[out]bufferPointer to the 8-bit character string.
[in]countNumber of valid characters in the buffer, a value of -1 automatically detects the string length by searching for the first \0 character, otherwise count is relevant and not \0.
Returns
OK on success.

◆ SetCString() [2/2]

MAXON_FUNCTION Result<void> SetCString ( const Block< const Char > &  buffer)

Initializes the string with a given 8-bit Char string with the given encoding.

Parameters
[out]bufferBlock with an 8-bit character string.
Returns
OK on success.

◆ GetCString()

MAXON_METHOD Result<BaseArray<Char> > GetCString ( ) const

Returns a copy of the C string in a new memory block. If a string is empty this function returns a string with a terminating null character.

Returns
BaseArray<Char> with the encoded string. The string is \0 - terminated, so the last character in the array is \0.

◆ ToString()

String ToString ( const FormatStatement formatStatement = nullptr) const

Returns a readable string of the content.

Parameters
[in]formatStatementNullptr or additional formatting instruction. Currently no additional formatting instructions are supported.
Returns
The converted result.

◆ GetInternalData()

MAXON_METHOD Block<const Char> GetInternalData ( ) const

Returns the internal character array.

Returns
Block describing the internal character buffer. The data is read only!

◆ GetAndCacheConstString()

static MAXON_METHOD const CString& GetAndCacheConstString ( const Char chr,
Int  len 
)
static

Internal. Caches a static constant string and returns a maxon::CString.

◆ GetAndCacheConstStringT()

static MAXON_ATTRIBUTE_FORCE_INLINE const CString& GetAndCacheConstStringT ( const T *  chr,
Int  len 
)
static