Ariles
Loading...
Searching...
No Matches
include
ariles2
visitors
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
{
28
using
Parameters
=
visitor::Parameters
;
29
30
31
class
Visitor
:
public
ariles2::process::Visitor
<const finalize::Visitor, finalize::Parameters>
32
{
33
public
:
34
using
ariles2::process::Visitor
<
const
finalize::Visitor
,
finalize::Parameters
>
::visit
;
35
36
template
<
class
t_Entry>
37
void
visit
(t_Entry &entry,
const
std::vector<std::string> &subtree,
const
Parameters
¶m)
const
38
{
39
visit
(entry, subtree.empty() ?
""
: subtree.back(), param);
40
}
41
};
42
43
44
using
Base
=
entry::Base<const finalize::Visitor>
;
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 ¶meters, \
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
*/
72
using
Finalize
=
finalize::Visitor
;
73
/// @}
74
}
// namespace ariles2
ariles2::entry::Base
Definition
common.h:87
ariles2::finalize::Visitor
Definition
finalize.h:32
ariles2::finalize::Visitor::visit
void visit(t_Entry &entry, const std::vector< std::string > &subtree, const Parameters ¶m) const
Definition
finalize.h:37
ariles2::process::Visitor
Definition
process.h:27
ariles2::visitor::Parameters
Definition
common.h:24
common.h
ariles2
Definition
basic.h:17
process.h
Generated by
1.9.8