#ifndef TEMPERATURE_SCALE_HPP_
#define TEMPERATURE_SCALE_HPP_

#include <string>

/**
 * @brief Enum of the available temperature scales.
 */
enum class TemperatureScale
{
    Kelvin,
    Celsius,
    Fahrenheit,
};

/**
 * @brief Returns the given temperature as a string in the specified temperature scale.
 * 
 * Example: formatTemperature(300, TemperatureScale::Celsius) returns "27 °C".
 */
std::string formatTemperature(int kelvin, TemperatureScale scale);

/**
 * @brief Returns the given temperature as a string in the preferred temperature scale.
 */
std::string formatTemperature(int kelvin);

/**
 * @brief Returns the name of the temperature scale enum value, as stored in the settings file.
 */
std::string getTemperatureScaleEnumName(TemperatureScale scale);

/**
 * @brief Returns a temperature scale value given an enum name, as stored in the settings file.
 * 
 * Returns `Celsius` if the `enumName` is not recognised.
 */
TemperatureScale getTemperatureScaleByEnumName(const std::string &enumName);

#endif