Implemented something like a console (still WIP).

This commit is contained in:
2024-01-20 02:52:58 +01:00
parent f4bad14fcd
commit c41a9a1034
9 changed files with 151 additions and 20 deletions

View File

@@ -78,6 +78,15 @@ public:
}
constexpr basic_string& operator=(std::nullptr_t) = delete;
constexpr basic_string& operator+=(value_type chr) noexcept
{
return append(chr);
}
constexpr basic_string& operator+=(const basic_string& other) noexcept
{
return append(other);
}
[[nodiscard]] constexpr reference operator[](size_type pos) noexcept { return _data[pos]; }
[[nodiscard]] constexpr const_reference operator[](size_type pos) const noexcept { return _data[pos]; }
@@ -88,8 +97,8 @@ public:
[[nodiscard]] constexpr reference front() noexcept { return _data.front(); }
[[nodiscard]] constexpr const_reference front() const noexcept { return _data.front(); }
[[nodiscard]] constexpr reference back() noexcept { return _data.back(); }
[[nodiscard]] constexpr const_reference back() const noexcept { return _data.back(); }
[[nodiscard]] constexpr reference back() noexcept { return _data.at(size() - 1); }
[[nodiscard]] constexpr const_reference back() const noexcept { return _data.at(size() - 1); }
[[nodiscard]] constexpr pointer data() noexcept { return _data.data(); }
[[nodiscard]] constexpr const_pointer data() const noexcept { return _data.data(); }
@@ -117,6 +126,29 @@ public:
_data.back() = value_type(0);
}
constexpr basic_string& append(value_type chr) noexcept
{
_data.back() = chr;
_data.push_back(value_type());
return *this;
}
constexpr basic_string& append(const basic_string& other) noexcept
{
_data.reserve(_data.size() + other.size());
_data.resize(_data.size() - 1);
for (char chr : other)
{
_data.push_back(chr);
}
_data.push_back(value_type());
return *this;
}
constexpr void pop_back() noexcept
{
_data.pop_back();
_data.back() = value_type();
}
static inline size_type npos = size_type(-1);
};
using string = basic_string<char>;