20 #ifndef INCLUDED_RTL_USTRBUF_HXX 21 #define INCLUDED_RTL_USTRBUF_HXX 34 #ifdef LIBO_INTERNAL_ONLY // "RTL_FAST_STRING" 43 #ifdef RTL_STRING_UNITTEST 44 #define rtl rtlunittest 50 #ifdef RTL_STRING_UNITTEST 78 , nCapacity( value.nCapacity )
95 #if __cplusplus >= 201103L 100 #if SAL_TYPES_SIZEOFLONG == 4 128 , nCapacity( value.getLength() + 16 )
133 template<
typename T >
136 , nCapacity( libreoffice_internal::ConstCharArrayDetector<T>::length + 16 )
144 #ifdef RTL_STRING_UNITTEST 145 rtl_string_unittest_const_literal =
true;
149 #if defined LIBO_INTERNAL_ONLY 167 #ifdef RTL_STRING_UNITTEST 172 template<
typename T >
178 rtl_string_unittest_invalid_conversion =
true;
184 template<
typename T >
190 rtl_string_unittest_invalid_conversion =
true;
194 #ifdef LIBO_INTERNAL_ONLY // "RTL_FAST_STRING" 199 template<
typename T1,
typename T2 >
202 const sal_Int32 l = c.length();
220 nCapacity = value.nCapacity;
231 if (n >= nCapacity) {
232 ensureCapacity(n + 16);
235 pData->buffer,
string.pData->buffer,
248 operator =(T & literal) {
253 if (n >= nCapacity) {
254 ensureCapacity(n + 16);
260 for (sal_Int32 i = 0; i <= n; ++i) {
267 #if defined LIBO_INTERNAL_ONLY 272 operator =(T & literal) {
275 if (n >= nCapacity) {
276 ensureCapacity(n + 16);
287 #if defined LIBO_INTERNAL_ONLY 289 template<
typename T1,
typename T2>
290 OUStringBuffer & operator =(OUStringConcat<T1, T2>
const & concat) {
291 sal_Int32
const n = concat.length();
292 if (n >= nCapacity) {
293 ensureCapacity(n + 16);
295 *concat.addData(pData->buffer) = 0;
331 return pData->length;
344 return pData->length == 0;
398 assert(newLength >= 0);
400 if( newLength != pData->length )
402 if( newLength > nCapacity )
405 pData->buffer[newLength] = 0;
406 pData->length = newLength;
426 assert(index >= 0 && index < pData->length);
427 return pData->buffer[ index ];
443 assert(index >= 0 && index < pData->length);
444 pData->buffer[ index ] = ch;
464 assert(index >= 0 && index < pData->length);
465 return pData->buffer[index];
479 assert(index >= 0 && index < pData->length);
480 return pData->buffer[index];
489 return OUString(pData->buffer, pData->length);
559 assert( len == 0 || str != NULL );
569 template<
typename T >
575 &pData, &nCapacity, getLength(),
581 #if defined LIBO_INTERNAL_ONLY 586 append(T & literal) {
588 &pData, &nCapacity, getLength(),
595 #ifdef LIBO_INTERNAL_ONLY // "RTL_FAST_STRING" 600 template<
typename T1,
typename T2 >
603 sal_Int32 l = c.length();
608 sal_Unicode* end = c.addData( pData->buffer + pData->length );
683 template<
typename T >
730 assert(static_cast< unsigned char >(c) <= 0x7F);
746 return append( &c, 1 );
749 #if LIBO_INTERNAL_ONLY && \ 750 (!defined SAL_W32 || defined __MINGW32__ || defined __clang__) 752 void append(sal_uInt16) =
delete;
839 return insertUtf32(getLength(), c);
858 sal_Int32 n = getLength();
860 return pData->buffer + n;
925 assert( len == 0 || str != NULL );
935 template<
typename T >
941 &pData, &nCapacity, offset,
947 #if defined LIBO_INTERNAL_ONLY 952 insert(sal_Int32 offset, T & literal) {
954 &pData, &nCapacity, offset,
1030 return insert( offset, &u, 1 );
1051 return insert( offset, &c, 1 );
1218 sal_Int32 index = 0;
1219 while((index = indexOf(oldChar, index)) >= 0)
1221 pData->buffer[ index ] = newChar;
1242 sal_Int32 ** pInternalCapacity)
1244 *pInternalData = &pData;
1245 *pInternalCapacity = &nCapacity;
1266 assert( fromIndex >= 0 && fromIndex <= pData->length );
1268 return (ret < 0 ? ret : ret+fromIndex);
1303 assert( fromIndex >= 0 && fromIndex <= pData->length );
1326 assert( fromIndex >= 0 && fromIndex <= pData->length );
1328 str.pData->buffer, str.pData->length );
1329 return (ret < 0 ? ret : ret+fromIndex);
1338 template<
typename T >
1344 pData->buffer + fromIndex, pData->length - fromIndex,
1347 return n < 0 ? n : n + fromIndex;
1350 #if defined LIBO_INTERNAL_ONLY 1352 template<
typename T>
1355 indexOf(T & literal, sal_Int32 fromIndex = 0)
const {
1356 assert(fromIndex >= 0);
1358 pData->buffer + fromIndex, pData->length - fromIndex,
1361 return n < 0 ? n : n + fromIndex;
1385 str.pData->buffer, str.pData->length );
1409 assert( fromIndex >= 0 && fromIndex <= pData->length );
1411 str.pData->buffer, str.pData->length );
1419 template<
typename T >
1425 pData->buffer, pData->length,
1430 #if defined LIBO_INTERNAL_ONLY 1432 template<
typename T>
1435 lastIndexOf(T & literal)
const {
1437 pData->buffer, pData->length,
1455 for(index = 0; index < getLength() ; index++)
1457 if(pData->buffer[ index ] != c)
1480 sal_Int32 result = getLength();
1482 for(index = getLength(); index > 0 ; index--)
1484 if(pData->buffer[ index - 1 ] != c)
1489 if(index < getLength())
1493 return result - getLength();
1506 return stripStart(c) + stripEnd(c);
1521 return copy( beginIndex, getLength() - beginIndex );
1539 assert(beginIndex >= 0 && beginIndex <= getLength());
1540 assert(count >= 0 && count <= getLength() - beginIndex);
1541 rtl_uString *pNew = NULL;
1550 nCapacity = capacity;
1556 rtl_uString * pData;
1561 sal_Int32 nCapacity;
1566 #ifdef RTL_STRING_UNITTEST 1573 #if defined LIBO_INTERNAL_ONLY && !defined RTL_STRING_UNITTEST 1574 using ::rtl::OUStringBuffer;
1577 #endif // INCLUDED_RTL_USTRBUF_HXX sal_Int32 indexOf(sal_Unicode ch, sal_Int32 fromIndex=0) const
Returns the index within this string of the first occurrence of the specified character, starting the search at the specified index.
Definition: ustrbuf.hxx:1264
SAL_DLLPUBLIC sal_Int32 rtl_ustr_indexOfStr_WithLength(const sal_Unicode *str, sal_Int32 len, const sal_Unicode *subStr, sal_Int32 subLen) SAL_THROW_EXTERN_C()
Search for the first occurrence of a substring within a string.
sal_Int32 strip(sal_Unicode c=(sal_Unicode)' ')
Strip the given character from the both end of the buffer.
Definition: ustrbuf.hxx:1504
SAL_DLLPUBLIC sal_Int32 rtl_ustr_lastIndexOfAscii_WithLength(sal_Unicode const *str, sal_Int32 len, char const *subStr, sal_Int32 subLen) SAL_THROW_EXTERN_C()
Search for the last occurrence of an ASCII substring within a string.
OUStringBuffer & insert(sal_Int32 offset, sal_Bool b)
Inserts the string representation of the sal_Bool argument into this string buffer.
Definition: ustrbuf.hxx:978
SAL_DLLPUBLIC sal_Int32 rtl_ustr_getLength(const sal_Unicode *str) SAL_THROW_EXTERN_C()
Return the length of a string.
OUStringBuffer()
Constructs a string buffer with no characters in it and an initial capacity of 16 characters...
Definition: ustrbuf.hxx:63
sal_Int32 stripEnd(sal_Unicode c=(sal_Unicode)' ')
Strip the given character from the end of the buffer.
Definition: ustrbuf.hxx:1478
SAL_DLLPUBLIC void rtl_uStringbuffer_insert(rtl_uString **This, sal_Int32 *capacity, sal_Int32 offset, const sal_Unicode *str, sal_Int32 len)
Inserts the string representation of the str array argument into this string buffer.
Definition: stringutils.hxx:158
OUStringBuffer insert(sal_Int32 offset, float f)
Inserts the string representation of the float argument into this string buffer.
Definition: ustrbuf.hxx:1122
OUStringBuffer & append(double d)
Appends the string representation of the double argument to this string buffer.
Definition: ustrbuf.hxx:819
OUStringBuffer & insert(sal_Int32 offset, const sal_Unicode *str)
Inserts the string representation of the char array argument into this string buffer.
Definition: ustrbuf.hxx:900
OUStringBuffer & append(sal_Int64 l, sal_Int16 radix=10)
Appends the string representation of the long argument to this string buffer.
Definition: ustrbuf.hxx:785
libreoffice_internal::ConstCharArrayDetector< T, OUStringBuffer &>::Type append(T &literal)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: ustrbuf.hxx:570
OUStringBuffer & insert(sal_Int32 offset, char c)
Inserts the string representation of the char argument into this string buffer.
Definition: ustrbuf.hxx:1027
SAL_DLLPUBLIC sal_Int32 rtl_ustr_valueOfFloat(sal_Unicode *str, float f) SAL_THROW_EXTERN_C()
Create the string representation of a float.
OUStringBuffer & append(const sal_Unicode *str, sal_Int32 len)
Appends the string representation of the char array argument to this string buffer.
Definition: ustrbuf.hxx:557
SAL_DLLPUBLIC sal_Int32 rtl_ustr_indexOfAscii_WithLength(sal_Unicode const *str, sal_Int32 len, char const *subStr, sal_Int32 subLen) SAL_THROW_EXTERN_C()
Search for the first occurrence of an ASCII substring within a string.
OUStringBuffer & appendAscii(const sal_Char *str)
Appends a 8-Bit ASCII character string to this string buffer.
Definition: ustrbuf.hxx:631
SAL_DLLPUBLIC rtl_uString * rtl_uStringBuffer_makeStringAndClear(rtl_uString **ppThis, sal_Int32 *nCapacity)
Returns an immutable rtl_uString object, while clearing the string buffer.
#define RTL_USTR_MAX_VALUEOFINT32
Definition: ustring.h:957
void ensureCapacity(sal_Int32 minimumCapacity)
Ensures that the capacity of the buffer is at least equal to the specified minimum.
Definition: ustrbuf.hxx:373
void setLength(sal_Int32 newLength)
Sets the length of this String buffer.
Definition: ustrbuf.hxx:396
#define SAL_DELETED_FUNCTION
short-circuit extra-verbose API namespaces
Definition: types.h:410
SAL_DLLPUBLIC sal_Int32 rtl_ustr_valueOfInt32(sal_Unicode *str, sal_Int32 i, sal_Int16 radix) SAL_THROW_EXTERN_C()
Create the string representation of an integer.
SAL_DLLPUBLIC sal_Int32 rtl_ustr_indexOfChar_WithLength(const sal_Unicode *str, sal_Int32 len, sal_Unicode ch) SAL_THROW_EXTERN_C()
Search for the first occurrence of a character within a string.
OUStringBuffer & insert(sal_Int32 offset, bool b)
Inserts the string representation of the bool argument into this string buffer.
Definition: ustrbuf.hxx:1003
SAL_DLLPUBLIC void rtl_uStringbuffer_remove(rtl_uString **This, sal_Int32 start, sal_Int32 len)
Removes the characters in a substring of this sequence.
#define SAL_DEPRECATED(message)
Use as follows: SAL_DEPRECATED("Don't use, it's evil.") void doit(int nPara);.
Definition: types.h:509
#define SAL_WARN_UNUSED
Annotate classes where a compiler should warn if an instance is unused.
Definition: types.h:624
SAL_DLLPUBLIC sal_Int32 rtl_ustr_valueOfInt64(sal_Unicode *str, sal_Int64 l, sal_Int16 radix) SAL_THROW_EXTERN_C()
Create the string representation of a long integer.
SAL_DLLPUBLIC void rtl_uStringbuffer_newFromStr_WithLength(rtl_uString **newStr, const sal_Unicode *value, sal_Int32 count)
Allocates a new String that contains characters from the character array argument.
OUStringBuffer & insert(sal_Int32 offset, sal_Unicode c)
Inserts the string representation of the char argument into this string buffer.
Definition: ustrbuf.hxx:1049
Definition: stringutils.hxx:267
bool isEmpty() const
Checks if a string buffer is empty.
Definition: ustrbuf.hxx:342
OUStringBuffer & append(sal_Bool b)
Appends the string representation of the sal_Bool argument to the string buffer.
Definition: ustrbuf.hxx:710
void accessInternals(rtl_uString ***pInternalData, sal_Int32 **pInternalCapacity)
Allows access to the internal data of this OUStringBuffer, for effective manipulation.
Definition: ustrbuf.hxx:1241
#define RTL_USTR_MAX_VALUEOFBOOLEAN
Definition: ustring.h:915
SAL_DLLPUBLIC sal_Int32 rtl_ustr_valueOfDouble(sal_Unicode *str, double d) SAL_THROW_EXTERN_C()
Create the string representation of a double.
sal_Int32 lastIndexOf(sal_Unicode ch, sal_Int32 fromIndex) const
Returns the index within this string of the last occurrence of the specified character, searching backward starting before the specified index.
Definition: ustrbuf.hxx:1301
sal_Int32 getLength() const
Returns the length (character count) of this string buffer.
Definition: ustrbuf.hxx:329
sal_Unicode * appendUninitialized(sal_Int32 length)
Unsafe way to make space for a fixed amount of characters to be appended into this OUStringBuffer...
Definition: ustrbuf.hxx:857
OUStringBuffer & truncate(sal_Int32 start=0)
Removes the tail of a string buffer start at the indicate position.
Definition: ustrbuf.hxx:1200
~OUStringBuffer()
Release the string data.
Definition: ustrbuf.hxx:304
OUStringBuffer & append(sal_Unicode c)
Appends the string representation of the char argument to this string buffer.
Definition: ustrbuf.hxx:744
sal_Int32 getCapacity() const
Returns the current capacity of the String buffer.
Definition: ustrbuf.hxx:357
OUStringBuffer & append(rtl_uString *str)
Definition: ustrbuf.hxx:694
OUStringBuffer & append(char c)
Appends the string representation of the ASCII char argument to this string buffer.
Definition: ustrbuf.hxx:728
OUStringBuffer & append(const sal_Unicode *str)
Appends the string representation of the char array argument to this string buffer.
Definition: ustrbuf.hxx:539
sal_Int32 lastIndexOf(const OUString &str, sal_Int32 fromIndex) const
Returns the index within this string of the last occurrence of the specified substring, searching backward starting before the specified index.
Definition: ustrbuf.hxx:1407
const OUString toString() const
Return a OUString instance reflecting the current content of this OUStringBuffer. ...
Definition: ustrbuf.hxx:487
sal_uInt16 sal_Unicode
Definition: types.h:155
OUStringBuffer copy(sal_Int32 beginIndex) const
Returns a new string buffer that is a substring of this string.
Definition: ustrbuf.hxx:1519
libreoffice_internal::ConstCharArrayDetector< T, sal_Int32 >::Type indexOf(T &literal, sal_Int32 fromIndex=0) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: ustrbuf.hxx:1339
#define RTL_USTR_MAX_VALUEOFINT64
Definition: ustring.h:1003
unsigned char sal_Bool
Definition: types.h:48
OUStringBuffer & append(const OUString &str)
Appends the string to this string buffer.
Definition: ustrbuf.hxx:502
OUStringBuffer & replace(sal_Unicode oldChar, sal_Unicode newChar)
Replace all occurrences of oldChar in this string buffer with newChar.
Definition: ustrbuf.hxx:1216
OUStringBuffer & appendUtf32(sal_uInt32 c)
Appends a single UTF-32 character to this string buffer.
Definition: ustrbuf.hxx:838
Definition: stringutils.hxx:248
OUStringBuffer(const OUStringBuffer &value)
Allocates a new string buffer that contains the same sequence of characters as the string buffer argu...
Definition: ustrbuf.hxx:76
Definition: stringutils.hxx:117
const sal_Unicode * getStr() const
Return a null terminated unicode character array.
Definition: ustrbuf.hxx:451
OUStringBuffer & append(const OUStringBuffer &str)
Appends the content of a stringbuffer to this string buffer.
Definition: ustrbuf.hxx:519
sal_Int32 lastIndexOf(const OUString &str) const
Returns the index within this string of the last occurrence of the specified substring, searching backward starting at the end.
Definition: ustrbuf.hxx:1382
SAL_DLLPUBLIC sal_Int32 rtl_ustr_lastIndexOfChar_WithLength(const sal_Unicode *str, sal_Int32 len, sal_Unicode ch) SAL_THROW_EXTERN_C()
Search for the last occurrence of a character within a string.
OUStringBuffer copy(sal_Int32 beginIndex, sal_Int32 count) const
Returns a new string buffer that is a substring of this string.
Definition: ustrbuf.hxx:1537
OUStringBuffer & insertUtf32(sal_Int32 offset, sal_uInt32 c)
Inserts a single UTF-32 character into this string buffer.
Definition: ustrbuf.hxx:1167
OUStringBuffer & append(bool b)
Appends the string representation of the bool argument to the string buffer.
Definition: ustrbuf.hxx:673
SAL_DLLPUBLIC sal_Int32 rtl_str_getLength(const sal_Char *str) SAL_THROW_EXTERN_C()
Return the length of a string.
sal_Int32 stripStart(sal_Unicode c=(sal_Unicode)' ')
Strip the given character from the start of the buffer.
Definition: ustrbuf.hxx:1452
OUStringBuffer(T &literal, typename libreoffice_internal::ConstCharArrayDetector< T, libreoffice_internal::Dummy >::Type=libreoffice_internal::Dummy())
Definition: ustrbuf.hxx:134
SAL_DLLPUBLIC void rtl_uStringbuffer_insert_ascii(rtl_uString **This, sal_Int32 *capacity, sal_Int32 offset, const sal_Char *str, sal_Int32 len)
Inserts the 8-Bit ASCII string representation of the str array argument into this string buffer...
libreoffice_internal::ConstCharArrayDetector< T, OUStringBuffer &>::Type insert(sal_Int32 offset, T &literal)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: ustrbuf.hxx:936
definition of a no acquire enum for ctors
Definition: types.h:388
OUStringBuffer & appendAscii(const sal_Char *str, sal_Int32 len)
Appends a 8-Bit ASCII character string to this string buffer.
Definition: ustrbuf.hxx:654
SAL_DLLPUBLIC sal_Int32 rtl_ustr_valueOfBoolean(sal_Unicode *str, sal_Bool b) SAL_THROW_EXTERN_C()
Create the string representation of a boolean.
OUStringBuffer & insert(sal_Int32 offset, sal_Int64 l, sal_Int16 radix=10)
Inserts the string representation of the long argument into this string buffer.
Definition: ustrbuf.hxx:1098
This String class provides base functionality for C++ like Unicode character array handling...
Definition: ustring.hxx:106
libreoffice_internal::ConstCharArrayDetector< T, sal_Int32 >::Type lastIndexOf(T &literal) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: ustrbuf.hxx:1420
SAL_DLLPUBLIC void rtl_uString_new_WithLength(rtl_uString **newStr, sal_Int32 nLen) SAL_THROW_EXTERN_C()
Allocate a new string containing space for a given number of characters.
SAL_DLLPUBLIC sal_Int32 rtl_ustr_lastIndexOfStr_WithLength(const sal_Unicode *str, sal_Int32 len, const sal_Unicode *subStr, sal_Int32 subLen) SAL_THROW_EXTERN_C()
Search for the last occurrence of a substring within a string.
OUStringBuffer & insert(sal_Int32 offset, double d)
Inserts the string representation of the double argument into this string buffer. ...
Definition: ustrbuf.hxx:1146
OUStringBuffer & insert(sal_Int32 offset, sal_Int32 i, sal_Int16 radix=10)
Inserts the string representation of the second sal_Int32 argument into this string buffer...
Definition: ustrbuf.hxx:1073
OUStringBuffer(const OUString &value)
Constructs a string buffer so that it represents the same sequence of characters as the string argume...
Definition: ustrbuf.hxx:126
OUStringBuffer & append(sal_Int32 i, sal_Int16 radix=10)
Appends the string representation of the sal_Int32 argument to this string buffer.
Definition: ustrbuf.hxx:767
OUStringBuffer & insert(sal_Int32 offset, const OUString &str)
Inserts the string into this string buffer.
Definition: ustrbuf.hxx:878
OUStringBuffer(int length)
Constructs a string buffer with no characters in it and an initial capacity specified by the length a...
Definition: ustrbuf.hxx:89
char sal_Char
A legacy synonym for char.
Definition: types.h:130
#define RTL_USTR_MAX_VALUEOFFLOAT
Definition: ustring.h:1022
SAL_DLLPUBLIC void rtl_uString_newFromLiteral(rtl_uString **newStr, const sal_Char *value, sal_Int32 len, sal_Int32 allocExtra) SAL_THROW_EXTERN_C()
OUStringBuffer & append(float f)
Appends the string representation of the float argument to this string buffer.
Definition: ustrbuf.hxx:802
OUStringBuffer & insert(sal_Int32 offset, const sal_Unicode *str, sal_Int32 len)
Inserts the string representation of the char array argument into this string buffer.
Definition: ustrbuf.hxx:923
SAL_DLLPUBLIC sal_Int32 rtl_uStringbuffer_newFromStringBuffer(rtl_uString **newStr, sal_Int32 capacity, rtl_uString *oldStr)
Allocates a new String that contains the same sequence of characters as the string argument...
#define RTL_USTR_MAX_VALUEOFDOUBLE
Definition: ustring.h:1041
Definition: stringutils.hxx:115
const sal_Unicode * getStr() const
Returns a pointer to the Unicode character buffer for this string.
Definition: ustring.hxx:628
A string buffer implements a mutable sequence of characters.
Definition: ustrbuf.hxx:56
SAL_DLLPUBLIC void rtl_uStringbuffer_insertUtf32(rtl_uString **pThis, sal_Int32 *capacity, sal_Int32 offset, sal_uInt32 c) SAL_THROW_EXTERN_C()
Inserts a single UTF-32 character into this string buffer.
Definition: bootstrap.hxx:29
SAL_DLLPUBLIC void rtl_uString_release(rtl_uString *str) SAL_THROW_EXTERN_C() SAL_HOT
Decrement the reference count of a string.
sal_Int32 getLength() const
Returns the length of this string.
Definition: ustring.hxx:606
sal_Int32 lastIndexOf(sal_Unicode ch) const
Returns the index within this string of the last occurrence of the specified character, searching backward starting at the end.
Definition: ustrbuf.hxx:1282
SAL_DLLPUBLIC rtl_uString * rtl_uString_alloc(sal_Int32 nLen) SAL_THROW_EXTERN_C()
Allocate a new string containing space for a given number of characters.
SAL_DLLPUBLIC void rtl_uStringbuffer_ensureCapacity(rtl_uString **This, sal_Int32 *capacity, sal_Int32 minimumCapacity)
Ensures that the capacity of the buffer is at least equal to the specified minimum.
OUString makeStringAndClear()
Fill the string data in the new string and clear the buffer.
Definition: ustrbuf.hxx:317
sal_Int32 indexOf(const OUString &str, sal_Int32 fromIndex=0) const
Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.
Definition: ustrbuf.hxx:1324