Definition at line 42 of file basic_string.cpp.hpp.
42 {
43
46 }
47 struct Visitor {
48 basic_string* self;
50 void accept(NotNullStringHolderPtr& heap) {
51 if (heap.get().use_count() > 1) {
52
55 result = self->heapData()->data();
56 } else {
58 }
59 }
60 void accept(ConstLiteral&) {
61 self->materialize();
62 result = self->hasHeapData() ? self->heapData()->data()
63 : self->inlineBufferPtr();
64 }
65 void accept(ConstView&) {
66 self->materialize();
67 result = self->hasHeapData() ? self->heapData()->data()
68 : self->inlineBufferPtr();
69 }
70 };
71 Visitor v{this, nullptr};
73 return v.result;
74}
fl::variant< NotNullStringHolderPtr, ConstLiteral, ConstView > mStorage
char * inlineBufferPtr() FL_NOEXCEPT
fl::not_null< StringHolderPtr > NotNullStringHolderPtr
shared_ptr< T > make_shared(Args &&... args) FL_NOEXCEPT
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().