mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Private Attributes
m::detail::Visitor< ConcreteVisitor, Base > Struct Template Reference

Visitor base class, using CRTP. More...

#include <Visitor.hpp>

Inheritance diagram for m::detail::Visitor< ConcreteVisitor, Base >:
[legend]
Collaboration diagram for m::detail::Visitor< ConcreteVisitor, Base >:
[legend]

Public Types

using base_type = Base
 The base class of the class hierarchy to visit.
 
using visitor_type = ConcreteVisitor
 The concrete type of the visitor.
 
template<typename T >
using Const = std::conditional_t< is_const, const T, T >
 A helper type to apply the proper const-qualification to parameters.
 
using actual_type = ConcreteVisitor
 

Public Member Functions

virtual ~Visitor ()
 Make Visitor inheritable from.
 
virtual void operator() (base_type &obj)
 Visit the object obj.
 
actual_typeactual ()
 
const actual_typeactual () const
 

Static Public Attributes

static constexpr bool is_const = std::is_const_v<Base>
 Whether the visited objects are const-qualified.
 

Private Attributes

friend CRTPBaseType< actual_type, TParams... >
 

Detailed Description

template<typename ConcreteVisitor, typename Base>
struct m::detail::Visitor< ConcreteVisitor, Base >

Visitor base class, using CRTP.

Template Parameters
ConcreteVisitoris the actual type of the visitor,
Baseis the base type of the class hierarchy to visit.

Definition at line 29 of file Visitor.hpp.

Member Typedef Documentation

◆ actual_type

using m::crtp< ConcreteVisitor , Visitor , TParams >::actual_type = ConcreteVisitor
inherited

Definition at line 51 of file crtp.hpp.

◆ base_type

template<typename ConcreteVisitor , typename Base >
using m::detail::Visitor< ConcreteVisitor, Base >::base_type = Base

The base class of the class hierarchy to visit.

Definition at line 37 of file Visitor.hpp.

◆ Const

template<typename ConcreteVisitor , typename Base >
template<typename T >
using m::detail::Visitor< ConcreteVisitor, Base >::Const = std::conditional_t<is_const, const T, T>

A helper type to apply the proper const-qualification to parameters.

Definition at line 44 of file Visitor.hpp.

◆ visitor_type

template<typename ConcreteVisitor , typename Base >
using m::detail::Visitor< ConcreteVisitor, Base >::visitor_type = ConcreteVisitor

The concrete type of the visitor.

Uses the CRTP design.

Definition at line 40 of file Visitor.hpp.

Constructor & Destructor Documentation

◆ ~Visitor()

template<typename ConcreteVisitor , typename Base >
virtual m::detail::Visitor< ConcreteVisitor, Base >::~Visitor ( )
inlinevirtual

Make Visitor inheritable from.

Definition at line 47 of file Visitor.hpp.

Member Function Documentation

◆ actual() [1/2]

actual_type & m::crtp< ConcreteVisitor , Visitor , TParams >::actual ( )
inlineinherited

Definition at line 52 of file crtp.hpp.

◆ actual() [2/2]

const actual_type & m::crtp< ConcreteVisitor , Visitor , TParams >::actual ( ) const
inlineinherited

Definition at line 53 of file crtp.hpp.

◆ operator()()

template<typename ConcreteVisitor , typename Base >
virtual void m::detail::Visitor< ConcreteVisitor, Base >::operator() ( base_type obj)
inlinevirtual

Visit the object obj.

Definition at line 50 of file Visitor.hpp.

References m::crtp< ConcreteVisitor, Visitor, Base >::actual().

Field Documentation

◆ CRTPBaseType< actual_type, TParams... >

friend m::crtp< ConcreteVisitor , Visitor , TParams >::Visitor < actual_type, TParams... >
privateinherited

Definition at line 57 of file crtp.hpp.

◆ is_const

template<typename ConcreteVisitor , typename Base >
constexpr bool m::detail::Visitor< ConcreteVisitor, Base >::is_const = std::is_const_v<Base>
staticconstexpr

Whether the visited objects are const-qualified.

Definition at line 34 of file Visitor.hpp.


The documentation for this struct was generated from the following file: