Rune Caster 1.0.0
Modern C++ Text Processing Framework
Loading...
Searching...
No Matches
spell_base.hpp File Reference
#include <string>
#include <type_traits>
#include <concepts>
#include <functional>
#include <utility>
#include <ranges>
#include "rune_sequence.hpp"
Include dependency graph for spell_base.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  rune_caster::spell_base< Input, Output >
 Base interface for all spell algorithms with C++20 enhancements. More...

Namespaces

namespace  rune_caster

Concepts

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

Typedefs

using rune_caster::sequence_spell = spell_base<RuneSequence>
 Most common spell type: RuneSequence -> RuneSequence.

Variables

template<typename T>
constexpr bool rune_caster::is_spell_v = spell_concept<T>
template<typename Spell, typename Input>
constexpr bool rune_caster::can_spell_process_v = spell_for<Spell, Input>
template<typename Spell1, typename Spell2>
constexpr bool rune_caster::chainable_v = chainable_spells<Spell1, Spell2>
template<typename T>
constexpr bool rune_caster::is_sequence_spell_v = sequence_spell_concept<T>