Ariles
Classes | Namespaces | Macros | Typedefs | Functions
common.h File Reference

Detailed Description

Author
Alexander Sherikov

Definition in file common.h.

Go to the source code of this file.

#include <utility>
#include <vector>
#include <string_view>
#include "../internal/helpers.h"

Classes

class  ariles2::visitor::Parameters
 
class  ariles2::visitor::Visitor
 
class  ariles2::visitor::Base< t_Derived, t_Parameters, t_ReturnType >
 
class  ariles2::entry::Base< t_Visitor >
 
class  ariles2::entry::ConstBase< t_Visitor >
 

Namespaces

 ariles2
 
 ariles2::visitor
 
 ariles2::entry
 
 ariles2::traits
 

Macros

#define ARILES2_BASE_METHODS(Namespace)
 
#define ARILES2_METHODS(Namespace, VisitorQualifier, MethodQualifier)
 
#define ARILES2_ENABLED
 

Typedefs

template<class t_Subtree >
using ariles2::traits::is_subtree = std::disjunction< std::is_same< std::string, std::decay_t< t_Subtree > >, std::is_same< char *, std::decay_t< t_Subtree > >, std::is_same< const char *, std::decay_t< t_Subtree > >, std::is_same< std::string_view, std::decay_t< t_Subtree > >, std::is_same< std::vector< std::string >, std::decay_t< t_Subtree > >>
 
template<class t_Subtree >
using ariles2::traits::is_subtree_t = std::enable_if_t< is_subtree< t_Subtree >::value >
 
template<class t_Subtree >
using ariles2::traits::is_not_subtree_t = std::enable_if_t< not is_subtree< t_Subtree >::value >
 
template<class t_Visitor >
using ariles2::traits::is_visitor_t = std::enable_if_t< std::is_base_of_v< ariles2::visitor::Visitor, t_Visitor > >
 
template<class t_Visitor >
using ariles2::traits::is_not_visitor_t = std::enable_if_t< not std::is_base_of_v< ariles2::visitor::Visitor, t_Visitor > >
 
template<class t_Ariles >
using ariles2::traits::is_ariles_t = std::enable_if_t< std::is_base_of_v< ariles2::Ariles, t_Ariles > >
 
template<class t_Ariles >
using ariles2::traits::is_not_ariles_t = std::enable_if_t< not std::is_base_of_v< ariles2::Ariles, t_Ariles > >
 

Functions

template<class t_Ariles , class t_Visitor , class t_Subtree , typename = traits::is_subtree_t<t_Subtree>, typename = traits::is_visitor_t<t_Visitor>>
t_Visitor::ReturnType ariles2::apply (t_Visitor &visitor, t_Ariles &ariles_class, t_Subtree &&subtree, const typename t_Visitor::Parameters &param)
 
template<class t_Visitor , class t_Ariles , typename = traits::is_visitor_t<t_Visitor>>
t_Visitor::ReturnType ariles2::apply (t_Visitor &visitor, t_Ariles &ariles_class, const typename t_Visitor::Parameters &param)
 
template<class t_Visitor , class t_Ariles , class t_Subtree , typename = traits::is_subtree_t<t_Subtree>, typename = traits::is_visitor_t<t_Visitor>>
t_Visitor::ReturnType ariles2::apply (t_Visitor &visitor, t_Ariles &ariles_class, t_Subtree &&subtree)
 
template<class t_Visitor , class t_Ariles , typename = traits::is_visitor_t<t_Visitor>>
t_Visitor::ReturnType ariles2::apply (t_Visitor &visitor, t_Ariles &ariles_class)
 
template<class t_Visitor , class t_Ariles , typename = traits::is_visitor_t<t_Visitor>, typename = traits::is_ariles_t<t_Ariles>>
t_Visitor::ReturnType ariles2::apply (t_Ariles &ariles_class)
 
template<class t_Visitor , typename t_Arg , typename... t_Args, typename = traits::is_not_visitor_t<t_Arg>, typename = traits::is_not_ariles_t<t_Arg>>
t_Visitor::ReturnType ariles2::apply (t_Arg &&arg, t_Args &&...args)
 
template<class t_Visitor , class t_Left , class t_Right , typename = traits::is_visitor_t<t_Visitor>, typename = traits::is_ariles_t<t_Left>, typename = traits::is_not_subtree_t<t_Right>>
t_Visitor::ReturnType ariles2::apply (t_Left &left, t_Right &right)
 
template<class t_Visitor , class t_Left , class t_Right , typename = traits::is_not_subtree_t<t_Right>, typename = traits::is_visitor_t<t_Visitor>>
t_Visitor::ReturnType ariles2::apply (t_Visitor &visitor, t_Left &left, t_Right &right, const std::string &name, const typename t_Visitor::Parameters &param)
 
template<class t_Visitor , class t_Left , class t_Right , typename = traits::is_visitor_t<t_Visitor>, typename = traits::is_not_subtree_t<t_Right>, typename = std::enable_if_t<not std::is_base_of_v<typename t_Visitor::Parameters, t_Right>>>
t_Visitor::ReturnType ariles2::apply (t_Visitor &visitor, t_Left &left, t_Right &right)
 
template<class t_Visitor , class t_Left , class t_Right , typename = traits::is_not_subtree_t<t_Right>, typename = traits::is_visitor_t<t_Visitor>>
t_Visitor::ReturnType ariles2::apply (t_Visitor &visitor, t_Left &left, t_Right &right, const typename t_Visitor::Parameters &param)
 

Macro Definition Documentation

◆ ARILES2_BASE_METHODS

#define ARILES2_BASE_METHODS (   Namespace)
Value:
using Namespace::Base::arilesVirtualVisit; \
using Namespace::Base::arilesGetParameters;

Definition at line 68 of file common.h.

◆ ARILES2_ENABLED

#define ARILES2_ENABLED

Definition at line 150 of file common.h.

◆ ARILES2_METHODS

#define ARILES2_METHODS (   Namespace,
  VisitorQualifier,
  MethodQualifier 
)
Value:
void arilesVirtualVisit( \
VisitorQualifier ariles2::Namespace::Visitor &visitor, \
const ariles2::Namespace::Visitor::Parameters &param) MethodQualifier override \
{ \
CPPUT_TRACE_FUNCTION; \
this->arilesVisit(visitor, param); \
} \
using ariles2::Namespace::Base::arilesGetParameters;
visitor::Parameters Parameters
Definition: count.h:26

Definition at line 72 of file common.h.