mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-05 05:04:27 +02:00
fix: hectare
definition fixed to be a prefixed version of are
+ other units
Relates to #359
This commit is contained in:
@@ -58,7 +58,11 @@ struct square_exametre : derived_unit<square_exametre, dim_area, exametre> {};
|
||||
struct square_zettametre : derived_unit<square_zettametre, dim_area, zettametre> {};
|
||||
struct square_yottametre : derived_unit<square_yottametre, dim_area, yottametre> {};
|
||||
|
||||
struct hectare : alias_unit<square_hectometre, "ha", no_prefix> {};
|
||||
struct are : alias_unit<square_decametre, "a", prefix> {};
|
||||
struct centiare : prefixed_alias_unit<square_metre, centi, are> {};
|
||||
struct deciare : prefixed_unit<deciare, deci, are> {};
|
||||
struct decare : prefixed_unit<decare, deca, are> {};
|
||||
struct hectare : prefixed_alias_unit<square_hectometre, hecto, are> {};
|
||||
|
||||
template<UnitOf<dim_area> U, Representation Rep = double>
|
||||
using area = quantity<dim_area, U, Rep>;
|
||||
@@ -235,6 +239,38 @@ constexpr auto operator"" _q_Ym2(unsigned long long l)
|
||||
}
|
||||
constexpr auto operator"" _q_Ym2(long double l) { return area<square_yottametre, long double>(l); }
|
||||
|
||||
// a
|
||||
constexpr auto operator"" _q_a(unsigned long long l)
|
||||
{
|
||||
gsl_ExpectsAudit(std::in_range<std::int64_t>(l));
|
||||
return area<are, std::int64_t>(static_cast<std::int64_t>(l));
|
||||
}
|
||||
constexpr auto operator"" _q_a(long double l) { return area<are, long double>(l); }
|
||||
|
||||
// ca
|
||||
constexpr auto operator"" _q_ca(unsigned long long l)
|
||||
{
|
||||
gsl_ExpectsAudit(std::in_range<std::int64_t>(l));
|
||||
return area<centiare, std::int64_t>(static_cast<std::int64_t>(l));
|
||||
}
|
||||
constexpr auto operator"" _q_ca(long double l) { return area<centiare, long double>(l); }
|
||||
|
||||
// da
|
||||
constexpr auto operator"" _q_da(unsigned long long l)
|
||||
{
|
||||
gsl_ExpectsAudit(std::in_range<std::int64_t>(l));
|
||||
return area<deciare, std::int64_t>(static_cast<std::int64_t>(l));
|
||||
}
|
||||
constexpr auto operator"" _q_da(long double l) { return area<deciare, long double>(l); }
|
||||
|
||||
// daa
|
||||
constexpr auto operator"" _q_daa(unsigned long long l)
|
||||
{
|
||||
gsl_ExpectsAudit(std::in_range<std::int64_t>(l));
|
||||
return area<decare, std::int64_t>(static_cast<std::int64_t>(l));
|
||||
}
|
||||
constexpr auto operator"" _q_daa(long double l) { return area<decare, long double>(l); }
|
||||
|
||||
// ha
|
||||
constexpr auto operator"" _q_ha(unsigned long long l)
|
||||
{
|
||||
@@ -273,6 +309,10 @@ inline constexpr auto Em2 = reference<dim_area, square_exametre>{};
|
||||
inline constexpr auto Zm2 = reference<dim_area, square_zettametre>{};
|
||||
inline constexpr auto Ym2 = reference<dim_area, square_yottametre>{};
|
||||
|
||||
inline constexpr auto a = reference<dim_area, are>{};
|
||||
inline constexpr auto ca = reference<dim_area, centiare>{};
|
||||
inline constexpr auto da = reference<dim_area, deciare>{};
|
||||
inline constexpr auto daa = reference<dim_area, decare>{};
|
||||
inline constexpr auto ha = reference<dim_area, hectare>{};
|
||||
|
||||
} // namespace area_references
|
||||
|
@@ -276,8 +276,17 @@ static_assert(10_q_m * 10_q_m == 100_q_m2);
|
||||
static_assert(100_q_m2 / 10_q_m == 10_q_m);
|
||||
static_assert(10_q_km * 10_q_km == 100_q_km2);
|
||||
static_assert(1_q_m2 == 10'000_q_cm2);
|
||||
|
||||
static_assert(1_q_ca == 1_q_m2);
|
||||
static_assert(1_q_da == 10_q_m2);
|
||||
static_assert(1_q_a == 100_q_m2);
|
||||
static_assert(1_q_daa == 1'000_q_m2);
|
||||
static_assert(1_q_ha == 10'000_q_m2);
|
||||
|
||||
static_assert(centiare::symbol == "ca");
|
||||
static_assert(deciare::symbol == "da");
|
||||
static_assert(are::symbol == "a");
|
||||
static_assert(decare::symbol == "daa");
|
||||
static_assert(hectare::symbol == "ha");
|
||||
|
||||
static_assert(detail::unit_text<dim_area, square_metre>() == basic_symbol_text("m²", "m^2"));
|
||||
|
Reference in New Issue
Block a user