diff options
Diffstat (limited to 'xbmc/utils/Temperature.h')
-rw-r--r-- | xbmc/utils/Temperature.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/xbmc/utils/Temperature.h b/xbmc/utils/Temperature.h new file mode 100644 index 0000000..9d2a019 --- /dev/null +++ b/xbmc/utils/Temperature.h @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "utils/IArchivable.h" + +#include <string> + +class CTemperature : public IArchivable +{ +public: + CTemperature(); + CTemperature(const CTemperature& temperature); + + typedef enum Unit + { + UnitFahrenheit = 0, + UnitKelvin, + UnitCelsius, + UnitReaumur, + UnitRankine, + UnitRomer, + UnitDelisle, + UnitNewton + } Unit; + + static CTemperature CreateFromFahrenheit(double value); + static CTemperature CreateFromKelvin(double value); + static CTemperature CreateFromCelsius(double value); + static CTemperature CreateFromReaumur(double value); + static CTemperature CreateFromRankine(double value); + static CTemperature CreateFromRomer(double value); + static CTemperature CreateFromDelisle(double value); + static CTemperature CreateFromNewton(double value); + + bool operator >(const CTemperature& right) const; + bool operator >=(const CTemperature& right) const; + bool operator <(const CTemperature& right) const; + bool operator <=(const CTemperature& right) const; + bool operator ==(const CTemperature& right) const; + bool operator !=(const CTemperature& right) const; + + CTemperature& operator =(const CTemperature& right); + const CTemperature& operator +=(const CTemperature& right); + const CTemperature& operator -=(const CTemperature& right); + const CTemperature& operator *=(const CTemperature& right); + const CTemperature& operator /=(const CTemperature& right); + CTemperature operator +(const CTemperature& right) const; + CTemperature operator -(const CTemperature& right) const; + CTemperature operator *(const CTemperature& right) const; + CTemperature operator /(const CTemperature& right) const; + + bool operator >(double right) const; + bool operator >=(double right) const; + bool operator <(double right) const; + bool operator <=(double right) const; + bool operator ==(double right) const; + bool operator !=(double right) const; + + const CTemperature& operator +=(double right); + const CTemperature& operator -=(double right); + const CTemperature& operator *=(double right); + const CTemperature& operator /=(double right); + CTemperature operator +(double right) const; + CTemperature operator -(double right) const; + CTemperature operator *(double right) const; + CTemperature operator /(double right) const; + + CTemperature& operator ++(); + CTemperature& operator --(); + CTemperature operator ++(int); + CTemperature operator --(int); + + void Archive(CArchive& ar) override; + + bool IsValid() const; + void SetValid(bool valid) { m_valid = valid; } + + double ToFahrenheit() const; + double ToKelvin() const; + double ToCelsius() const; + double ToReaumur() const; + double ToRankine() const; + double ToRomer() const; + double ToDelisle() const; + double ToNewton() const; + + double To(Unit temperatureUnit) const; + std::string ToString(Unit temperatureUnit) const; + +protected: + explicit CTemperature(double value); + + double m_value; // we store as fahrenheit + bool m_valid; +}; + |