.. _program_listing_file_include_ruckig_calculator.hpp: Program Listing for File calculator.hpp ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``include/ruckig/calculator.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #ifdef WITH_CLOUD_CLIENT #include #endif #include #include namespace ruckig { template class CustomVector = StandardVector> class Calculator { inline bool use_waypoints_trajectory(const InputParameter& input) { return !input.intermediate_positions.empty() && input.control_interface == ControlInterface::Position; } public: TargetCalculator target_calculator; #if defined WITH_CLOUD_CLIENT WaypointsCalculator waypoints_calculator; #endif template= 1), int>::type = 0> explicit Calculator() { } #if defined WITH_CLOUD_CLIENT template= 1), int>::type = 0> explicit Calculator(size_t max_waypoints): waypoints_calculator(WaypointsCalculator(max_waypoints)) { } template::type = 0> explicit Calculator(size_t dofs): target_calculator(TargetCalculator(dofs)), waypoints_calculator(WaypointsCalculator(dofs)) { } template::type = 0> explicit Calculator(size_t dofs, size_t max_waypoints): target_calculator(TargetCalculator(dofs)), waypoints_calculator(WaypointsCalculator(dofs, max_waypoints)) { } #else template::type = 0> explicit Calculator(size_t dofs): target_calculator(TargetCalculator(dofs)) { } #endif template Result calculate(const InputParameter& input, Trajectory& trajectory, double delta_time, bool& was_interrupted) { Result result; #if defined WITH_CLOUD_CLIENT if (use_waypoints_trajectory(input)) { result = waypoints_calculator.template calculate(input, trajectory, delta_time, was_interrupted); } else { result = target_calculator.template calculate(input, trajectory, delta_time, was_interrupted); } #else result = target_calculator.template calculate(input, trajectory, delta_time, was_interrupted); #endif return result; } template Result continue_calculation(const InputParameter& input, Trajectory& trajectory, double delta_time, bool& was_interrupted) { Result result; #if defined WITH_CLOUD_CLIENT if (use_waypoints_trajectory(input)) { result = waypoints_calculator.template continue_calculation(input, trajectory, delta_time, was_interrupted); } else { result = target_calculator.template continue_calculation(input, trajectory, delta_time, was_interrupted); } #else result = target_calculator.template continue_calculation(input, trajectory, delta_time, was_interrupted); #endif return result; } }; } // namespace ruckig