#ifndef TIMESERIESUTILS_H #define TIMESERIESUTILS_H #include "MultiComponentTimeSerie.h" #include "ScalarTimeSerie.h" #include "SpectrogramTimeSerie.h" #include "VectorTimeSerie.h" #include #include namespace TimeSeriesUtils { template TimeSeries::ITimeSerie* copy(T input_ts) { if constexpr(std::is_base_of_v) { if(auto ts = dynamic_cast(input_ts)) { return new VectorTimeSerie(*ts); } if(auto ts = dynamic_cast(input_ts)) { return new ScalarTimeSerie(*ts); } if(auto ts = dynamic_cast(input_ts)) { return new MultiComponentTimeSerie(*ts); } if(auto ts = dynamic_cast(input_ts)) { return new SpectrogramTimeSerie(*ts); } } else { if(auto ts = std::dynamic_pointer_cast(input_ts)) { return new VectorTimeSerie(*ts); } if(auto ts = std::dynamic_pointer_cast(input_ts)) { return new ScalarTimeSerie(*ts); } if(auto ts = std::dynamic_pointer_cast(input_ts)) { return new SpectrogramTimeSerie(*ts); } if(auto ts = std::dynamic_pointer_cast(input_ts)) { return new MultiComponentTimeSerie(*ts); } } return nullptr; } } // namespace TimeSeriesUtils #endif