Ariles
Loading...
Searching...
No Matches
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
23namespace 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