icedb  version 0.5.1
Snow particle scattering database API
units.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "../defs.h"
3 #include <string>
4 #include <memory>
5 namespace icedb {
13  namespace units {
14  namespace implementations { struct Unithandler; struct spectralUnits; struct simpleUnits; }
15  typedef std::shared_ptr<const implementations::Unithandler> Unithandler_p;
16  class converter;
17  typedef std::shared_ptr<const converter> converter_p;
26  class converter
27  {
28  public:
29  virtual ~converter();
32  virtual double convert(double inVal) const;
34  static bool canConvert(const std::string &inUnits, const std::string &outUnits);
37  static std::shared_ptr<const converter> generate(
38  const std::string &inUnits, const std::string& outUnits);
40  bool isValid() const;
41  converter(const std::string &inUnits, const std::string &outUnits);
42  protected:
45  static Unithandler_p getConverter(
46  const std::string &inUnits, const std::string &outUnits);
47  converter();
48  Unithandler_p h;
52  };
53 
56  class conv_spec : public converter
57  {
58  public:
59  conv_spec(const std::string &inUnits, const std::string &outUnits);
60  static std::shared_ptr<const converter> generate(
61  const std::string &inUnits, const std::string& outUnits);
62  };
63  }
64  }
65 
std::shared_ptr< const implementations::Unithandler > Unithandler_p
Definition: units.hpp:15
Unithandler_p h
Definition: units.hpp:48
Perform interconversions between frequency, wavelength and wavenumber (GHz, Hz, m, cm, um, cm^-1, m^-1)
Definition: units.hpp:56
Base conversion class.
Definition: units.hpp:26
Opaque object provided to perform unit manipulations.
std::shared_ptr< const converter > converter_p
Definition: units.hpp:16