Vcsn  2.8
Be Rational
vcsn::rat::variadic< Type, Context > Class Template Reference

An inner node with multiple children. More...

#include <expression.hh>

Inheritance diagram for vcsn::rat::variadic< Type, Context >:
Collaboration diagram for vcsn::rat::variadic< Type, Context >:

Public Types

using super_t = inner< Context >
 
using value_t = typename super_t::value_t
 
using values_t = typename super_t::values_t
 
using const_iterator = typename values_t::const_iterator
 
using iterator = const_iterator
 
- Public Types inherited from vcsn::rat::inner< Context >
using super_t = node< Context >
 
using value_t = typename super_t::value_t
 
- Public Types inherited from vcsn::rat::node< Context >
using context_t = Context
 
using node_t = rat::node< context_t >
 
using value_t = std::shared_ptr< const node_t >
 An expression usable with value semantics. More...
 
using values_t = std::vector< value_t >
 
using const_visitor = vcsn::rat::const_visitor< context_t >
 
- Public Types inherited from vcsn::rat::exp
using type_t = rat::type_t
 The possible types of expressions. More...
 

Public Member Functions

virtual type_t type () const
 The type of this node. More...
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
const value_t operator[] (size_t n) const
 Access the n-th element. More...
 
const value_t head () const
 The first item of this variadic. More...
 
const value_t back () const
 The last item of this variadic. More...
 
auto tail () const -> decltype(boost::make_iterator_range(*this, 1, 0))
 The non-first items. More...
 
 variadic (values_t ns=values_t())
 
template<typename... Vs>
 variadic (Vs &&... vs)
 
values_t subs () const
 Return a copy of children. More...
 
virtual void accept (typename super_t::const_visitor &v) const
 
- Public Member Functions inherited from vcsn::rat::exp
virtual ~exp ()=default
 
bool is_unary () const
 Whether star, complement. More...
 
bool is_leaf () const
 Whether a leaf of the expression tree. More...
 

Private Attributes

values_t sub_
 

Detailed Description

template<exp::type_t Type, typename Context>
class vcsn::rat::variadic< Type, Context >

An inner node with multiple children.

Implements the Composite Design Pattern.

Definition at line 119 of file expression.hh.

Member Typedef Documentation

◆ const_iterator

template<exp::type_t Type, typename Context>
using vcsn::rat::variadic< Type, Context >::const_iterator = typename values_t::const_iterator

Definition at line 129 of file expression.hh.

◆ iterator

template<exp::type_t Type, typename Context>
using vcsn::rat::variadic< Type, Context >::iterator = const_iterator

Definition at line 133 of file expression.hh.

◆ super_t

template<exp::type_t Type, typename Context>
using vcsn::rat::variadic< Type, Context >::super_t = inner<Context>

Definition at line 125 of file expression.hh.

◆ value_t

template<exp::type_t Type, typename Context>
using vcsn::rat::variadic< Type, Context >::value_t = typename super_t::value_t

Definition at line 126 of file expression.hh.

◆ values_t

template<exp::type_t Type, typename Context>
using vcsn::rat::variadic< Type, Context >::values_t = typename super_t::values_t

Definition at line 127 of file expression.hh.

Constructor & Destructor Documentation

◆ variadic() [1/2]

template<type_t Type, typename Context >
vcsn::rat::variadic< Type, Context >::variadic ( values_t  ns = values_t())

Definition at line 85 of file expression.hxx.

◆ variadic() [2/2]

template<exp::type_t Type, typename Context>
template<typename... Vs>
vcsn::rat::variadic< Type, Context >::variadic ( Vs &&...  vs)
inline

Definition at line 156 of file expression.hh.

References vcsn::v.

Member Function Documentation

◆ accept()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::accept ( typename super_t::const_visitor v) const
virtual

Implements vcsn::rat::node< Context >.

Definition at line 138 of file expression.hxx.

References vcsn::v.

◆ back()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::back ( ) const

The last item of this variadic.

Definition at line 120 of file expression.hxx.

◆ begin()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::begin ( ) const

Definition at line 90 of file expression.hxx.

◆ end()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::end ( ) const

Definition at line 96 of file expression.hxx.

◆ head()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::head ( ) const

The first item of this variadic.

Definition at line 114 of file expression.hxx.

Referenced by vcsn::detail::transpose_impl< ExpSet >::visit_().

◆ operator[]()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::operator[] ( size_t  n) const

Access the n-th element.

precondition 0 <= n < size.

Definition at line 108 of file expression.hxx.

◆ size()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::size ( ) const

Definition at line 102 of file expression.hxx.

◆ subs()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::subs ( ) const

Return a copy of children.

Definition at line 132 of file expression.hxx.

◆ tail()

template<type_t Type, typename Context >
auto vcsn::rat::variadic< Type, Context >::tail ( ) const -> decltype(boost::make_iterator_range(*this, 1, 0))

The non-first items.

Definition at line 126 of file expression.hxx.

Referenced by vcsn::detail::transpose_impl< ExpSet >::visit_().

◆ type()

template<exp::type_t Type, typename Context>
virtual type_t vcsn::rat::variadic< Type, Context >::type ( ) const
inlinevirtual

The type of this node.

Implements vcsn::rat::exp.

Definition at line 135 of file expression.hh.

References vcsn::detail::back(), and vcsn::rat::size().

Here is the call graph for this function:

Member Data Documentation

◆ sub_

template<exp::type_t Type, typename Context>
values_t vcsn::rat::variadic< Type, Context >::sub_
private

Definition at line 166 of file expression.hh.


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