Ariles
prewrite.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 prewrite PreWrite
18 @ingroup process
19 
20 @brief Preprocess entries, e.g., pack values before serialization.
21 */
22 
23 namespace ariles2
24 {
25  /// @ingroup prewrite
26  namespace prewrite
27  {
29  {
30  public:
31  Parameters(const bool override_parameters = true) : visitor::Parameters(override_parameters)
32  {
33  }
34  };
35 
36 
38  : public ariles2::process::Visitor<const prewrite::Visitor, prewrite::Parameters>
39  {
40  };
41 
42 
43  class ARILES2_VISIBILITY_ATTRIBUTE Base : public entry::Base<const prewrite::Visitor>
44  {
45  };
46 
47 
48 #define ARILES2_NAMED_ENTRY_prewrite(v, entry, name) visitor.visitMapEntry(entry, #name, parameters);
49 #define ARILES2_PARENT_prewrite(v, entry)
50 #define ARILES2_VISIT_prewrite \
51  template <class t_Visitor> \
52  void arilesVisit( \
53  const t_Visitor &visitor, \
54  const typename t_Visitor::Parameters &parameters, \
55  ARILES2_IS_BASE_ENABLER(ariles2::prewrite::Visitor, t_Visitor)) \
56  { \
57  ARILES2_TRACE_FUNCTION; \
58  ARILES2_UNUSED_ARG(visitor); \
59  ARILES2_UNUSED_ARG(parameters); \
60  arilesVisitParents(visitor, parameters); \
61  ARILES2_ENTRIES(prewrite) \
62  }
63 
64 #define ARILES2_METHODS_prewrite ARILES2_METHODS(prewrite, const, ARILES2_EMPTY_MACRO)
65 #define ARILES2_BASE_METHODS_prewrite ARILES2_BASE_METHODS(prewrite)
66  } // namespace prewrite
67 
68 
69  /// @ingroup prewrite
71 } // namespace ariles2
ariles2
Definition: basic.h:16
ariles2::prewrite::Base
Definition: prewrite.h:43
ariles2::entry::Base
Definition: common.h:86
ariles2::prewrite::Parameters
Definition: prewrite.h:28
ariles2::prewrite::Parameters::Parameters
Parameters(const bool override_parameters=true)
Definition: prewrite.h:31
process.h
ariles2::PreWrite
prewrite::Visitor PreWrite
Definition: prewrite.h:70
common.h
ariles2::prewrite::Visitor
Definition: prewrite.h:37
ariles2::process::Visitor
Definition: process.h:26
ARILES2_VISIBILITY_ATTRIBUTE
#define ARILES2_VISIBILITY_ATTRIBUTE
Definition: helpers.h:138
ariles2::visitor::Parameters
Definition: common.h:20