Chrysalis - Pattern
Toggle main menu visibility
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
9
namespace
Chrysalis
{
10
class
PatternsContainerArgument
:
public
AssociativeContainer
<PatternSpace> {
11
SERIALIZE_DERIVED_FROM
(
AssociativeContainer
)
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 {
31
using
patterns
=
PatternsContainerArgument
;
32
}
33
}
35
36
#endif
//CHRYSALIS_PATTERNSCONTAINERARGUMENT_H
PatternSpace.h
Chrysalis::AssociativeContainer< PatternSpace >::AssociativeContainer
AssociativeContainer()=default
Chrysalis::AssociativeContainer< PatternSpace >::count
size_t count() const
Definition
AssociativeContainer.h:21
Chrysalis::AssociativeContainer< PatternSpace >::end
std::vector< PatternSpace * >::const_iterator end() const
Definition
AssociativeContainer.h:27
Chrysalis::AssociativeContainer< PatternSpace >::begin
std::vector< PatternSpace * >::const_iterator begin() const
Definition
AssociativeContainer.h:24
Chrysalis::PatternSpace
Definition
PatternSpace.h:14
Chrysalis::PatternsContainerArgument
Definition
PatternsContainerArgument.h:10
Chrysalis::PatternsContainerArgument::PatternsContainerArgument
PatternsContainerArgument(std::initializer_list< PatternSpace * > &&items)
Definition
PatternsContainerArgument.h:14
Chrysalis::PatternsContainerArgument::empty
bool empty() const
Definition
PatternsContainerArgument.h:16
Chrysalis::PatternsContainerArgument::PatternsContainerArgument
PatternsContainerArgument()=default
Chrysalis::PatternsContainerArgument::all
bool all(bool(PatternSpace::*check)(Args...) const, std::type_identity_t< Args >... args) const
Definition
PatternsContainerArgument.h:20
Chrysalis::PatternsContainerArgument::onAny
R onAny(R(PatternSpace::*method)(Args...) const, std::type_identity_t< Args >... args) const
Definition
PatternsContainerArgument.h:26
Chrysalis::args
Definition
Argument.h:26
Chrysalis::args::patterns
PatternsContainerArgument patterns
Definition
PatternsContainerArgument.h:31
Chrysalis
Definition
Argument.h:9
SERIALIZE_DERIVED_FROM
#define SERIALIZE_DERIVED_FROM(Base,...)
Definition
serialization.h:71
pattern
include
arguments
PatternsContainerArgument.h
Generated by
1.17.0