Ariles
finalize.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 #include "process.h"
15 
16 /**
17 @defgroup finalize Finalize
18 @ingroup process
19 
20 @brief Postprocess entries, e.g., validate after deserialization.
21 */
22 
23 namespace ariles2
24 {
25  /// @ingroup finalize
26  namespace finalize
27  {
29 
30 
31  class Visitor : public ariles2::process::Visitor<const finalize::Visitor, finalize::Parameters>
32  {
33  public:
35 
36  template <class t_Entry>
37  void visit(t_Entry &entry, const std::vector<std::string> &subtree, const Parameters &param) const
38  {
39  visit(entry, subtree.empty() ? "" : subtree.back(), param);
40  }
41  };
42 
43 
45 
46 
47 #define ARILES2_NAMED_ENTRY_finalize(v, entry, name) visitor.visitMapEntry(entry, #name, parameters);
48 #define ARILES2_PARENT_finalize(v, entry)
49 #define ARILES2_VISIT_finalize \
50  template <class t_Visitor> /* cppcheck-suppress duplInheritedMember */ \
51  void arilesVisit( \
52  const t_Visitor &visitor, \
53  const typename t_Visitor::Parameters &parameters, \
54  ARILES2_IS_BASE_ENABLER(ariles2::finalize::Visitor, t_Visitor)) \
55  { \
56  CPPUT_TRACE_FUNCTION; \
57  CPPUT_UNUSED_ARG(visitor); \
58  CPPUT_UNUSED_ARG(parameters); \
59  arilesVisitParents(visitor, parameters); \
60  ARILES2_ENTRIES(finalize) \
61  }
62 
63 #define ARILES2_METHODS_finalize ARILES2_METHODS(finalize, const, ARILES2_EMPTY_MACRO)
64 #define ARILES2_BASE_METHODS_finalize ARILES2_BASE_METHODS(finalize)
65  } // namespace finalize
66 
67 
68  /**
69  * @ingroup defaults
70  * @{
71  */
73  /// @}
74 } // namespace ariles2
void visit(t_Entry &entry, const std::vector< std::string > &subtree, const Parameters &param) const
Definition: finalize.h:37
visitor::Parameters Parameters
Definition: finalize.h:28
Definition: basic.h:17