Ariles
count_missing.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 "count.h"
14 
15 /**
16 @defgroup count_missing Count missing entries
17 
18 @brief Counts number of missing entries.
19 */
20 
21 namespace ariles2
22 {
23  /// @ingroup count_missing
24  namespace count_missing
25  {
27 
28 
29  class Visitor : public ariles2::visitor::Base<Visitor, count::Parameters, std::size_t>
30  {
31  public:
33 
34 
35  public:
36  template <class t_Entry>
37  std::size_t visit(const t_Entry &entry, const std::string &, const Parameters &param) const
38  {
40  CPPUT_TRACE_TYPE(entry);
41  return (entry.arilesVirtualVisit(*this, param));
42  }
43  };
44 
45 
47 
48 
49 #define ARILES2_NAMED_ENTRY_count_missing(v, entry, name) +ariles2::isMissing(entry)
50 #define ARILES2_PARENT_count_missing(v, entry) +entry::arilesVisit(visitor, parameters)
51 
52 #define ARILES2_VISIT_count_missing \
53  template <class t_Visitor> /* cppcheck-suppress duplInheritedMember */ \
54  std::size_t arilesVisit( \
55  const t_Visitor &visitor, \
56  const typename t_Visitor::Parameters &parameters, \
57  ARILES2_IS_BASE_ENABLER(ariles2::count_missing::Visitor, t_Visitor)) const \
58  { \
59  CPPUT_UNUSED_ARG(visitor); \
60  CPPUT_UNUSED_ARG(parameters); \
61  CPPUT_TRACE_FUNCTION; \
62  return (0 ARILES2_ENTRIES(count_missing)); \
63  }
64 
65 #define ARILES2_METHODS_count_missing \
66  std::size_t arilesVirtualVisit( \
67  const ariles2::count_missing::Visitor &visitor, const ariles2::count_missing::Visitor::Parameters &param) \
68  const override \
69  { \
70  CPPUT_TRACE_FUNCTION; \
71  return (this->arilesVisit(visitor, param)); \
72  } \
73  using ariles2::count_missing::Base::arilesGetParameters;
74 
75 #define ARILES2_BASE_METHODS_count_missing ARILES2_BASE_METHODS(count_missing)
76  } // namespace count_missing
77 
78 
79  /// @ingroup count_missing
81 } // namespace ariles2
std::size_t visit(const t_Entry &entry, const std::string &, const Parameters &param) const
Definition: count_missing.h:37
visitor::Parameters Parameters
Definition: count_missing.h:26
visitor::Parameters Parameters
Definition: count.h:26
Definition: basic.h:17
#define CPPUT_TRACE_FUNCTION
Definition: trace.h:126
#define CPPUT_TRACE_TYPE(type)
Definition: trace.h:128