Ariles
process.h
Go to the documentation of this file.
1 /**
2  @file
3  @author Alexander Sherikov
4 
5  @copyright 2017-2020 Alexander Sherikov, Licensed under the Apache License, Version 2.0.
6  (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
7 
8  @brief
9 */
10 
11 #pragma once
12 
13 #include "common.h"
14 
15 /**
16 @defgroup process Process
17 
18 @brief Process entries, base for @ref prewrite and @ref finalize.
19 */
20 
21 namespace ariles2
22 {
23  namespace process
24  {
25  template <class t_Derived, class t_Parameters>
27  : public ariles2::visitor::Base<visitor::GenericVisitor, t_Parameters>
28  {
29  public:
31 
32 
33  public:
35 
36  template <class t_Ariles>
37  const t_Parameters &getParameters(const t_Ariles &ariles_class) const
38  {
39  return (ariles_class.arilesGetParameters(*(static_cast<t_Derived *>(this))));
40  }
41 
42 
43  template <class t_Entry>
44  void visit(t_Entry &entry, const std::string &name, const Parameters &param) const
45  {
46  ARILES2_TRACE_FUNCTION;
47  this->visitMapEntry(entry, name, param);
48  }
49 
50 
51  template <class t_Entry>
52  void visitMapEntry(t_Entry &entry, const std::string &name, const Parameters &param) const
53  {
54  ARILES2_UNUSED_ARG(name);
55  ARILES2_TRACE_FUNCTION;
56  ARILES2_TRACE_VALUE(name);
57  ARILES2_TRACE_TYPE(entry);
58  apply_process(*(static_cast<t_Derived *>(this)), entry, param);
59  }
60  };
61  } // namespace process
62 } // namespace ariles2
ariles2
Definition: basic.h:16
ariles2::visitor::Base
Definition: common.h:50
ariles2::process::Visitor::visitMapEntry
void visitMapEntry(t_Entry &entry, const std::string &name, const Parameters &param) const
Definition: process.h:52
t_Parameters
ariles2::prewrite::Parameters
Definition: prewrite.h:28
ariles2::process::apply_process
void ARILES2_VISIBILITY_ATTRIBUTE apply_process(const t_Visitor &visitor, t_Entry &entry, const typename t_Visitor::Parameters &param, ARILES2_IS_BASE_ENABLER(ariles2::Ariles, t_Entry))
Definition: basic.h:293
ariles2::process::Visitor::getParameters
const t_Parameters & getParameters(const t_Ariles &ariles_class) const
Definition: process.h:37
common.h
ariles2::process::Visitor::Parameters
t_Parameters Parameters
Definition: process.h:30
ariles2::process::Visitor
Definition: process.h:26
ariles2::process::Visitor::visit
void visit(t_Entry &entry, const std::string &name, const Parameters &param) const
Definition: process.h:44
ARILES2_VISIBILITY_ATTRIBUTE
#define ARILES2_VISIBILITY_ATTRIBUTE
Definition: helpers.h:138