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

Namespaces

namespace  language
 Language detection and identification functionality.
namespace  literals
namespace  runes
namespace  spell
namespace  spell_factory
namespace  spells
 Pre-defined spells using the unified Spell interface.
namespace  unicode

Classes

class  caster
 A powerful chaining pipeline for applying spells to data. More...
class  Rune
 Represents a single textual unit with Unicode and linguistic properties. More...
class  RuneString
 A sequence container for Rune objects (API Design Document: RuneString) More...
class  Spell
 Unified spell object for text transformation. More...
class  spell_base
 Base interface for all spell algorithms with C++20 enhancements. More...
class  spell_extensible
 Simplified spell base class. More...

Concepts

concept  spell_concept
 Concept defining what makes a valid spell.
concept  spell_for
 Concept for spells that work with specific input types.
concept  sequence_spell_concept
 Concept for sequence-based spells (most common case)
concept  transforming_spell
 Concept for transformation spells that can change the output type.
concept  chainable_spells
 Concept for spells that can be chained together.

Typedefs

using RuneSequence = RuneString
 Backward compatibility alias for RuneString.
using sequence_spell = spell_base<RuneSequence>
 Most common spell type: RuneSequence -> RuneSequence.

Functions

template<typename T>
constexpr auto make_caster (T &&data) noexcept -> caster< std::decay_t< T > >
 Factory function to create a caster (C++20 template argument deduction)
template<typename T, spell_concept Spell>
requires spell_for<Spell, std::decay_t<T>> || (requires { RuneSequence::from_utf8(std::declval<T>()); } && spell_for<Spell, RuneSequence>)
constexpr auto operator| (T &&data, Spell &&spell)
 Pipe operator for functional programming style (C++20 concepts)
template<typename T, spell_for< T > Spell>
constexpr auto operator| (caster< T > &&caster_obj, Spell &&spell)
 Pipe operator for chaining casters (C++20 concepts)
constexpr Rune operator""_rune (char32_t cp) noexcept
 User-defined literal for creating Rune from Unicode codepoint.
void swap (RuneString &lhs, RuneString &rhs) noexcept
 Swap two RuneString objects.

Variables

template<typename T>
constexpr bool is_spell_v = spell_concept<T>
template<typename Spell, typename Input>
constexpr bool can_spell_process_v = spell_for<Spell, Input>
template<typename Spell1, typename Spell2>
constexpr bool chainable_v = chainable_spells<Spell1, Spell2>
template<typename T>
constexpr bool is_sequence_spell_v = sequence_spell_concept<T>
constexpr int version_major = 1
constexpr int version_minor = 0
constexpr int version_patch = 0
constexpr const char * version_string = "1.0.0"
constexpr const char * version_name = "Rune Caster"
constexpr const char * version_description = "Modern C++ Text Processing Framework"

Typedef Documentation

◆ RuneSequence

Backward compatibility alias for RuneString.

This allows existing code using RuneSequence to continue working while transitioning to the new RuneString API.

Examples
Basic.

Definition at line 429 of file rune_sequence.hpp.

◆ sequence_spell

Most common spell type: RuneSequence -> RuneSequence.

This is the standard spell interface that most text processing algorithms will implement.

Definition at line 91 of file spell_base.hpp.

Function Documentation

◆ make_caster()

template<typename T>
auto rune_caster::make_caster ( T && data) -> caster<std::decay_t<T>>
constexprnoexcept

Factory function to create a caster (C++20 template argument deduction)

This function enables the fluent interface pattern: auto result = make_caster(data).cast(spell1).cast(spell2).result();

Template Parameters
TThe type of data (automatically deduced)
Parameters
dataThe data to wrap in a caster
Returns
A caster object ready for spell application

Definition at line 124 of file caster.hpp.

◆ operator""_rune()

Rune rune_caster::operator""_rune ( char32_t cp)
constexprnoexcept

User-defined literal for creating Rune from Unicode codepoint.

Parameters
cpUnicode codepoint
Returns
Rune object

Usage: auto rune = U'가'_rune;

Definition at line 269 of file rune.hpp.

◆ operator|() [1/2]

template<typename T, spell_for< T > Spell>
auto rune_caster::operator| ( caster< T > && caster_obj,
Spell && spell )
constexpr

Pipe operator for chaining casters (C++20 concepts)

Definition at line 154 of file caster.hpp.

◆ operator|() [2/2]

template<typename T, spell_concept Spell>
requires spell_for<Spell, std::decay_t<T>> || (requires { RuneSequence::from_utf8(std::declval<T>()); } && spell_for<Spell, RuneSequence>)
auto rune_caster::operator| ( T && data,
Spell && spell )
constexpr

Pipe operator for functional programming style (C++20 concepts)

Enables: data | spell1 | spell2 | ... This is an alternative to the fluent interface.

Definition at line 138 of file caster.hpp.

◆ swap()

void rune_caster::swap ( RuneString & lhs,
RuneString & rhs )
inlinenoexcept

Swap two RuneString objects.

Parameters
lhsFirst RuneString
rhsSecond RuneString

Definition at line 438 of file rune_sequence.hpp.

Variable Documentation

◆ can_spell_process_v

template<typename Spell, typename Input>
bool rune_caster::can_spell_process_v = spell_for<Spell, Input>
constexpr

Definition at line 147 of file spell_base.hpp.

◆ chainable_v

template<typename Spell1, typename Spell2>
bool rune_caster::chainable_v = chainable_spells<Spell1, Spell2>
constexpr

Definition at line 150 of file spell_base.hpp.

◆ is_sequence_spell_v

template<typename T>
bool rune_caster::is_sequence_spell_v = sequence_spell_concept<T>
constexpr

Definition at line 153 of file spell_base.hpp.

◆ is_spell_v

template<typename T>
bool rune_caster::is_spell_v = spell_concept<T>
constexpr

Definition at line 144 of file spell_base.hpp.

◆ version_description

const char* rune_caster::version_description = "Modern C++ Text Processing Framework"
constexpr

Definition at line 11 of file version.hpp.

◆ version_major

int rune_caster::version_major = 1
constexpr

Definition at line 5 of file version.hpp.

◆ version_minor

int rune_caster::version_minor = 0
constexpr

Definition at line 6 of file version.hpp.

◆ version_name

const char* rune_caster::version_name = "Rune Caster"
constexpr

Definition at line 10 of file version.hpp.

◆ version_patch

int rune_caster::version_patch = 0
constexpr

Definition at line 7 of file version.hpp.

◆ version_string

const char* rune_caster::version_string = "1.0.0"
constexpr

Definition at line 9 of file version.hpp.