Ariles
count.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 
15 /**
16 @defgroup count Count
17 
18 @brief Counts number of entries.
19 */
20 
21 namespace ariles2
22 {
23  /// @ingroup count
24  namespace count
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(v, entry, name) +1
50 #define ARILES2_PARENT_count(v, entry) +entry::arilesVisit(visitor, parameters)
51 
52 #define ARILES2_VISIT_count \
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::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)); \
63  }
64 
65 #define ARILES2_METHODS_count \
66  std::size_t arilesVirtualVisit( \
67  const ariles2::count::Visitor &visitor, const ariles2::count::Visitor::Parameters &param) const override \
68  { \
69  CPPUT_TRACE_FUNCTION; \
70  return (this->arilesVisit(visitor, param)); \
71  } \
72  using ariles2::count::Base::arilesGetParameters;
73 
74 #define ARILES2_BASE_METHODS_count ARILES2_BASE_METHODS(count)
75  } // namespace count
76 
77 
78  /// @ingroup count
80 } // namespace ariles2
std::size_t visit(const t_Entry &entry, const std::string &, const Parameters &param) const
Definition: count.h:37
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