Definition at line 43 of file basic_string.cpp.hpp.
43 {
44
47 }
48 struct Visitor {
49 basic_string* self;
51 void accept(NotNullStringHolderPtr& heap) {
52 if (heap.get().use_count() > 1) {
53
56 result = self->heapData()->data();
57 } else {
59 }
60 }
61 void accept(ConstLiteral&) {
62 self->materialize();
63 result = self->hasHeapData() ? self->heapData()->data()
64 : self->inlineBufferPtr();
65 }
66 void accept(ConstView&) {
67 self->materialize();
68 result = self->hasHeapData() ? self->heapData()->data()
69 : self->inlineBufferPtr();
70 }
71 };
72 Visitor v{this, nullptr};
74 return v.result;
75}
char * inlineBufferPtr() FL_NO_EXCEPT
fl::variant< NotNullStringHolderPtr, ConstLiteral, ConstView > mStorage
fl::not_null< StringHolderPtr > NotNullStringHolderPtr
shared_ptr< T > make_shared(Args &&... args) FL_NO_EXCEPT
expected< T, E > result
Alias for expected (Rust-style naming)
References basic_string(), fl::not_null< T >::get(), hasHeapData(), heapData(), inlineBufferPtr(), fl::make_shared(), materialize(), mLength, mStorage, and fl::shared_ptr< T >::use_count().
Referenced by at(), begin(), clear(), end(), erase(), operator[](), pop_back(), and resize().