/** * @file * * @author Max Lammers * @author Mamadou Babaei * * @section LICENSE * * Copyright (c) 2020 - 2025 SenseGlove * * @section DESCRIPTION * * */ #pragma once #include #include #include #include #include "Platform.hpp" namespace SGCore { namespace Calibration { class SGCORE_API CalibrationDataPoint; }// namespace Calibration namespace Kinematics { class Vect3D; }// namespace Kinematics }// namespace SGCore class SGCORE_API SGCore::Calibration::CalibrationDataPoint { private: struct Impl; std::unique_ptr Pimpl; public: #if SENSEGLOVE_UNREAL_ENGINE_PLUGIN CalibrationDataPoint(); #endif /* SENSEGLOVE_UNREAL_ENGINE_PLUGIN */ /// Create a new data point. /// /// CalibrationDataPoint(int32_t currentStage, const std::vector& calibrationValues); /** * The copy constructor. */ CalibrationDataPoint(const CalibrationDataPoint& rhs); /** * The move constructor. */ CalibrationDataPoint(CalibrationDataPoint&& rhs) noexcept; /// The basic destructor. virtual ~CalibrationDataPoint(); public: /** * The copy assignment operator. */ CalibrationDataPoint& operator=(const CalibrationDataPoint& rhs); /** * The move assignment operator. */ CalibrationDataPoint& operator=(CalibrationDataPoint&& rhs) noexcept; public: /// Actual calibration values. [[nodiscard]] const std::vector& GetCalibrationValues() const; /// The Calibration stage this data point belongs to. [[nodiscard]] int32_t GetStage() const; public: /// Log Calibration values for storing on disk. /// /// [[nodiscard]] std::string ToLogData(const std::string& delimiter = "\t") const; };