Chrysalis - Pattern
Loading...
Searching...
No Matches
VectorFunctionArgument.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_VECTORFUNCTIONARGUMENT_H
2#define CHRYSALIS_VECTORFUNCTIONARGUMENT_H
3
6
7#define VECTOR_FUNCTIONS (Length)(Angle)
8
9namespace Chrysalis {
16 * (A ("Pattern 1") -> "A 1").angle
17 * }
18 */
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
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
#define FORWARD_DECLARE(r, data, Name)
Definition BinaryFunctionArgument.h:17
#define VECTOR_FUNCTIONS
Definition VectorFunctionArgument.h:7
VectorFunctionArgument(const args::point *from, const args::point *to)
Definition VectorFunctionArgument.cpp:5
~VectorFunctionArgument() override
Definition VectorFunctionArgument.cpp:8
std::expected< double, Error > calculate() const override
Definition VectorFunctionArgument.cpp:13
virtual std::expected< double, Error > evaluate(const CG::Point &from, const CG::Point &to) const =0
const args::point * from_
Definition VectorFunctionArgument.h:31
const args::point * to_
Definition VectorFunctionArgument.h:33
#define DECLARE_VECTOR_FUNCTION(r, data, Name)
Definition VectorFunctionArgument.h:36
CGAL::Point_2< LinearKernel > Point
Definition CGAL.h:24
BasePointArgument point
Definition BasePointArgument.h:26
Definition Argument.h:9
#define SERIALIZE_DERIVED_FROM(Base,...)
Definition serialization.h:71