void nsTSubstring_CharT::ReplaceASCII( index_type cutStart, size_type cutLength, const char* data, size_type length ) { if (length == size_type(-1)) length = strlen(data); // A Unicode string can't depend on an ASCII string buffer, // so this dependence check only applies to CStrings. #ifdef CharT_is_char if (IsDependentOn(data, data + length)) { nsTAutoString_CharT temp(data, length); Replace(cutStart, cutLength, temp); return; } #endif cutStart = XPCOM_MIN(cutStart, Length()); if (ReplacePrep(cutStart, cutLength, length) && length > 0) char_traits::copyASCII(mData + cutStart, data, length); }
bool nsTSubstring_CharT::Assign( const char_type* data, size_type length, const fallible_t& ) { if (!data) { Truncate(); return true; } if (length == size_type(-1)) length = char_traits::length(data); if (IsDependentOn(data, data + length)) { return Assign(string_type(data, length), fallible_t()); } if (!ReplacePrep(0, mLength, length)) return false; char_traits::copy(mData, data, length); return true; }
void nsTSubstring_CharT::Assign( const char_type* data, size_type length ) { // unfortunately, some callers pass null :-( if (!data) { Truncate(); return; } if (length == size_type(-1)) length = char_traits::length(data); if (IsDependentOn(data, data + length)) { // take advantage of sharing here... Assign(string_type(data, length)); return; } if (ReplacePrep(0, mLength, length)) char_traits::copy(mData, data, length); }
// This version of Assign is optimized for single-character assignment. void nsTSubstring_CharT::Assign( char_type c ) { if (ReplacePrep(0, mLength, 1)) *mData = c; }