858 {
860 if (!s || count == 0) return *this;
861
862
865 }
866
867 fl::size newLen =
mLength + count;
868
869
876 newData->data()[newLen] = '\0';
879 return *this;
880 }
881
882
886 }
890 return *this;
891 }
892
893
895 if (canInsertInPlace) {
897 canInsertInPlace = heap.get().use_count() <= 1 && heap->hasCapacity(newLen);
898 if (canInsertInPlace) {
899 char*
data = heap->data();
904 }
905 }
906 if (!canInsertInPlace) {
908 const char* src =
c_str();
912 newData->data()[newLen] = '\0';
915 }
916 return *this;
917}
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