Rune Caster 1.0.0
Modern C++ Text Processing Framework
Loading...
Searching...
No Matches
rune_caster::RuneString Class Reference

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
RuneStringoperator= (const RuneString &)=default
RuneStringoperator= (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< Runespan () noexcept
 Get a mutable span view of the underlying runes.
std::span< const Runespan () const noexcept
 Get a read-only span view of the underlying runes.
std::span< const Runeslice_view (size_type start, size_type length=npos) const noexcept
 Get a sub-view (lazy slice) without copying.
std::span< Runeslice_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.
RuneStringappend (const RuneString &other)
 Append another RuneString.
RuneStringappend (const Rune &rune)
 Append a single Rune.
RuneStringappend (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
RuneStringoperator+= (const RuneString &other)
RuneStringoperator+= (const Rune &rune)
RuneStringoperator+= (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)

Detailed Description

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.

Member Typedef Documentation

◆ const_iterator

using rune_caster::RuneString::const_iterator = std::vector<Rune>::const_iterator

Definition at line 37 of file rune_sequence.hpp.

◆ const_pointer

Definition at line 35 of file rune_sequence.hpp.

◆ const_reference

Definition at line 33 of file rune_sequence.hpp.

◆ const_reverse_iterator

using rune_caster::RuneString::const_reverse_iterator = std::vector<Rune>::const_reverse_iterator

Definition at line 39 of file rune_sequence.hpp.

◆ difference_type

Definition at line 31 of file rune_sequence.hpp.

◆ iterator

using rune_caster::RuneString::iterator = std::vector<Rune>::iterator

Definition at line 36 of file rune_sequence.hpp.

◆ pointer

Definition at line 34 of file rune_sequence.hpp.

◆ reference

Definition at line 32 of file rune_sequence.hpp.

◆ reverse_iterator

using rune_caster::RuneString::reverse_iterator = std::vector<Rune>::reverse_iterator

Definition at line 38 of file rune_sequence.hpp.

◆ size_type

Definition at line 30 of file rune_sequence.hpp.

◆ value_type

Definition at line 29 of file rune_sequence.hpp.

Constructor & Destructor Documentation

◆ RuneString() [1/10]

rune_caster::RuneString::RuneString ( )
defaultnoexcept

Default constructor.

◆ RuneString() [2/10]

rune_caster::RuneString::RuneString ( language::Code primary_lang)
explicitnoexcept

Construct with specific primary language.

Parameters
primary_langThe primary language of the sequence

Definition at line 10 of file rune_sequence.cpp.

◆ RuneString() [3/10]

rune_caster::RuneString::RuneString ( std::string_view utf8)
explicit

Construct from UTF-8 string view.

Parameters
utf8UTF-8 encoded string

Definition at line 16 of file rune_sequence.cpp.

◆ RuneString() [4/10]

rune_caster::RuneString::RuneString ( std::u16string_view utf16)
explicit

Construct from UTF-16 string view.

Parameters
utf16UTF-16 encoded string

Definition at line 21 of file rune_sequence.cpp.

◆ RuneString() [5/10]

rune_caster::RuneString::RuneString ( std::u32string_view utf32)
explicit

Construct from UTF-32 string view.

Parameters
utf32UTF-32 encoded string

Definition at line 26 of file rune_sequence.cpp.

◆ RuneString() [6/10]

rune_caster::RuneString::RuneString ( std::initializer_list< Rune > runes)

Construct from initializer list.

Parameters
runesInitializer list of Rune objects

Definition at line 31 of file rune_sequence.cpp.

◆ RuneString() [7/10]

template<std::input_iterator It>
requires std::convertible_to<std::iter_value_t<It>, Rune>
rune_caster::RuneString::RuneString ( It first,
It last )

Construct from iterator range (C++20 concepts)

Template Parameters
ItInput iterator type
Parameters
firstIterator to the beginning
lastIterator to the end

Definition at line 407 of file rune_sequence.hpp.

◆ RuneString() [8/10]

template<std::ranges::input_range R>
requires std::convertible_to<std::ranges::range_value_t<R>, Rune>
rune_caster::RuneString::RuneString ( R && range)
explicit

Construct from range (C++20 ranges)

Template Parameters
RRange type
Parameters
rangeInput range

Definition at line 415 of file rune_sequence.hpp.

◆ RuneString() [9/10]

rune_caster::RuneString::RuneString ( const RuneString & )
default

◆ RuneString() [10/10]

rune_caster::RuneString::RuneString ( RuneString && )
defaultnoexcept

◆ ~RuneString()

rune_caster::RuneString::~RuneString ( )
default

Member Function Documentation

◆ append() [1/3]

RuneString & rune_caster::RuneString::append ( const Rune & rune)

Append a single Rune.

Parameters
runeThe Rune to append

Definition at line 94 of file rune_sequence.cpp.

◆ append() [2/3]

RuneString & rune_caster::RuneString::append ( const RuneString & other)

Append another RuneString.

Parameters
otherThe RuneString to append

Definition at line 89 of file rune_sequence.cpp.

◆ append() [3/3]

RuneString & rune_caster::RuneString::append ( std::string_view utf8)

Append a UTF-8 string.

Parameters
utf8The UTF-8 string to append

Definition at line 99 of file rune_sequence.cpp.

◆ at() [1/2]

reference rune_caster::RuneString::at ( size_type pos)
inlinenodiscard

Definition at line 143 of file rune_sequence.hpp.

◆ at() [2/2]

const_reference rune_caster::RuneString::at ( size_type pos) const
inlinenodiscard

Definition at line 144 of file rune_sequence.hpp.

◆ back() [1/2]

reference rune_caster::RuneString::back ( )
inlinenodiscard

Definition at line 152 of file rune_sequence.hpp.

◆ back() [2/2]

const_reference rune_caster::RuneString::back ( ) const
inlinenodiscard

Definition at line 153 of file rune_sequence.hpp.

◆ begin() [1/2]

const_iterator rune_caster::RuneString::begin ( ) const
inlinenoexcept

Definition at line 115 of file rune_sequence.hpp.

◆ begin() [2/2]

iterator rune_caster::RuneString::begin ( )
inlinenoexcept

Definition at line 114 of file rune_sequence.hpp.

◆ capacity()

size_type rune_caster::RuneString::capacity ( ) const
inlinenodiscardnoexcept

Definition at line 138 of file rune_sequence.hpp.

◆ cbegin()

const_iterator rune_caster::RuneString::cbegin ( ) const
inlinenoexcept

Definition at line 116 of file rune_sequence.hpp.

◆ cend()

const_iterator rune_caster::RuneString::cend ( ) const
inlinenoexcept

Definition at line 120 of file rune_sequence.hpp.

◆ clear()

void rune_caster::RuneString::clear ( )
inlinenoexcept

Definition at line 193 of file rune_sequence.hpp.

◆ contains() [1/2]

bool rune_caster::RuneString::contains ( const Rune & rune) const
nodiscardnoexcept

Check if the string contains a Rune.

Parameters
runeThe Rune to search for
Returns
true if found, false otherwise

Definition at line 143 of file rune_sequence.cpp.

◆ contains() [2/2]

bool rune_caster::RuneString::contains ( const RuneString & str) const
nodiscardnoexcept

Check if the string contains a substring.

Parameters
strThe substring to search for
Returns
true if found, false otherwise

Definition at line 147 of file rune_sequence.cpp.

◆ crbegin()

const_reverse_iterator rune_caster::RuneString::crbegin ( ) const
inlinenoexcept

Definition at line 124 of file rune_sequence.hpp.

◆ crend()

const_reverse_iterator rune_caster::RuneString::crend ( ) const
inlinenoexcept

Definition at line 128 of file rune_sequence.hpp.

◆ data() [1/2]

const_pointer rune_caster::RuneString::data ( ) const
inlinenodiscardnoexcept

Definition at line 156 of file rune_sequence.hpp.

◆ data() [2/2]

pointer rune_caster::RuneString::data ( )
inlinenodiscardnoexcept

Definition at line 155 of file rune_sequence.hpp.

◆ emplace()

template<class... Args>
iterator rune_caster::RuneString::emplace ( const_iterator pos,
Args &&... args )
inline

Definition at line 204 of file rune_sequence.hpp.

◆ emplace_back()

template<class... Args>
reference rune_caster::RuneString::emplace_back ( Args &&... args)
inline

Definition at line 225 of file rune_sequence.hpp.

◆ empty()

bool rune_caster::RuneString::empty ( ) const
inlinenodiscardnoexcept

Definition at line 132 of file rune_sequence.hpp.

◆ end() [1/2]

const_iterator rune_caster::RuneString::end ( ) const
inlinenoexcept

Definition at line 119 of file rune_sequence.hpp.

◆ end() [2/2]

iterator rune_caster::RuneString::end ( )
inlinenoexcept

Definition at line 118 of file rune_sequence.hpp.

◆ erase() [1/2]

iterator rune_caster::RuneString::erase ( const_iterator first,
const_iterator last )
inline

Definition at line 212 of file rune_sequence.hpp.

◆ erase() [2/2]

iterator rune_caster::RuneString::erase ( const_iterator pos)
inline

Definition at line 208 of file rune_sequence.hpp.

◆ find() [1/2]

RuneString::size_type rune_caster::RuneString::find ( const Rune & rune,
size_type pos = 0 ) const
nodiscardnoexcept

Find first occurrence of a Rune.

Parameters
runeThe Rune to search for
posStarting position
Returns
Position of first match, or npos if not found

Definition at line 119 of file rune_sequence.cpp.

◆ find() [2/2]

RuneString::size_type rune_caster::RuneString::find ( const RuneString & str,
size_type pos = 0 ) const
nodiscardnoexcept

Find first occurrence of a RuneString.

Parameters
strThe RuneString to search for
posStarting position
Returns
Position of first match, or npos if not found

Definition at line 128 of file rune_sequence.cpp.

◆ from_utf16()

RuneString rune_caster::RuneString::from_utf16 ( std::u16string_view utf16_text)
static

Create a RuneString from UTF-16 text.

Parameters
utf16_textUTF-16 encoded text
Returns
RuneString object

Definition at line 228 of file rune_sequence.cpp.

◆ from_utf32()

RuneString rune_caster::RuneString::from_utf32 ( std::u32string_view utf32_text)
static

Create a RuneString from UTF-32 text.

Parameters
utf32_textUTF-32 encoded text
Returns
RuneString object

Definition at line 287 of file rune_sequence.cpp.

◆ from_utf8() [1/2]

RuneString rune_caster::RuneString::from_utf8 ( std::string_view utf8_text)
static

Create a RuneString from UTF-8 text.

Parameters
utf8_textUTF-8 encoded text
Returns
RuneString object

Definition at line 153 of file rune_sequence.cpp.

◆ from_utf8() [2/2]

RuneString rune_caster::RuneString::from_utf8 ( std::string_view utf8_text,
language::Code lang )
static

Create a RuneString from UTF-8 text with language hint.

Parameters
utf8_textUTF-8 encoded text
langLanguage hint for processing
Returns
RuneString object

Definition at line 214 of file rune_sequence.cpp.

◆ front() [1/2]

reference rune_caster::RuneString::front ( )
inlinenodiscard

Definition at line 149 of file rune_sequence.hpp.

◆ front() [2/2]

const_reference rune_caster::RuneString::front ( ) const
inlinenodiscard

Definition at line 150 of file rune_sequence.hpp.

◆ insert() [1/2]

iterator rune_caster::RuneString::insert ( const_iterator pos,
const Rune & rune )
inline

Definition at line 195 of file rune_sequence.hpp.

◆ insert() [2/2]

iterator rune_caster::RuneString::insert ( const_iterator pos,
Rune && rune )
inline

Definition at line 199 of file rune_sequence.hpp.

◆ length()

size_type rune_caster::RuneString::length ( ) const
inlinenodiscardnoexcept

Definition at line 134 of file rune_sequence.hpp.

◆ max_size()

size_type rune_caster::RuneString::max_size ( ) const
inlinenodiscardnoexcept

Definition at line 135 of file rune_sequence.hpp.

◆ operator std::span< const Rune >()

rune_caster::RuneString::operator std::span< const Rune > ( ) const
inlinenoexcept

Definition at line 189 of file rune_sequence.hpp.

◆ operator std::span< Rune >()

rune_caster::RuneString::operator std::span< Rune > ( )
inlinenoexcept

Definition at line 188 of file rune_sequence.hpp.

◆ operator+=() [1/3]

RuneString & rune_caster::RuneString::operator+= ( const Rune & rune)
inline

Definition at line 379 of file rune_sequence.hpp.

◆ operator+=() [2/3]

RuneString & rune_caster::RuneString::operator+= ( const RuneString & other)
inline

Definition at line 378 of file rune_sequence.hpp.

◆ operator+=() [3/3]

RuneString & rune_caster::RuneString::operator+= ( std::string_view utf8)
inline

Definition at line 380 of file rune_sequence.hpp.

◆ operator<=>()

auto rune_caster::RuneString::operator<=> ( const RuneString & other) const
nodiscarddefaultnoexcept

◆ operator=() [1/2]

RuneString & rune_caster::RuneString::operator= ( const RuneString & )
default

◆ operator=() [2/2]

RuneString & rune_caster::RuneString::operator= ( RuneString && )
defaultnoexcept

◆ operator==()

bool rune_caster::RuneString::operator== ( const RuneString & other) const
nodiscarddefaultnoexcept

◆ operator[]() [1/2]

const_reference rune_caster::RuneString::operator[] ( size_type pos) const
inlinenodiscardnoexcept

Definition at line 147 of file rune_sequence.hpp.

◆ operator[]() [2/2]

reference rune_caster::RuneString::operator[] ( size_type pos)
inlinenodiscardnoexcept

Definition at line 146 of file rune_sequence.hpp.

◆ pop_back()

void rune_caster::RuneString::pop_back ( )
inline

Definition at line 229 of file rune_sequence.hpp.

◆ primary_language()

language::Code rune_caster::RuneString::primary_language ( ) const
inlinenodiscardnoexcept

Get the primary language of the sequence.

Returns
The primary language code

Definition at line 252 of file rune_sequence.hpp.

◆ push_back() [1/2]

void rune_caster::RuneString::push_back ( const Rune & rune)
inline

Definition at line 216 of file rune_sequence.hpp.

◆ push_back() [2/2]

void rune_caster::RuneString::push_back ( Rune && rune)
inline

Definition at line 220 of file rune_sequence.hpp.

◆ rbegin() [1/2]

const_reverse_iterator rune_caster::RuneString::rbegin ( ) const
inlinenoexcept

Definition at line 123 of file rune_sequence.hpp.

◆ rbegin() [2/2]

reverse_iterator rune_caster::RuneString::rbegin ( )
inlinenoexcept

Definition at line 122 of file rune_sequence.hpp.

◆ rend() [1/2]

const_reverse_iterator rune_caster::RuneString::rend ( ) const
inlinenoexcept

Definition at line 127 of file rune_sequence.hpp.

◆ rend() [2/2]

reverse_iterator rune_caster::RuneString::rend ( )
inlinenoexcept

Definition at line 126 of file rune_sequence.hpp.

◆ reserve()

void rune_caster::RuneString::reserve ( size_type new_cap)
inline

Definition at line 137 of file rune_sequence.hpp.

◆ resize() [1/2]

void rune_caster::RuneString::resize ( size_type count)
inline

Definition at line 233 of file rune_sequence.hpp.

◆ resize() [2/2]

void rune_caster::RuneString::resize ( size_type count,
const Rune & value )
inline

Definition at line 237 of file rune_sequence.hpp.

◆ set_primary_language()

void rune_caster::RuneString::set_primary_language ( language::Code lang)
inlinenoexcept

Set the primary language of the sequence.

Parameters
langThe new primary language

Definition at line 260 of file rune_sequence.hpp.

◆ shrink_to_fit()

void rune_caster::RuneString::shrink_to_fit ( )
inline

Definition at line 139 of file rune_sequence.hpp.

◆ size()

size_type rune_caster::RuneString::size ( ) const
inlinenodiscardnoexcept

Definition at line 133 of file rune_sequence.hpp.

◆ slice_view() [1/2]

std::span< const Rune > rune_caster::RuneString::slice_view ( size_type start,
size_type length = npos ) const
inlinenodiscardnoexcept

Get a sub-view (lazy slice) without copying.

Parameters
startStarting index
lengthNumber of elements (default npos → until end)

Definition at line 175 of file rune_sequence.hpp.

◆ slice_view() [2/2]

std::span< Rune > rune_caster::RuneString::slice_view ( size_type start,
size_type length = npos )
inlinenodiscardnoexcept

Definition at line 181 of file rune_sequence.hpp.

◆ span() [1/2]

std::span< const Rune > rune_caster::RuneString::span ( ) const
inlinenodiscardnoexcept

Get a read-only span view of the underlying runes.

Definition at line 168 of file rune_sequence.hpp.

◆ span() [2/2]

std::span< Rune > rune_caster::RuneString::span ( )
inlinenodiscardnoexcept

Get a mutable span view of the underlying runes.

Definition at line 163 of file rune_sequence.hpp.

◆ substr()

RuneString rune_caster::RuneString::substr ( size_type start,
size_type length = npos ) const
nodiscard

Create a substring.

Parameters
startStarting position
lengthNumber of characters (default: all remaining)
Returns
New RuneString containing the substring

Definition at line 104 of file rune_sequence.cpp.

◆ swap()

void rune_caster::RuneString::swap ( RuneString & other)
inlinenoexcept

Definition at line 241 of file rune_sequence.hpp.

◆ to_utf16()

std::u16string rune_caster::RuneString::to_utf16 ( ) const
nodiscard

Convert the sequence to UTF-16 string.

Returns
UTF-16 encoded string

Definition at line 64 of file rune_sequence.cpp.

◆ to_utf32()

std::u32string rune_caster::RuneString::to_utf32 ( ) const
nodiscard

Convert the sequence to UTF-32 string.

Returns
UTF-32 encoded string

Definition at line 76 of file rune_sequence.cpp.

◆ to_utf8()

std::string rune_caster::RuneString::to_utf8 ( ) const
nodiscard

Convert the sequence to UTF-8 string.

Returns
UTF-8 encoded string

Definition at line 53 of file rune_sequence.cpp.

◆ operator+ [1/3]

RuneString operator+ ( const Rune & lhs,
const RuneString & rhs )
friend

Definition at line 394 of file rune_sequence.hpp.

◆ operator+ [2/3]

RuneString operator+ ( const RuneString & lhs,
const Rune & rhs )
friend

Definition at line 388 of file rune_sequence.hpp.

◆ operator+ [3/3]

RuneString operator+ ( const RuneString & lhs,
const RuneString & rhs )
friend

Definition at line 382 of file rune_sequence.hpp.

Member Data Documentation

◆ npos

size_type rune_caster::RuneString::npos = std::string::npos
staticconstexpr

Definition at line 42 of file rune_sequence.hpp.


The documentation for this class was generated from the following files: