Chrysalis - Pattern
Loading...
Searching...
No Matches
PatternsContainerArgument.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_PATTERNSCONTAINERARGUMENT_H
2#define CHRYSALIS_PATTERNSCONTAINERARGUMENT_H
3
4#include "PatternSpace.h"
5
9namespace Chrysalis {
10 class PatternsContainerArgument: public AssociativeContainer<PatternSpace> {
12 public:
13 explicit PatternsContainerArgument() = default;
14 explicit PatternsContainerArgument(std::initializer_list<PatternSpace*>&& items): AssociativeContainer(items) {}
15
16 [[nodiscard]] bool empty() const {
17 return count() == 0;
18 }
19 template<typename... Args>
20 bool all(bool (PatternSpace::* check)(Args...) const, std::type_identity_t<Args>... args) const {
21 return std::all_of(begin(), end(), [&](const PatternSpace* item) {
22 return (item->*check)(args...);
23 });
24 }
25 template<typename R, typename... Args>
26 R onAny(R (PatternSpace::* method)(Args...) const, std::type_identity_t<Args>... args) const {
27 return (*begin()->*method)(args...);
28 }
29 };
30 namespace args {
32 }
33}
35
36#endif //CHRYSALIS_PATTERNSCONTAINERARGUMENT_H
size_t count() const
Definition AssociativeContainer.h:21
std::vector< PatternSpace * >::const_iterator end() const
Definition AssociativeContainer.h:27
std::vector< PatternSpace * >::const_iterator begin() const
Definition AssociativeContainer.h:24
Definition PatternSpace.h:14
Definition PatternsContainerArgument.h:10
PatternsContainerArgument(std::initializer_list< PatternSpace * > &&items)
Definition PatternsContainerArgument.h:14
bool empty() const
Definition PatternsContainerArgument.h:16
bool all(bool(PatternSpace::*check)(Args...) const, std::type_identity_t< Args >... args) const
Definition PatternsContainerArgument.h:20
R onAny(R(PatternSpace::*method)(Args...) const, std::type_identity_t< Args >... args) const
Definition PatternsContainerArgument.h:26
Definition Argument.h:26
PatternsContainerArgument patterns
Definition PatternsContainerArgument.h:31
Definition Argument.h:9
#define SERIALIZE_DERIVED_FROM(Base,...)
Definition serialization.h:71