Rune Caster 1.0.0
Modern C++ Text Processing Framework
|
A sequence container for Rune objects (API Design Document: RuneString) More...
#include <rune_sequence.hpp>
Public Types | |
using | value_type = Rune |
using | size_type = std::size_t |
using | difference_type = std::ptrdiff_t |
using | reference = Rune& |
using | const_reference = const Rune& |
using | pointer = Rune* |
using | const_pointer = const Rune* |
using | iterator = std::vector<Rune>::iterator |
using | const_iterator = std::vector<Rune>::const_iterator |
using | reverse_iterator = std::vector<Rune>::reverse_iterator |
using | const_reverse_iterator = std::vector<Rune>::const_reverse_iterator |
Public Member Functions | |
RuneString () noexcept=default | |
Default constructor. | |
RuneString (language::Code primary_lang) noexcept | |
Construct with specific primary language. | |
RuneString (std::string_view utf8) | |
Construct from UTF-8 string view. | |
RuneString (std::u16string_view utf16) | |
Construct from UTF-16 string view. | |
RuneString (std::u32string_view utf32) | |
Construct from UTF-32 string view. | |
RuneString (std::initializer_list< Rune > runes) | |
Construct from initializer list. | |
template<std::input_iterator It> requires std::convertible_to<std::iter_value_t<It>, Rune> | |
RuneString (It first, It last) | |
Construct from iterator range (C++20 concepts) | |
template<std::ranges::input_range R> requires std::convertible_to<std::ranges::range_value_t<R>, Rune> | |
RuneString (R &&range) | |
Construct from range (C++20 ranges) | |
RuneString (const RuneString &)=default | |
RuneString (RuneString &&) noexcept=default | |
RuneString & | operator= (const RuneString &)=default |
RuneString & | operator= (RuneString &&) noexcept=default |
~RuneString ()=default | |
iterator | begin () noexcept |
const_iterator | begin () const noexcept |
const_iterator | cbegin () const noexcept |
iterator | end () noexcept |
const_iterator | end () const noexcept |
const_iterator | cend () const noexcept |
reverse_iterator | rbegin () noexcept |
const_reverse_iterator | rbegin () const noexcept |
const_reverse_iterator | crbegin () const noexcept |
reverse_iterator | rend () noexcept |
const_reverse_iterator | rend () const noexcept |
const_reverse_iterator | crend () const noexcept |
bool | empty () const noexcept |
size_type | size () const noexcept |
size_type | length () const noexcept |
size_type | max_size () const noexcept |
void | reserve (size_type new_cap) |
size_type | capacity () const noexcept |
void | shrink_to_fit () |
reference | at (size_type pos) |
const_reference | at (size_type pos) const |
reference | operator[] (size_type pos) noexcept |
const_reference | operator[] (size_type pos) const noexcept |
reference | front () |
const_reference | front () const |
reference | back () |
const_reference | back () const |
pointer | data () noexcept |
const_pointer | data () const noexcept |
std::span< Rune > | span () noexcept |
Get a mutable span view of the underlying runes. | |
std::span< const Rune > | span () const noexcept |
Get a read-only span view of the underlying runes. | |
std::span< const Rune > | slice_view (size_type start, size_type length=npos) const noexcept |
Get a sub-view (lazy slice) without copying. | |
std::span< Rune > | slice_view (size_type start, size_type length=npos) noexcept |
operator std::span< Rune > () noexcept | |
operator std::span< const Rune > () const noexcept | |
void | clear () noexcept |
iterator | insert (const_iterator pos, const Rune &rune) |
iterator | insert (const_iterator pos, Rune &&rune) |
template<class... Args> | |
iterator | emplace (const_iterator pos, Args &&... args) |
iterator | erase (const_iterator pos) |
iterator | erase (const_iterator first, const_iterator last) |
void | push_back (const Rune &rune) |
void | push_back (Rune &&rune) |
template<class... Args> | |
reference | emplace_back (Args &&... args) |
void | pop_back () |
void | resize (size_type count) |
void | resize (size_type count, const Rune &value) |
void | swap (RuneString &other) noexcept |
language::Code | primary_language () const noexcept |
Get the primary language of the sequence. | |
void | set_primary_language (language::Code lang) noexcept |
Set the primary language of the sequence. | |
std::string | to_utf8 () const |
Convert the sequence to UTF-8 string. | |
std::u16string | to_utf16 () const |
Convert the sequence to UTF-16 string. | |
std::u32string | to_utf32 () const |
Convert the sequence to UTF-32 string. | |
RuneString & | append (const RuneString &other) |
Append another RuneString. | |
RuneString & | append (const Rune &rune) |
Append a single Rune. | |
RuneString & | append (std::string_view utf8) |
Append a UTF-8 string. | |
RuneString | substr (size_type start, size_type length=npos) const |
Create a substring. | |
size_type | find (const Rune &rune, size_type pos=0) const noexcept |
Find first occurrence of a Rune. | |
size_type | find (const RuneString &str, size_type pos=0) const noexcept |
Find first occurrence of a RuneString. | |
bool | contains (const Rune &rune) const noexcept |
Check if the string contains a Rune. | |
bool | contains (const RuneString &str) const noexcept |
Check if the string contains a substring. | |
auto | operator<=> (const RuneString &other) const noexcept=default |
bool | operator== (const RuneString &other) const noexcept=default |
RuneString & | operator+= (const RuneString &other) |
RuneString & | operator+= (const Rune &rune) |
RuneString & | operator+= (std::string_view utf8) |
Static Public Member Functions | |
static RuneString | from_utf8 (std::string_view utf8_text) |
Create a RuneString from UTF-8 text. | |
static RuneString | from_utf8 (std::string_view utf8_text, language::Code lang) |
Create a RuneString from UTF-8 text with language hint. | |
static RuneString | from_utf16 (std::u16string_view utf16_text) |
Create a RuneString from UTF-16 text. | |
static RuneString | from_utf32 (std::u32string_view utf32_text) |
Create a RuneString from UTF-32 text. |
Static Public Attributes | |
static constexpr size_type | npos = std::string::npos |
Friends | |
RuneString | operator+ (const RuneString &lhs, const RuneString &rhs) |
RuneString | operator+ (const RuneString &lhs, const Rune &rhs) |
RuneString | operator+ (const Rune &lhs, const RuneString &rhs) |
A sequence container for Rune objects (API Design Document: RuneString)
RuneString provides an STL-compatible container for storing and manipulating sequences of Rune objects. It supports typical container operations and provides factory methods for creating sequences from text strings.
This class follows the API Design Document specification for RuneString with full C++20 features support including ranges and concepts.
Definition at line 26 of file rune_sequence.hpp.
using rune_caster::RuneString::const_iterator = std::vector<Rune>::const_iterator |
Definition at line 37 of file rune_sequence.hpp.
using rune_caster::RuneString::const_pointer = const Rune* |
Definition at line 35 of file rune_sequence.hpp.
using rune_caster::RuneString::const_reference = const Rune& |
Definition at line 33 of file rune_sequence.hpp.
using rune_caster::RuneString::const_reverse_iterator = std::vector<Rune>::const_reverse_iterator |
Definition at line 39 of file rune_sequence.hpp.
using rune_caster::RuneString::difference_type = std::ptrdiff_t |
Definition at line 31 of file rune_sequence.hpp.
using rune_caster::RuneString::iterator = std::vector<Rune>::iterator |
Definition at line 36 of file rune_sequence.hpp.
using rune_caster::RuneString::pointer = Rune* |
Definition at line 34 of file rune_sequence.hpp.
using rune_caster::RuneString::reference = Rune& |
Definition at line 32 of file rune_sequence.hpp.
using rune_caster::RuneString::reverse_iterator = std::vector<Rune>::reverse_iterator |
Definition at line 38 of file rune_sequence.hpp.
using rune_caster::RuneString::size_type = std::size_t |
Definition at line 30 of file rune_sequence.hpp.
Definition at line 29 of file rune_sequence.hpp.
|
defaultnoexcept |
Default constructor.
|
explicitnoexcept |
Construct with specific primary language.
primary_lang | The primary language of the sequence |
Definition at line 10 of file rune_sequence.cpp.
|
explicit |
Construct from UTF-8 string view.
utf8 | UTF-8 encoded string |
Definition at line 16 of file rune_sequence.cpp.
|
explicit |
Construct from UTF-16 string view.
utf16 | UTF-16 encoded string |
Definition at line 21 of file rune_sequence.cpp.
|
explicit |
Construct from UTF-32 string view.
utf32 | UTF-32 encoded string |
Definition at line 26 of file rune_sequence.cpp.
rune_caster::RuneString::RuneString | ( | std::initializer_list< Rune > | runes | ) |
Construct from initializer list.
runes | Initializer list of Rune objects |
Definition at line 31 of file rune_sequence.cpp.
rune_caster::RuneString::RuneString | ( | It | first, |
It | last ) |
Construct from iterator range (C++20 concepts)
It | Input iterator type |
first | Iterator to the beginning |
last | Iterator to the end |
Definition at line 407 of file rune_sequence.hpp.
|
explicit |
Construct from range (C++20 ranges)
R | Range type |
range | Input range |
Definition at line 415 of file rune_sequence.hpp.
|
default |
|
defaultnoexcept |
|
default |
RuneString & rune_caster::RuneString::append | ( | const Rune & | rune | ) |
Append a single Rune.
rune | The Rune to append |
Definition at line 94 of file rune_sequence.cpp.
RuneString & rune_caster::RuneString::append | ( | const RuneString & | other | ) |
Append another RuneString.
other | The RuneString to append |
Definition at line 89 of file rune_sequence.cpp.
RuneString & rune_caster::RuneString::append | ( | std::string_view | utf8 | ) |
Append a UTF-8 string.
utf8 | The UTF-8 string to append |
Definition at line 99 of file rune_sequence.cpp.
Definition at line 143 of file rune_sequence.hpp.
|
inlinenodiscard |
Definition at line 144 of file rune_sequence.hpp.
|
inlinenodiscard |
Definition at line 152 of file rune_sequence.hpp.
|
inlinenodiscard |
Definition at line 153 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 115 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 114 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Definition at line 138 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 116 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 120 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 193 of file rune_sequence.hpp.
|
nodiscardnoexcept |
Check if the string contains a Rune.
rune | The Rune to search for |
Definition at line 143 of file rune_sequence.cpp.
|
nodiscardnoexcept |
Check if the string contains a substring.
str | The substring to search for |
Definition at line 147 of file rune_sequence.cpp.
|
inlinenoexcept |
Definition at line 124 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 128 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Definition at line 156 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Definition at line 155 of file rune_sequence.hpp.
|
inline |
Definition at line 204 of file rune_sequence.hpp.
|
inline |
Definition at line 225 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Definition at line 132 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 119 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 118 of file rune_sequence.hpp.
|
inline |
Definition at line 212 of file rune_sequence.hpp.
|
inline |
Definition at line 208 of file rune_sequence.hpp.
|
nodiscardnoexcept |
Find first occurrence of a Rune.
rune | The Rune to search for |
pos | Starting position |
Definition at line 119 of file rune_sequence.cpp.
|
nodiscardnoexcept |
Find first occurrence of a RuneString.
str | The RuneString to search for |
pos | Starting position |
Definition at line 128 of file rune_sequence.cpp.
|
static |
Create a RuneString from UTF-16 text.
utf16_text | UTF-16 encoded text |
Definition at line 228 of file rune_sequence.cpp.
|
static |
Create a RuneString from UTF-32 text.
utf32_text | UTF-32 encoded text |
Definition at line 287 of file rune_sequence.cpp.
|
static |
Create a RuneString from UTF-8 text.
utf8_text | UTF-8 encoded text |
Definition at line 153 of file rune_sequence.cpp.
|
static |
Create a RuneString from UTF-8 text with language hint.
utf8_text | UTF-8 encoded text |
lang | Language hint for processing |
Definition at line 214 of file rune_sequence.cpp.
|
inlinenodiscard |
Definition at line 149 of file rune_sequence.hpp.
|
inlinenodiscard |
Definition at line 150 of file rune_sequence.hpp.
|
inline |
Definition at line 195 of file rune_sequence.hpp.
|
inline |
Definition at line 199 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Definition at line 134 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Definition at line 135 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 189 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 188 of file rune_sequence.hpp.
|
inline |
Definition at line 379 of file rune_sequence.hpp.
|
inline |
Definition at line 378 of file rune_sequence.hpp.
|
inline |
Definition at line 380 of file rune_sequence.hpp.
|
nodiscarddefaultnoexcept |
|
default |
|
defaultnoexcept |
|
nodiscarddefaultnoexcept |
|
inlinenodiscardnoexcept |
Definition at line 147 of file rune_sequence.hpp.
Definition at line 146 of file rune_sequence.hpp.
|
inline |
Definition at line 229 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Get the primary language of the sequence.
Definition at line 252 of file rune_sequence.hpp.
|
inline |
Definition at line 216 of file rune_sequence.hpp.
|
inline |
Definition at line 220 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 123 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 122 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 127 of file rune_sequence.hpp.
|
inlinenoexcept |
Definition at line 126 of file rune_sequence.hpp.
|
inline |
Definition at line 137 of file rune_sequence.hpp.
|
inline |
Definition at line 233 of file rune_sequence.hpp.
Definition at line 237 of file rune_sequence.hpp.
|
inlinenoexcept |
Set the primary language of the sequence.
lang | The new primary language |
Definition at line 260 of file rune_sequence.hpp.
|
inline |
Definition at line 139 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Definition at line 133 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Get a sub-view (lazy slice) without copying.
start | Starting index |
length | Number of elements (default npos → until end) |
Definition at line 175 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Definition at line 181 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Get a read-only span view of the underlying runes.
Definition at line 168 of file rune_sequence.hpp.
|
inlinenodiscardnoexcept |
Get a mutable span view of the underlying runes.
Definition at line 163 of file rune_sequence.hpp.
|
nodiscard |
Create a substring.
start | Starting position |
length | Number of characters (default: all remaining) |
Definition at line 104 of file rune_sequence.cpp.
|
inlinenoexcept |
Definition at line 241 of file rune_sequence.hpp.
|
nodiscard |
Convert the sequence to UTF-16 string.
Definition at line 64 of file rune_sequence.cpp.
|
nodiscard |
Convert the sequence to UTF-32 string.
Definition at line 76 of file rune_sequence.cpp.
|
nodiscard |
Convert the sequence to UTF-8 string.
Definition at line 53 of file rune_sequence.cpp.
|
friend |
Definition at line 394 of file rune_sequence.hpp.
|
friend |
Definition at line 388 of file rune_sequence.hpp.
|
friend |
Definition at line 382 of file rune_sequence.hpp.
|
staticconstexpr |
Definition at line 42 of file rune_sequence.hpp.