#pragma once
#include "Constants.h"
AST_NAMESPACE_BEGIN
namespace literals
{
inline constexpr double operator ""_rad(long double val)
{
return val;
}
inline constexpr double operator ""_rad(unsigned long long val)
{
return static_cast<double>(val);
}
inline constexpr double operator ""_deg(long double val)
{
return val * kDegToRad;
}
inline constexpr double operator ""_deg(unsigned long long val)
{
return val * kDegToRad;
}
inline constexpr double operator ""_arcsec(long double val)
{
return val * kArcSecToRad;
}
inline constexpr double operator ""_arcsec(unsigned long long val)
{
return val * kArcSecToRad;
}
inline constexpr double operator ""_revs(long double val)
{
return val * kRevolutionToRad;
}
inline constexpr double operator ""_revs(unsigned long long val)
{
return val * kRevolutionToRad;
}
inline constexpr double operator ""_km(long double val)
{
return val * kKilometerToMeter;
}
inline constexpr double operator ""_km(unsigned long long val)
{
return val * kKilometerToMeter;
}
inline constexpr double operator ""_m(long double val)
{
return val;
}
inline constexpr double operator ""_m(unsigned long long val)
{
return static_cast<double>(val);
}
inline constexpr double operator ""_cm(long double val)
{
return val * kCentimeterToMeter;
}
inline constexpr double operator ""_cm(unsigned long long val)
{
return val * kCentimeterToMeter;
}
inline constexpr double operator ""_mm(long double val)
{
return val * kMillimeterToMeter;
}
inline constexpr double operator ""_mm(unsigned long long val)
{
return val * kMillimeterToMeter;
}
inline constexpr double operator ""_um(long double val)
{
return val * kMicroMeterToMeter;
}
inline constexpr double operator ""_um(unsigned long long val)
{
return val * kMicroMeterToMeter;
}
inline constexpr double operator ""_nm(long double val)
{
return val * kNanometerToMeter;
}
inline constexpr double operator ""_nm(unsigned long long val)
{
return val * kNanometerToMeter;
}
inline constexpr double operator ""_au(long double val)
{
return val * kAU;
}
inline constexpr double operator ""_au(unsigned long long val)
{
return val * kAU;
}
inline constexpr double operator ""_s(long double val)
{
return val;
}
inline constexpr double operator ""_s(unsigned long long val)
{
return static_cast<double>(val);
}
inline constexpr double operator ""_min(long double val)
{
return val * kMinToSec;
}
inline constexpr double operator ""_min(unsigned long long val)
{
return val * kMinToSec;
}
inline constexpr double operator ""_h(long double val)
{
return val * kHourToSec;
}
inline constexpr double operator ""_h(unsigned long long val)
{
return val * kHourToSec;
}
inline constexpr double operator ""_day(long double val)
{
return val * kDayToSec;
}
inline constexpr double operator ""_day(unsigned long long val)
{
return val * kDayToSec;
}
inline constexpr double operator ""_ms(long double val)
{
return val * kMilliSecToSec;
}
inline constexpr double operator ""_ms(unsigned long long val)
{
return val * kMilliSecToSec;
}
inline constexpr double operator ""_us(long double val)
{
return val * kMicroSecToSec;
}
inline constexpr double operator ""_us(unsigned long long val)
{
return val * kMicroSecToSec;
}
inline constexpr double operator ""_ns(long double val)
{
return val * kNanoSecToSec;
}
inline constexpr double operator ""_ns(unsigned long long val)
{
return val * kNanoSecToSec;
}
inline constexpr double operator ""_ps(long double val)
{
return val * kPicoSecToSec;
}
inline constexpr double operator ""_ps(unsigned long long val)
{
return val * kPicoSecToSec;
}
inline constexpr double operator ""_m_s(long double val)
{
return val;
}
inline constexpr double operator ""_m_s(unsigned long long val)
{
return static_cast<double>(val);
}
inline constexpr double operator ""_km_s(long double val)
{
return val * kKilometerToMeter;
}
inline constexpr double operator ""_km_s(unsigned long long val)
{
return val * kKilometerToMeter;
}
inline constexpr double operator ""_km_h(long double val)
{
return val * kKilometerToMeter / kHourToSec;
}
inline constexpr double operator ""_km_h(unsigned long long val)
{
return val * kKilometerToMeter / kHourToSec;
}
inline constexpr double operator ""_rad_s(long double val)
{
return val;
}
inline constexpr double operator ""_rad_s(unsigned long long val)
{
return static_cast<double>(val);
}
inline constexpr double operator ""_deg_s(long double val)
{
return val * kDegToRad;
}
inline constexpr double operator ""_deg_s(unsigned long long val)
{
return val * kDegToRad;
}
constexpr double deg = 1_deg;
constexpr double rad = 1_rad;
constexpr double arcsec = 1_arcsec;
constexpr double m = 1_m;
constexpr double km = 1_km;
constexpr double cm = 1_cm;
constexpr double au = 1_au;
constexpr double s = 1_s;
constexpr double sec = 1_s;
constexpr double ms = 1_ms;
constexpr double min = 1_min;
constexpr double h = 1_h;
constexpr double day = 1_day;
}
using namespace literals;
AST_NAMESPACE_END