2 #include "../icedb/units/units.hpp" 3 #include "../private/unitsBackend.hpp" 4 #include "../icedb/units/unitsPlugins.hpp" 5 #include "../private/options.hpp" 6 #include "../icedb/error.hpp" 7 #include "../icedb/logging.hpp" 14 const std::string &inUnits,
const std::string &outUnits) {
36 opts->setVal<std::string>(
"inUnits", inUnits);
37 opts->setVal<std::string>(
"outUnits", outUnits);
38 for (
const auto &i : *(hooks.get()))
40 if (!i->canConvert)
continue;
41 if (!i->constructConverter)
continue;
42 if (!i->canConvert(opts))
continue;
49 if (
h)
return h->isValid();
55 .add<std::string>(
"Reason",
"Converter handler is null. Probably incompatible units.");
58 .add<std::string>(
"Reason",
"Conversion between the two specified units is invalid.");
59 return h->convert(in);
69 "Creating spectrum converter for " << in <<
" to " << out);
72 opts->setVal<std::string>(
"inUnits", in);
73 opts->setVal<std::string>(
"outUnits", out);
78 const std::string &inUnits,
const std::string &outUnits) {
static Unithandler_p getConverter(const std::string &inUnits, const std::string &outUnits)
bool isValid() const
Is this conversion valid?
static std::shared_ptr< options > generate()
static std::shared_ptr< const implementations::Unithandler > constructConverter(Converter_registry_provider::optsType opts)
static bool canConvert(const std::string &inUnits, const std::string &outUnits)
Check if two units can be interconverted.
void _registerBackend(const std::string &inUnits, const std::string &outUnits, const std::string &family, converter_p p)
converter_p _queryBackend(const std::string &inUnits, const std::string &outUnits, const std::string &family)
static std::shared_ptr< const converter > generate(const std::string &inUnits, const std::string &outUnits)
static std::shared_ptr< const converter > generate(const std::string &inUnits, const std::string &outUnits)
virtual double convert(double inVal) const
#define ICEDB_log(c, p, x)
conv_spec(const std::string &inUnits, const std::string &outUnits)
std::shared_ptr< const converter > converter_p