23 if (name_maps.size() <= i_axis)
24 throw std::runtime_error(
"Error in IUnitConverter::axisName: the size of name map vector "
25 "is smaller or equal to the axis index"
26 + std::to_string(
static_cast<int>(i_axis)));
27 const auto& name_map = name_maps[i_axis];
29 const auto& it = name_map.find(units_type);
30 if (it == name_map.cend())
35 std::unique_ptr<OutputData<double>>
38 const size_t dim = data.
getRank();
40 for (
size_t i = 0; i < dim; ++i)
50 throw std::runtime_error(
"Error in IUnitConverter::checkIndex: passed axis index too big: "
51 + std::to_string(
static_cast<int>(i_axis)));
57 ss <<
"Unit type error in " << method
58 <<
": unknown or unsupported unit type. Available units "
60 for (
auto unit : available)
62 throw std::runtime_error(ss.str());
67 return units == Axes::Units::DEFAULT ?
defaultUnits() : units;
Defines interface IUnitConverter and possible axis units.
const std::map< Axes::Units, const char * > axisUnitName
Defines and implements template class OutputData.
Axes::Units substituteDefaultUnits(Axes::Units units) const
virtual size_t dimension() const =0
virtual ~IUnitConverter()
void checkIndex(size_t i_axis) const
virtual Axes::Units defaultUnits() const =0
virtual std::vector< Axes::Units > availableUnits() const =0
virtual std::unique_ptr< IAxis > createConvertedAxis(size_t i_axis, Axes::Units units) const =0
virtual std::unique_ptr< OutputData< double > > createConvertedData(const OutputData< double > &data, Axes::Units units) const
Creates OutputData array in converter units.
virtual std::vector< std::map< Axes::Units, std::string > > createNameMaps() const =0
void throwUnitsError(std::string method, std::vector< Axes::Units > available) const
std::string axisName(size_t i_axis, Axes::Units units_type=Axes::Units::DEFAULT) const
std::vector< T > getRawDataVector() const
Returns copy of raw data vector.
size_t getRank() const
Returns number of dimensions.