Lines Matching refs:string

15 /*! String class supporting common string operations. */
56 //! Returns length of given string (but clamps to given maximum).
58 strlen_clamp(const char* string, int32 max)
61 return max <= 0 ? 0 : strnlen(string, max);
67 string_length(const char* string)
69 return string != NULL ? strlen(string) : 0;
73 //! helper function, massages given pointer into a legal c-string:
75 safestr(const char* string)
77 return string != NULL ? string : "";
167 BString::BString(const char* string)
171 _Init(string, strlen(safestr(string)));
175 BString::BString(const BString& string)
180 if (string._IsShareable()) {
181 fPrivateData = string.fPrivateData;
183 // string cannot go away right now
185 _Init(string.String(), string.Length());
189 BString::BString(const char* string, int32 maxLength)
192 _Init(string, strlen_clamp(safestr(string), maxLength));
197 BString::BString(BString&& string) noexcept
199 fPrivateData = string.fPrivateData;
200 string.fPrivateData = NULL;
230 BString::HashValue(const char* string)
234 if (string != NULL) {
235 for (; *string; string++) {
239 h = (h << 4) + *string;
250 BString::operator=(const BString& string)
252 return SetTo(string);
257 BString::operator=(const char* string)
259 if (!string)
260 string = "";
261 if (string != String())
262 SetTo(string, strlen(string));
276 BString::operator=(BString&& string) noexcept
278 if (this != &string) {
280 fPrivateData = string.fPrivateData;
281 string.fPrivateData = NULL;
289 BString::SetTo(const char* string, int32 maxLength)
294 maxLength = strlen_clamp(safestr(string), maxLength);
297 memcpy(fPrivateData, string, maxLength);
304 BString::SetTo(const BString& string)
307 if (fPrivateData == string.fPrivateData)
313 if (string._IsShareable()) {
314 fPrivateData = string.fPrivateData;
316 // the string cannot go away right now
318 _Init(string.String(), string.Length());
335 BString::SetTo(const BString& string, int32 maxLength)
339 if (fPrivateData != string.fPrivateData
341 || (fPrivateData == string.fPrivateData && Length() > maxLength)) {
342 maxLength = min_clamp0(maxLength, string.Length());
344 memcpy(fPrivateData, string.String(), maxLength);
374 BString::SetToChars(const char* string, int32 charCount)
376 return SetTo(string, UTF8CountBytes(string, charCount));
381 BString::SetToChars(const BString& string, int32 charCount)
383 return SetTo(string, UTF8CountBytes(string.String(), charCount));
388 BString::AdoptChars(BString& string, int32 charCount)
390 return Adopt(string, UTF8CountBytes(string.String(), charCount));
553 BString::operator+=(const char* string)
555 if (string) {
556 int32 length = strlen(string);
558 _DoAppend(string, length);
573 BString::Append(const BString& string, int32 length)
575 if (&string != this) {
576 length = min_clamp0(length, string.Length());
578 _DoAppend(string.fPrivateData, length);
585 BString::Append(const char* string, int32 length)
587 if (string) {
588 length = strlen_clamp(string, length);
590 _DoAppend(string, length);
607 BString::AppendChars(const BString& string, int32 charCount)
609 return Append(string, UTF8CountBytes(string.String(), charCount));
614 BString::AppendChars(const char* string, int32 charCount)
616 return Append(string, UTF8CountBytes(string, charCount));
624 BString::Prepend(const char* string)
626 if (string)
627 _DoPrepend(string, strlen(string));
633 BString::Prepend(const BString& string)
635 if (&string != this)
636 _DoPrepend(string.String(), string.Length());
642 BString::Prepend(const char* string, int32 length)
644 if (string)
645 _DoPrepend(string, strlen_clamp(string, length));
651 BString::Prepend(const BString& string, int32 length)
653 if (&string != this)
654 _DoPrepend(string.fPrivateData, min_clamp0(length, string.Length()));
669 BString::PrependChars(const char* string, int32 charCount)
671 return Prepend(string, UTF8CountBytes(string, charCount));
676 BString::PrependChars(const BString& string, int32 charCount)
678 return Prepend(string, UTF8CountBytes(string.String(), charCount));
686 BString::Insert(const char* string, int32 position)
688 if (string != NULL && position <= Length()) {
689 int32 len = int32(strlen(string));
692 string += skipLen;
698 _DoInsert(string, position, len);
705 BString::Insert(const char* string, int32 length, int32 position)
707 if (string != NULL && position <= Length()) {
708 int32 len = strlen_clamp(string, length);
711 string += skipLen;
717 _DoInsert(string, position, len);
724 BString::Insert(const char* string, int32 fromOffset, int32 length,
727 if (string)
728 Insert(string + fromOffset, length, position);
734 BString::Insert(const BString& string, int32 position)
736 if (&string != this && string.Length() > 0)
737 Insert(string.fPrivateData, position);
743 BString::Insert(const BString& string, int32 length, int32 position)
745 if (&string != this && string.Length() > 0)
746 Insert(string.String(), length, position);
752 BString::Insert(const BString& string, int32 fromOffset, int32 length,
755 if (&string != this && string.Length() > 0)
756 Insert(string.String() + fromOffset, length, position);
778 BString::InsertChars(const char* string, int32 charPosition)
780 return Insert(string, UTF8CountBytes(fPrivateData, charPosition));
785 BString::InsertChars(const char* string, int32 charCount, int32 charPosition)
787 return Insert(string, UTF8CountBytes(string, charCount),
793 BString::InsertChars(const char* string, int32 fromCharOffset,
796 int32 fromOffset = UTF8CountBytes(string, fromCharOffset);
797 return Insert(string, fromOffset,
798 UTF8CountBytes(string + fromOffset, charCount),
804 BString::InsertChars(const BString& string, int32 charPosition)
806 return Insert(string, UTF8CountBytes(fPrivateData, charPosition));
811 BString::InsertChars(const BString& string, int32 charCount, int32 charPosition)
813 return Insert(string, UTF8CountBytes(string.String(), charCount),
819 BString::InsertChars(const BString& string, int32 fromCharOffset,
822 int32 fromOffset = UTF8CountBytes(string.String(), fromCharOffset);
823 return Insert(string, fromOffset,
824 UTF8CountBytes(string.String() + fromOffset, charCount),
873 BString::RemoveFirst(const BString& string)
875 if (string.Length() > 0) {
876 int32 pos = _ShortFindAfter(string.String(), string.Length());
878 _ShrinkAtBy(pos, string.Length());
885 BString::RemoveLast(const BString& string)
887 int32 pos = _FindBefore(string.String(), Length(), string.Length());
889 _ShrinkAtBy(pos, string.Length());
896 BString::RemoveAll(const BString& string)
898 if (string.Length() == 0 || Length() == 0 || FindFirst(string) < 0)
904 return _DoReplace(string.String(), "", REPLACE_ALL, 0, KEEP_CASE);
909 BString::RemoveFirst(const char* string)
911 int32 length = string ? strlen(string) : 0;
913 int32 pos = _ShortFindAfter(string, length);
922 BString::RemoveLast(const char* string)
924 int32 length = string ? strlen(string) : 0;
926 int32 pos = _FindBefore(string, Length(), length);
935 BString::RemoveAll(const char* string)
937 if (!string || Length() == 0 || FindFirst(string) < 0)
943 return _DoReplace(string, "", REPLACE_ALL, 0, KEEP_CASE);
1010 BString::operator<(const char* string) const
1012 return strcmp(String(), safestr(string)) < 0;
1017 BString::operator<=(const char* string) const
1019 return strcmp(String(), safestr(string)) <= 0;
1024 BString::operator==(const char* string) const
1026 return strcmp(String(), safestr(string)) == 0;
1031 BString::operator>=(const char* string) const
1033 return strcmp(String(), safestr(string)) >= 0;
1038 BString::operator>(const char* string) const
1040 return strcmp(String(), safestr(string)) > 0;
1048 BString::Compare(const BString& string) const
1050 return strcmp(String(), string.String());
1055 BString::Compare(const char* string) const
1057 return strcmp(String(), safestr(string));
1062 BString::Compare(const BString& string, int32 length) const
1064 return strncmp(String(), string.String(), length);
1069 BString::Compare(const char* string, int32 length) const
1071 return strncmp(String(), safestr(string), length);
1076 BString::CompareAt(size_t offset, const BString& string, int32 length) const
1078 return strncmp(String() + offset, string.String(), length);
1083 BString::CompareChars(const BString& string, int32 charCount) const
1085 return Compare(string, UTF8CountBytes(fPrivateData, charCount));
1090 BString::CompareChars(const char* string, int32 charCount) const
1092 return Compare(string, UTF8CountBytes(fPrivateData, charCount));
1097 BString::ICompare(const BString& string) const
1099 return strcasecmp(String(), string.String());
1104 BString::ICompare(const char* string) const
1106 return strcasecmp(String(), safestr(string));
1111 BString::ICompare(const BString& string, int32 length) const
1113 return strncasecmp(String(), string.String(), length);
1118 BString::ICompare(const char* string, int32 length) const
1120 return strncasecmp(String(), safestr(string), length);
1128 BString::FindFirst(const BString& string) const
1130 return _ShortFindAfter(string.String(), string.Length());
1135 BString::FindFirst(const char* string) const
1137 if (string == NULL)
1140 return _ShortFindAfter(string, strlen(string));
1145 BString::FindFirst(const BString& string, int32 fromOffset) const
1150 return _FindAfter(string.String(), min_clamp0(fromOffset, Length()),
1151 string.Length());
1156 BString::FindFirst(const char* string, int32 fromOffset) const
1158 if (string == NULL)
1164 return _FindAfter(string, min_clamp0(fromOffset, Length()),
1165 strlen(safestr(string)));
1175 // Scans the string until we found the
1176 // character, or we reach the string's start
1197 // Scans the string until we found the
1198 // character, or we reach the string's start
1211 BString::FindFirstChars(const BString& string, int32 fromCharOffset) const
1213 return FindFirst(string, UTF8CountBytes(fPrivateData, fromCharOffset));
1218 BString::FindFirstChars(const char* string, int32 fromCharOffset) const
1220 return FindFirst(string, UTF8CountBytes(fPrivateData, fromCharOffset));
1225 BString::FindLast(const BString& string) const
1227 return _FindBefore(string.String(), Length(), string.Length());
1232 BString::FindLast(const char* string) const
1234 if (string == NULL)
1237 return _FindBefore(string, Length(), strlen(safestr(string)));
1242 BString::FindLast(const BString& string, int32 beforeOffset) const
1247 return _FindBefore(string.String(), min_clamp0(beforeOffset, Length()),
1248 string.Length());
1253 BString::FindLast(const char* string, int32 beforeOffset) const
1255 if (string == NULL)
1261 return _FindBefore(string, min_clamp0(beforeOffset, Length()),
1262 strlen(safestr(string)));
1272 // Scans the string backwards until we found
1273 // the character, or we reach the string's start
1294 // Scans the string backwards until we found
1295 // the character, or we reach the string's start
1308 BString::FindLastChars(const BString& string, int32 beforeCharOffset) const
1310 return FindLast(string, UTF8CountBytes(fPrivateData, beforeCharOffset));
1315 BString::FindLastChars(const char* string, int32 beforeCharOffset) const
1317 return FindLast(string, UTF8CountBytes(fPrivateData, beforeCharOffset));
1322 BString::IFindFirst(const BString& string) const
1324 return _IFindAfter(string.String(), 0, string.Length());
1329 BString::IFindFirst(const char* string) const
1331 if (string == NULL)
1334 return _IFindAfter(string, 0, strlen(safestr(string)));
1339 BString::IFindFirst(const BString& string, int32 fromOffset) const
1344 return _IFindAfter(string.String(), min_clamp0(fromOffset, Length()),
1345 string.Length());
1350 BString::IFindFirst(const char* string, int32 fromOffset) const
1352 if (string == NULL)
1358 return _IFindAfter(string, min_clamp0(fromOffset,Length()),
1359 strlen(safestr(string)));
1364 BString::IFindLast(const BString& string) const
1366 return _IFindBefore(string.String(), Length(), string.Length());
1371 BString::IFindLast(const char* string) const
1373 if (string == NULL)
1376 return _IFindBefore(string, Length(), strlen(safestr(string)));
1381 BString::IFindLast(const BString& string, int32 beforeOffset) const
1386 return _IFindBefore(string.String(), min_clamp0(beforeOffset, Length()),
1387 string.Length());
1392 BString::IFindLast(const char* string, int32 beforeOffset) const
1394 if (string == NULL)
1400 return _IFindBefore(string, min_clamp0(beforeOffset, Length()),
1401 strlen(safestr(string)));
1406 BString::StartsWith(const BString& string) const
1408 return StartsWith(string.String(), string.Length());
1413 BString::StartsWith(const char* string) const
1415 return StartsWith(string, strlen(safestr(string)));
1420 BString::StartsWith(const char* string, int32 length) const
1425 return memcmp(String(), string, length) == 0;
1430 BString::IStartsWith(const BString& string) const
1432 return IStartsWith(string.String(), string.Length());
1437 BString::IStartsWith(const char* string) const
1439 return IStartsWith(string, strlen(safestr(string)));
1444 BString::IStartsWith(const char* string, int32 length) const
1446 if (length > Length() || length > (int32)strlen(safestr(string)))
1449 return _IFindAfter(string, 0, length) == 0;
1454 BString::EndsWith(const BString& string) const
1456 return EndsWith(string.String(), string.Length());
1461 BString::EndsWith(const char* string) const
1463 return EndsWith(string, strlen(safestr(string)));
1468 BString::EndsWith(const char* string, int32 length) const
1474 return memcmp(String() + offset, string, length) == 0;
1479 BString::IEndsWith(const BString& string) const
1481 return IEndsWith(string.String(), string.Length());
1486 BString::IEndsWith(const char* string) const
1488 return IEndsWith(string, strlen(safestr(string)));
1493 BString::IEndsWith(const char* string, int32 length) const
1499 return _IFindBefore(string, Length(), length) == offset;
1902 // mark string as unshareable
2103 const char* string = String();
2105 // string is \0 terminated thus we don't need to check if we reached the end
2107 while (isspace(string[startCount]))
2111 while (endIndex >= startCount && isspace(string[endIndex]))
2137 BString::operator<<(const char* string)
2139 if (string != NULL) {
2140 int32 length = strlen(string);
2142 _DoAppend(string, length);
2149 BString::operator<<(const BString& string)
2151 if (string.Length() > 0)
2152 _DoAppend(string.String(), string.Length());
2277 /*! Detaches this string from an eventually shared fPrivateData, ie. this makes
2278 this string writable.
2297 /*! Makes this string writable, and resizes the buffer to \a length bytes (not
2301 @param copy If true, the current string will be copied into the new string.
2466 BString::_DoAppend(const char* string, int32 length)
2470 strncpy(fPrivateData + oldLength, string, length);
2478 BString::_DoPrepend(const char* string, int32 length)
2484 if (string && length)
2485 strncpy(fPrivateData, string, length);
2493 BString::_DoInsert(const char* string, int32 offset, int32 length)
2499 if (string != NULL && length)
2500 strncpy(fPrivateData + offset, string, length);
2508 BString::_ShortFindAfter(const char* string, int32 len) const
2510 const char* ptr = strstr(String(), string);
2520 BString::_FindAfter(const char* string, int32 offset, int32 length) const
2522 const char* ptr = strstr(String() + offset, string);
2532 BString::_IFindAfter(const char* string, int32 offset, int32 length) const
2534 const char* ptr = strcasestr(String() + offset, string);
2544 BString::_FindBefore(const char* string, int32 offset, int32 length) const
2550 if (!memcmp(ptr, string, length))
2560 BString::_IFindBefore(const char* string, int32 offset, int32 length) const
2566 if (!strncasecmp(ptr1, string, length))
2576 BString::_DoCharacterEscape(const char* string, const char* setOfCharsToEscape,
2579 if (_MakeWritable(string_length(string), false) != B_OK)
2582 memcpy(fPrivateData, string, Length());
2631 BString::_DoCharacterDeescape(const char* string, char escapeChar)
2633 if (_MakeWritable(string_length(string), false) != B_OK)
2636 memcpy(fPrivateData, string, Length());
2722 BString& BString::operator<<(BString& string)
2725 __ls__7BStringR7BString(BString* self, BString& string)
2727 return self->operator<<(string);
2738 BStringRef(BString& string, int32 position);
2755 BStringRef::BStringRef(BString& string, int32 position)
2757 fString(string), fPosition(position)