779 {
781 if (count == 0) return *this;
782
783
786 }
787
788 fl::size newLen =
mLength + count;
789
790
795 for (fl::size i = 0; i < count; ++i) newData->data()[
pos + i] = ch;
797 newData->data()[newLen] = '\0';
800 return *this;
801 }
802
803
807 }
811 return *this;
812 }
813
814
816 if (canInsertInPlace) {
818 canInsertInPlace = heap.get().use_count() <= 1 && heap->hasCapacity(newLen);
819 if (canInsertInPlace) {
820 char*
data = heap->data();
822 for (fl::size i = 0; i < count; ++i)
data[
pos + i] = ch;
825 }
826 }
827 if (!canInsertInPlace) {
829 const char* src =
c_str();
831 for (fl::size i = 0; i < count; ++i) newData->data()[
pos + i] = ch;
833 newData->data()[newLen] = '\0';
836 }
837 return *this;
838}
bool isNonOwning() const FL_NO_EXCEPT
void materialize() FL_NO_EXCEPT
NotNullStringHolderPtr & heapData() FL_NO_EXCEPT
bool hasHeapData() const FL_NO_EXCEPT
char * inlineBufferPtr() FL_NO_EXCEPT
fl::variant< NotNullStringHolderPtr, ConstLiteral, ConstView > mStorage
const char * c_str() const FL_NO_EXCEPT
const char * data() const FL_NO_EXCEPT
fl::not_null< StringHolderPtr > NotNullStringHolderPtr
void * memcpy(void *dest, const void *src, size_t n) FL_NO_EXCEPT
void * memmove(void *dest, const void *src, size_t n) FL_NO_EXCEPT
shared_ptr< T > make_shared(Args &&... args) FL_NO_EXCEPT
pair_element< I, T1, T2 >::type & get(pair< T1, T2 > &p) FL_NO_EXCEPT