MC Protocol Serial C++ 0.2.3
MC protocol serial library for MCU-oriented environments
Loading...
Searching...
No Matches
string_view_compat.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <cstring>
5
6#if defined(__has_include)
7#if __has_include(<string_view>)
8#include <string_view>
9#endif
10#endif
11
12#if !defined(__cpp_lib_string_view) || (__cpp_lib_string_view < 201606L)
13namespace std {
14
16 public:
19 using pointer = const char*;
20 using const_pointer = const char*;
21 using const_reference = const char&;
22 using const_iterator = const char*;
23
24 static constexpr size_type npos = static_cast<size_type>(-1);
25
27
29
31 : data_(text), size_(text ? std::strlen(text) : 0U) {}
32
33 [[nodiscard]] constexpr const_iterator begin() const noexcept { return data_; }
34 [[nodiscard]] constexpr const_iterator end() const noexcept { return data_ + size_; }
35 [[nodiscard]] constexpr const_pointer data() const noexcept { return data_; }
36 [[nodiscard]] constexpr size_type size() const noexcept { return size_; }
37 [[nodiscard]] constexpr bool empty() const noexcept { return size_ == 0U; }
38 [[nodiscard]] constexpr const_reference front() const noexcept { return data_[0]; }
39 [[nodiscard]] constexpr const_reference operator[](size_type index) const noexcept {
40 return data_[index];
41 }
42
45 size_type count = npos) const noexcept {
46 if (pos > size_) {
47 return string_view();
48 }
49 const size_type remaining = size_ - pos;
51 return string_view(data_ + pos, actual);
52 }
53
54 private:
55 const char* data_ = "";
56 size_type size_ = 0U;
57};
58
59} // namespace std
60#endif
constexpr const_reference operator[](size_type index) const noexcept
constexpr const_pointer data() const noexcept
constexpr const_iterator begin() const noexcept
constexpr const_reference front() const noexcept
constexpr const_iterator end() const noexcept
constexpr string_view substr(size_type pos, size_type count=npos) const noexcept
static constexpr size_type npos
constexpr size_type size() const noexcept
string_view(const char *text) noexcept
constexpr string_view() noexcept=default
constexpr bool empty() const noexcept