FOUND
Loading...
Searching...
No Matches
factory.hpp
1#ifndef SRC_PROVIDERS_FACTORY_HPP_
2#define SRC_PROVIDERS_FACTORY_HPP_
3
4#include <memory>
5#include <utility>
6#include <optional>
7
8#include "command-line/execution/executors.hpp"
9#include "providers/stage-providers.hpp"
10#include "distance/edge-filters.hpp"
11
12namespace found {
13
21inline std::unique_ptr<CalibrationPipelineExecutor> CreateCalibrationPipelineExecutor(CalibrationOptions &&options) {
22 return std::make_unique<CalibrationPipelineExecutor>(std::move(options),
23 ProvideCalibrationAlgorithm(std::forward<const CalibrationOptions&&>(options)));
24}
25
33inline std::unique_ptr<DistancePipelineExecutor> CreateDistancePipelineExecutor(DistanceOptions &&options) {
34 std::unique_ptr<EdgeDetectionAlgorithm> edgeAlg = ProvideEdgeDetectionAlgorithm(
35 std::forward<const DistanceOptions&&>(options));
36 std::unique_ptr<EdgeFilteringAlgorithms> filtersOpt = ProvideEdgeFilteringAlgorithm(
37 std::forward<const DistanceOptions&&>(options));
38 std::unique_ptr<DistanceDeterminationAlgorithm> distAlg = ProvideDistanceDeterminationAlgorithm(
39 std::forward<const DistanceOptions&&>(options));
40 std::unique_ptr<VectorGenerationAlgorithm> vecAlg = ProvideVectorGenerationAlgorithm(
41 std::forward<const DistanceOptions&&>(options));
42
43 if (filtersOpt) {
44 return std::make_unique<DistancePipelineExecutor>(std::move(options),
45 std::move(edgeAlg),
46 std::move(filtersOpt),
47 std::move(distAlg),
48 std::move(vecAlg));
49 }
50 return std::make_unique<DistancePipelineExecutor>(std::move(options),
51 std::move(edgeAlg),
52 std::move(distAlg),
53 std::move(vecAlg));
54}
55
56
57// TODO: Uncomment when orbit stage is implemented
65// inline std::unique_ptr<OrbitPipelineExecutor> CreateOrbitPipelineExecutor(OrbitOptions &&options) {
66// return std::make_unique<OrbitPipelineExecutor>(std::forward<OrbitOptions>(options),
67// ProvideOrbitPropagationAlgorithm(options));
68// }
69
70} // namespace found
71
72#endif // SRC_PROVIDERS_FACTORY_HPP_
Definition options.hpp:87
Definition options.hpp:95