29 #ifndef _RTL_STRING_HXX_
30 #define _RTL_STRING_HXX_
44 #if !defined EXCEPTIONS_OFF
53 #ifdef RTL_STRING_UNITTEST
54 #define rtl rtlunittest
60 #ifdef RTL_STRING_UNITTEST
63 #define RTL_STRING_CONST_FUNCTION rtl_string_unittest_const_literal_function = true;
65 #define RTL_STRING_CONST_FUNCTION
102 class DO_NOT_ACQUIRE;
172 #ifdef HAVE_SFINAE_ANONYMOUS_BROKEN
183 template<
typename T >
190 template<
typename T >
207 template<
typename T >
212 #ifdef RTL_STRING_UNITTEST
213 rtl_string_unittest_const_literal =
true;
217 #endif // HAVE_SFINAE_ANONYMOUS_BROKEN
254 #if defined EXCEPTIONS_OFF
257 throw std::bad_alloc();
286 template<
typename T >
370 str.pData->buffer, str.pData->length );
389 rObj.pData->buffer, rObj.pData->length, maxLength );
407 str.pData->buffer, str.pData->length );
423 if ( pData->length != str.pData->length )
425 if ( pData == str.pData )
428 str.pData->buffer, str.pData->length ) == 0;
448 if ( pData->length != length )
452 value, length ) == 0;
471 if ( pData->length != str.pData->length )
473 if ( pData == str.pData )
476 str.pData->buffer, str.pData->length ) == 0;
500 #ifdef HAVE_SFINAE_ANONYMOUS_BROKEN
506 template<
typename T >
512 template<
typename T >
523 template<
typename T >
555 if ( pData->length != asciiStrLength )
559 asciiStr, asciiStrLength ) == 0;
580 str.pData->buffer, str.pData->length, str.pData->length ) == 0;
588 template<
typename T >
593 pData->buffer + fromIndex, pData->length - fromIndex,
614 char const * str, sal_Int32 strLength, sal_Int32 fromIndex = 0)
618 pData->buffer + fromIndex, pData->length - fromIndex,
619 str, strLength, strLength) == 0;
626 #if SAL_TYPES_SIZEOFLONG == 8
651 str.pData->buffer, str.pData->length,
652 str.pData->length ) == 0;
660 template<
typename T >
688 template<
typename T >
693 &&
match(literal,
getLength() - ( internal::ConstCharArrayDetector< T, void >::size - 1 ));
709 bool endsWithL(
char const * str, sal_Int32 strLength)
const {
715 {
return rStr1.equals(rStr2); }
719 {
return rStr1.compareTo( rStr2 ) < 0; }
721 {
return rStr1.compareTo( rStr2 ) > 0; }
723 {
return rStr1.compareTo( rStr2 ) <= 0; }
725 {
return rStr1.compareTo( rStr2 ) >= 0; }
727 template<
typename T >
730 return rStr1.compareTo( value ) == 0;
733 template<
typename T >
736 return rStr1.compareTo( value ) == 0;
739 template<
typename T >
742 return rStr2.compareTo( value ) == 0;
745 template<
typename T >
748 return rStr2.compareTo( value ) == 0;
756 template<
typename T >
770 template<
typename T >
779 template<
typename T >
785 template<
typename T >
791 template<
typename T >
797 template<
typename T >
808 template<
typename T >
811 return !( rStr == literal );
819 template<
typename T >
822 return !( literal == rStr );
853 return (ret < 0 ? ret : ret+fromIndex);
905 str.pData->buffer, str.pData->length );
906 return (ret < 0 ? ret : ret+fromIndex);
914 template<
typename T >
920 return n < 0 ? n : n + fromIndex;
941 sal_Int32
indexOfL(
char const * str, sal_Int32 len, sal_Int32 fromIndex = 0)
945 pData->buffer + fromIndex, pData->length - fromIndex, str, len);
946 return n < 0 ? n : n + fromIndex;
953 #if SAL_TYPES_SIZEOFLONG == 8
975 str.pData->buffer, str.pData->length );
998 str.pData->buffer, str.pData->length );
1012 assert(beginIndex >= 0 && beginIndex <=
getLength());
1013 if ( beginIndex == 0 )
1017 rtl_String* pNew = 0;
1019 return OString( pNew, (DO_NOT_ACQUIRE*)0 );
1036 assert(beginIndex >= 0 && beginIndex <=
getLength() && count >= 0
1037 && sal::static_int_cast<sal_uInt32>(count) <=
1038 sal::static_int_cast<sal_uInt32>(
getLength() - beginIndex));
1039 if ( (beginIndex == 0) && (count ==
getLength()) )
1043 rtl_String* pNew = 0;
1045 return OString( pNew, (DO_NOT_ACQUIRE*)0 );
1059 rtl_String* pNew = 0;
1061 return OString( pNew, (DO_NOT_ACQUIRE*)0 );
1066 return str1.concat( str2 );
1084 rtl_String* pNew = 0;
1086 return OString( pNew, (DO_NOT_ACQUIRE*)0 );
1104 rtl_String* pNew = 0;
1106 return OString( pNew, (DO_NOT_ACQUIRE*)0 );
1128 OString const & from,
OString const & to, sal_Int32 * index = 0)
const
1133 &s, pData, from.pData->buffer, from.pData->length,
1134 to.pData->buffer, to.pData->length, index == 0 ? &i : index);
1154 &s, pData, from.pData->buffer, from.pData->length,
1155 to.pData->buffer, to.pData->length);
1171 rtl_String* pNew = 0;
1173 return OString( pNew, (DO_NOT_ACQUIRE*)0 );
1188 rtl_String* pNew = 0;
1190 return OString( pNew, (DO_NOT_ACQUIRE*)0 );
1206 rtl_String* pNew = 0;
1208 return OString( pNew, (DO_NOT_ACQUIRE*)0 );
1237 rtl_String * pNew = 0;
1239 return OString( pNew, (DO_NOT_ACQUIRE *)0 );
1257 return getToken(count, separator, n);
1281 return pData->buffer[0];
1351 rtl_String* pNewData = 0;
1353 return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
1379 rtl_String* pNewData = 0;
1381 return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
1396 rtl_String* pNewData = 0;
1398 return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
1412 rtl_String* pNewData = 0;
1414 return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
1428 rtl_String* pNewData = 0;
1430 return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
1438 #ifdef RTL_STRING_UNITTEST
1441 typedef rtlunittest::OString OString;
1443 #undef RTL_STRING_CONST_FUNCTION
1466 {
return (
size_t)rString.
hashCode(); }