Chrysalis - Pattern
Toggle main menu visibility
Loading...
Searching...
No Matches
VectorFunctionArgument.h
Go to the documentation of this file.
1
#ifndef CHRYSALIS_VECTORFUNCTIONARGUMENT_H
2
#define CHRYSALIS_VECTORFUNCTIONARGUMENT_H
3
4
#include "
arguments/PatternPointArgument.h
"
5
#include "
arguments/BaseCalculatedArgument.h
"
6
7
#define VECTOR_FUNCTIONS (Length)(Angle)
8
9
namespace
Chrysalis
{
16
* (A ("Pattern 1") -> "A 1").angle
17
* }
18
*/
19
class
VectorFunctionArgument
:
public
BaseCalculatedArgument
<double> {
20
SERIALIZE_DERIVED_FROM
(
BaseCalculatedArgument
)
21
protected
:
22
explicit
VectorFunctionArgument
(
const
args::point
* from,
const
args::point
* to);
23
public
:
24
~VectorFunctionArgument
()
override
;
25
26
#define FORWARD_DECLARE(r, data, Name) class Name;
27
BOOST_PP_SEQ_FOR_EACH(
FORWARD_DECLARE
, _,
VECTOR_FUNCTIONS
)
28
#undef FORWARD_DECLARE
29
protected
:
30
std::expected<double, Error>
calculate
()
const override
;
31
virtual
std::expected<double, Error>
evaluate
(
const
CG::Point
& from,
const
CG::Point
& to)
const
= 0;
32
34
const
args::point
*
from_
;
35
36
const
args::point
*
to_
;
37
};
38
39
#define DECLARE_VECTOR_FUNCTION(r, data, Name) \
40
class VectorFunctionArgument::Name: public VectorFunctionArgument { \
41
PROVIDE_SERIALIZATION_ACCESS(VectorFunctionArgument::Name) \
42
public: \
43
explicit Name(const args::point* from, const args::point* to): VectorFunctionArgument(from, to) {} \
44
protected: \
45
std::expected<double, Error> evaluate(const CG::Point& from, const CG::Point& to) const override; \
46
}; \
47
SERIALIZE_DERIVED_CONSTRUCTION(VectorFunctionArgument::Name, VectorFunctionArgument, from_, to_);
48
BOOST_PP_SEQ_FOR_EACH(
DECLARE_VECTOR_FUNCTION
, _,
VECTOR_FUNCTIONS
)
49
#undef DECLARE_VECTOR_FUNCTION
50
}
51
52
#endif
//CHRYSALIS_VECTORFUNCTIONARGUMENT_H
BaseCalculatedArgument.h
FORWARD_DECLARE
#define FORWARD_DECLARE(r, data, Name)
Definition
BinaryFunctionArgument.h:17
PatternPointArgument.h
VECTOR_FUNCTIONS
#define VECTOR_FUNCTIONS
Definition
VectorFunctionArgument.h:7
Chrysalis::BaseCalculatedArgument< double >::BaseCalculatedArgument
BaseCalculatedArgument()=default
Chrysalis::VectorFunctionArgument::VectorFunctionArgument
VectorFunctionArgument(const args::point *from, const args::point *to)
Definition
VectorFunctionArgument.cpp:5
Chrysalis::VectorFunctionArgument::~VectorFunctionArgument
~VectorFunctionArgument() override
Definition
VectorFunctionArgument.cpp:8
Chrysalis::VectorFunctionArgument::calculate
std::expected< double, Error > calculate() const override
Definition
VectorFunctionArgument.cpp:13
Chrysalis::VectorFunctionArgument::evaluate
virtual std::expected< double, Error > evaluate(const CG::Point &from, const CG::Point &to) const =0
Chrysalis::VectorFunctionArgument::from_
const args::point * from_
Definition
VectorFunctionArgument.h:31
Chrysalis::VectorFunctionArgument::to_
const args::point * to_
Definition
VectorFunctionArgument.h:33
DECLARE_VECTOR_FUNCTION
#define DECLARE_VECTOR_FUNCTION(r, data, Name)
Definition
VectorFunctionArgument.h:36
Chrysalis::CG::Point
CGAL::Point_2< LinearKernel > Point
Definition
CGAL.h:24
Chrysalis::args::point
BasePointArgument point
Definition
BasePointArgument.h:26
Chrysalis
Definition
Argument.h:9
SERIALIZE_DERIVED_FROM
#define SERIALIZE_DERIVED_FROM(Base,...)
Definition
serialization.h:71
pattern
include
arguments
VectorFunctionArgument.h
Generated by
1.17.0