Chrysalis - Pattern
Toggle main menu visibility
Loading...
Searching...
No Matches
ComparisonArgument.h
Go to the documentation of this file.
1
#ifndef CHRYSALIS_COMPARISONARGUMENT_H
2
#define CHRYSALIS_COMPARISONARGUMENT_H
3
4
#define COMPARISONS (Equal)(NotEqual)(Greater)(GreaterEqual)(Less)(LessEqual)
5
6
#include "
BaseCalculatedArgument.h
"
7
11
namespace
Chrysalis
{
12
class
ComparisonArgument
:
public
BaseCalculatedArgument
<bool> {
13
SERIALIZE_DERIVED_FROM
(
BaseCalculatedArgument
)
14
protected
:
15
explicit
ComparisonArgument
(
args::number
&& value1,
args::number
&& value2);
16
public
:
17
#define FORWARD_DECLARE(r, data, Name) class Name;
18
BOOST_PP_SEQ_FOR_EACH(
FORWARD_DECLARE
, _,
COMPARISONS
)
19
#undef FORWARD_DECLARE
20
protected
:
21
std::expected<bool, Error>
calculate
()
const override
;
22
virtual
bool
evaluate
(
double
a,
double
b)
const
= 0;
23
24
args::number
value1_
;
25
args::number
value2_
;
26
};
27
namespace
args
{
28
using
compare
=
ComparisonArgument
;
29
}
30
31
#define DECLARE_COMPARISON(r, data, Name) \
32
class ComparisonArgument::Name: public ComparisonArgument { \
33
PROVIDE_SERIALIZATION_ACCESS(ComparisonArgument::Name) \
34
public: \
35
explicit Name(args::number&& value1, args::number&& value2) \
36
: ComparisonArgument(std::move(value1), std::move(value2)) {} \
37
protected: \
38
bool evaluate(double a, double b) const override; \
39
}; \
40
SERIALIZE_DERIVED_CONSTRUCTION(ComparisonArgument::Name, ComparisonArgument, value1_, value2_);
41
BOOST_PP_SEQ_FOR_EACH(
DECLARE_COMPARISON
, _,
COMPARISONS
)
42
#undef DECLARE_COMPARISON
43
}
45
46
#endif
//CHRYSALIS_COMPARISONARGUMENT_H
BaseCalculatedArgument.h
FORWARD_DECLARE
#define FORWARD_DECLARE(r, data, Name)
Definition
BinaryFunctionArgument.h:17
COMPARISONS
#define COMPARISONS
Definition
ComparisonArgument.h:4
DECLARE_COMPARISON
#define DECLARE_COMPARISON(r, data, Name)
Definition
ComparisonArgument.h:31
Chrysalis::BaseCalculatedArgument< bool >::BaseCalculatedArgument
BaseCalculatedArgument()=default
Chrysalis::ComparisonArgument
Definition
ComparisonArgument.h:12
Chrysalis::ComparisonArgument::value1_
args::number value1_
Definition
ComparisonArgument.h:24
Chrysalis::ComparisonArgument::calculate
std::expected< bool, Error > calculate() const override
Definition
ComparisonArgument.cpp:8
Chrysalis::ComparisonArgument::evaluate
virtual bool evaluate(double a, double b) const =0
Chrysalis::ComparisonArgument::value2_
args::number value2_
Definition
ComparisonArgument.h:25
Chrysalis::ComparisonArgument::ComparisonArgument
ComparisonArgument(args::number &&value1, args::number &&value2)
Definition
ComparisonArgument.cpp:5
Chrysalis::args
Definition
Argument.h:26
Chrysalis::args::compare
ComparisonArgument compare
Definition
ComparisonArgument.h:28
Chrysalis::args::number
std::unique_ptr< BaseArgument< double > > number
Definition
BaseArgument.h:25
Chrysalis
Definition
Argument.h:9
SERIALIZE_DERIVED_FROM
#define SERIALIZE_DERIVED_FROM(Base,...)
Definition
serialization.h:71
pattern
include
arguments
ComparisonArgument.h
Generated by
1.17.0