755 {
757 if (count == 0) return *this;
758
759
762 }
763
764 fl::size newLen =
mLength + count;
765
766
771 for (fl::size i = 0; i < count; ++i) newData->data()[
pos + i] = ch;
773 newData->data()[newLen] = '\0';
776 return *this;
777 }
778
779
783 }
787 return *this;
788 }
789
790
792 if (canInsertInPlace) {
794 canInsertInPlace = heap.get().use_count() <= 1 && heap->hasCapacity(newLen);
795 if (canInsertInPlace) {
796 char*
data = heap->data();
798 for (fl::size i = 0; i < count; ++i)
data[
pos + i] = ch;
801 }
802 }
803 if (!canInsertInPlace) {
805 const char* src =
c_str();
807 for (fl::size i = 0; i < count; ++i) newData->data()[
pos + i] = ch;
809 newData->data()[newLen] = '\0';
812 }
813 return *this;
814}
bool isNonOwning() const FL_NOEXCEPT
bool hasHeapData() const FL_NOEXCEPT
void materialize() FL_NOEXCEPT
NotNullStringHolderPtr & heapData() FL_NOEXCEPT
const char * data() const FL_NOEXCEPT
fl::variant< NotNullStringHolderPtr, ConstLiteral, ConstView > mStorage
char * inlineBufferPtr() FL_NOEXCEPT
const char * c_str() const FL_NOEXCEPT
void * memcpy(void *dest, const void *src, size_t n) FL_NOEXCEPT
fl::not_null< StringHolderPtr > NotNullStringHolderPtr
void * memmove(void *dest, const void *src, size_t n) FL_NOEXCEPT
shared_ptr< T > make_shared(Args &&... args) FL_NOEXCEPT
pair_element< I, T1, T2 >::type & get(pair< T1, T2 > &p) FL_NOEXCEPT