Ariles
Loading...
Searching...
No Matches
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
21namespace 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
#define CPPUT_TRACE_FUNCTION
Definition trace.h:126
#define CPPUT_TRACE_TYPE(type)
Definition trace.h:128