| 14 | |
| 15 | template <typename TCharType, typename TTraits> |
| 16 | class TBasicStringBuf: public std::basic_string_view<TCharType>, |
| 17 | public TStringBase<TBasicStringBuf<TCharType, TTraits>, TCharType, TTraits> { |
| 18 | private: |
| 19 | using TdSelf = TBasicStringBuf; |
| 20 | using TBase = TStringBase<TdSelf, TCharType, TTraits>; |
| 21 | using TStringView = std::basic_string_view<TCharType>; |
| 22 | |
| 23 | public: |
| 24 | using char_type = TCharType; // TODO: DROP |
| 25 | using traits_type = TTraits; |
| 26 | |
| 27 | // Resolving some ambiguity between TStringBase and std::basic_string_view |
| 28 | // for typenames |
| 29 | using typename TStringView::const_iterator; |
| 30 | using typename TStringView::const_reference; |
| 31 | using typename TStringView::const_reverse_iterator; |
| 32 | using typename TStringView::iterator; |
| 33 | using typename TStringView::reference; |
| 34 | using typename TStringView::reverse_iterator; |
| 35 | using typename TStringView::size_type; |
| 36 | using typename TStringView::value_type; |
| 37 | |
| 38 | // for constants |
| 39 | using TStringView::npos; |
| 40 | |
| 41 | // for methods and operators |
| 42 | using TStringView::begin; |
| 43 | using TStringView::cbegin; |
| 44 | using TStringView::cend; |
| 45 | using TStringView::crbegin; |
| 46 | using TStringView::crend; |
| 47 | using TStringView::end; |
| 48 | using TStringView::rbegin; |
| 49 | using TStringView::rend; |
| 50 | |
| 51 | using TStringView::data; |
| 52 | using TStringView::empty; |
| 53 | using TStringView::size; |
| 54 | |
| 55 | using TStringView::operator[]; |
| 56 | |
| 57 | /* |
| 58 | * WARN: |
| 59 | * TBase::at silently return 0 in case of range error, |
| 60 | * while std::string_view throws std::out_of_range. |
| 61 | */ |
| 62 | using TBase::at; |
| 63 | using TStringView::back; |
| 64 | using TStringView::front; |
| 65 | |
| 66 | using TStringView::find; |
| 67 | /* |
| 68 | * WARN: |
| 69 | * TBase::*find* methods take into account TCharTraits, |
| 70 | * while TTStringView::*find* would use default std::char_traits. |
| 71 | */ |
| 72 | using TBase::find_first_not_of; |
| 73 | using TBase::find_first_of; |
no test coverage detected