Skip to content

Commit

Permalink
Deployed f77cc5e to main with MkDocs 1.6.0 and mike 2.1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Aug 5, 2024
1 parent 0d178fc commit 1096631
Show file tree
Hide file tree
Showing 4 changed files with 320 additions and 96 deletions.
116 changes: 97 additions & 19 deletions main/au.hh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#include <type_traits>
#include <utility>

// Version identifier: 0.3.5-3-g40c8e0c
// Version identifier: 0.3.5-4-gf77cc5e
// <iostream> support: INCLUDED
// List of included units:
// amperes
Expand Down Expand Up @@ -5561,31 +5561,47 @@ struct AssociatedUnit<Constant<Unit>> : stdx::type_identity<Unit> {};
} // namespace au



namespace au {

// Define 1:1 mapping between duration types of chrono library and our library.
template <typename RepT, typename Period>
struct CorrespondingQuantity<std::chrono::duration<RepT, Period>> {
using Unit = decltype(Seconds{} * (mag<Period::num>() / mag<Period::den>()));
using Rep = RepT;
// DO NOT follow this pattern to define your own units. This is for library-defined units.
// Instead, follow instructions at (https://aurora-opensource.github.io/au/main/howto/new-units/).
template <typename T>
struct MinutesLabel {
static constexpr const char label[] = "min";
};
template <typename T>
constexpr const char MinutesLabel<T>::label[];
struct Minutes : decltype(Seconds{} * mag<60>()), MinutesLabel<void> {
using MinutesLabel<void>::label;
};
constexpr auto minute = SingularNameFor<Minutes>{};
constexpr auto minutes = QuantityMaker<Minutes>{};

using ChronoDuration = std::chrono::duration<Rep, Period>;
namespace symbols {
constexpr auto min = SymbolFor<Minutes>{};
}
} // namespace au

static constexpr Rep extract_value(ChronoDuration d) { return d.count(); }
static constexpr ChronoDuration construct_from_value(Rep x) { return ChronoDuration{x}; }

namespace au {

// DO NOT follow this pattern to define your own units. This is for library-defined units.
// Instead, follow instructions at (https://aurora-opensource.github.io/au/main/howto/new-units/).
template <typename T>
struct HoursLabel {
static constexpr const char label[] = "h";
};
template <typename T>
constexpr const char HoursLabel<T>::label[];
struct Hours : decltype(Minutes{} * mag<60>()), HoursLabel<void> {
using HoursLabel<void>::label;
};
constexpr auto hour = SingularNameFor<Hours>{};
constexpr auto hours = QuantityMaker<Hours>{};

// Convert any Au duration quantity to an equivalent `std::chrono::duration`.
template <typename U, typename R>
constexpr auto as_chrono_duration(Quantity<U, R> dt) {
constexpr auto ratio = unit_ratio(U{}, seconds);
static_assert(is_rational(ratio), "Cannot convert to chrono::duration with non-rational ratio");
return std::chrono::duration<R,
std::ratio<get_value<std::intmax_t>(numerator(ratio)),
get_value<std::intmax_t>(denominator(ratio))>>{dt};
namespace symbols {
constexpr auto h = SymbolFor<Hours>{};
}

} // namespace au


Expand Down Expand Up @@ -6439,3 +6455,65 @@ constexpr bool numeric_limits<au::Quantity<U, R>>::tinyness_before;

} // namespace std



namespace au {

// Define 1:1 mapping between duration types of chrono library and our library.
template <typename RepT, typename Period>
struct CorrespondingQuantity<std::chrono::duration<RepT, Period>> {
using Unit = decltype(Seconds{} * (mag<Period::num>() / mag<Period::den>()));
using Rep = RepT;

using ChronoDuration = std::chrono::duration<Rep, Period>;

static constexpr Rep extract_value(ChronoDuration d) { return d.count(); }
static constexpr ChronoDuration construct_from_value(Rep x) { return ChronoDuration{x}; }
};

// Define special mappings for widely used chrono types.
template <typename ChronoType, typename AuUnit>
struct SpecialCorrespondingQuantity {
using Unit = AuUnit;
using Rep = decltype(ChronoType{}.count());

static constexpr Rep extract_value(ChronoType d) { return d.count(); }
static constexpr ChronoType construct_from_value(Rep x) { return ChronoType{x}; }
};

template <>
struct CorrespondingQuantity<std::chrono::nanoseconds>
: SpecialCorrespondingQuantity<std::chrono::nanoseconds, Nano<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::microseconds>
: SpecialCorrespondingQuantity<std::chrono::microseconds, Micro<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::milliseconds>
: SpecialCorrespondingQuantity<std::chrono::milliseconds, Milli<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::seconds>
: SpecialCorrespondingQuantity<std::chrono::seconds, Seconds> {};

template <>
struct CorrespondingQuantity<std::chrono::minutes>
: SpecialCorrespondingQuantity<std::chrono::minutes, Minutes> {};

template <>
struct CorrespondingQuantity<std::chrono::hours>
: SpecialCorrespondingQuantity<std::chrono::hours, Hours> {};

// Convert any Au duration quantity to an equivalent `std::chrono::duration`.
template <typename U, typename R>
constexpr auto as_chrono_duration(Quantity<U, R> dt) {
constexpr auto ratio = unit_ratio(U{}, seconds);
static_assert(is_rational(ratio), "Cannot convert to chrono::duration with non-rational ratio");
return std::chrono::duration<R,
std::ratio<get_value<std::intmax_t>(numerator(ratio)),
get_value<std::intmax_t>(denominator(ratio))>>{dt};
}

} // namespace au

92 changes: 63 additions & 29 deletions main/au_all_units.hh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#include <type_traits>
#include <utility>

// Version identifier: 0.3.5-3-g40c8e0c
// Version identifier: 0.3.5-4-gf77cc5e
// <iostream> support: INCLUDED
// List of included units:
// amperes
Expand Down Expand Up @@ -7036,34 +7036,6 @@ constexpr bool numeric_limits<au::Quantity<U, R>>::tinyness_before;
} // namespace std



namespace au {

// Define 1:1 mapping between duration types of chrono library and our library.
template <typename RepT, typename Period>
struct CorrespondingQuantity<std::chrono::duration<RepT, Period>> {
using Unit = decltype(Seconds{} * (mag<Period::num>() / mag<Period::den>()));
using Rep = RepT;

using ChronoDuration = std::chrono::duration<Rep, Period>;

static constexpr Rep extract_value(ChronoDuration d) { return d.count(); }
static constexpr ChronoDuration construct_from_value(Rep x) { return ChronoDuration{x}; }
};

// Convert any Au duration quantity to an equivalent `std::chrono::duration`.
template <typename U, typename R>
constexpr auto as_chrono_duration(Quantity<U, R> dt) {
constexpr auto ratio = unit_ratio(U{}, seconds);
static_assert(is_rational(ratio), "Cannot convert to chrono::duration with non-rational ratio");
return std::chrono::duration<R,
std::ratio<get_value<std::intmax_t>(numerator(ratio)),
get_value<std::intmax_t>(denominator(ratio))>>{dt};
}

} // namespace au


namespace au {

// DO NOT follow this pattern to define your own units. This is for library-defined units.
Expand Down Expand Up @@ -7219,6 +7191,67 @@ constexpr auto bar = SymbolFor<Bars>{};



namespace au {

// Define 1:1 mapping between duration types of chrono library and our library.
template <typename RepT, typename Period>
struct CorrespondingQuantity<std::chrono::duration<RepT, Period>> {
using Unit = decltype(Seconds{} * (mag<Period::num>() / mag<Period::den>()));
using Rep = RepT;

using ChronoDuration = std::chrono::duration<Rep, Period>;

static constexpr Rep extract_value(ChronoDuration d) { return d.count(); }
static constexpr ChronoDuration construct_from_value(Rep x) { return ChronoDuration{x}; }
};

// Define special mappings for widely used chrono types.
template <typename ChronoType, typename AuUnit>
struct SpecialCorrespondingQuantity {
using Unit = AuUnit;
using Rep = decltype(ChronoType{}.count());

static constexpr Rep extract_value(ChronoType d) { return d.count(); }
static constexpr ChronoType construct_from_value(Rep x) { return ChronoType{x}; }
};

template <>
struct CorrespondingQuantity<std::chrono::nanoseconds>
: SpecialCorrespondingQuantity<std::chrono::nanoseconds, Nano<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::microseconds>
: SpecialCorrespondingQuantity<std::chrono::microseconds, Micro<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::milliseconds>
: SpecialCorrespondingQuantity<std::chrono::milliseconds, Milli<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::seconds>
: SpecialCorrespondingQuantity<std::chrono::seconds, Seconds> {};

template <>
struct CorrespondingQuantity<std::chrono::minutes>
: SpecialCorrespondingQuantity<std::chrono::minutes, Minutes> {};

template <>
struct CorrespondingQuantity<std::chrono::hours>
: SpecialCorrespondingQuantity<std::chrono::hours, Hours> {};

// Convert any Au duration quantity to an equivalent `std::chrono::duration`.
template <typename U, typename R>
constexpr auto as_chrono_duration(Quantity<U, R> dt) {
constexpr auto ratio = unit_ratio(U{}, seconds);
static_assert(is_rational(ratio), "Cannot convert to chrono::duration with non-rational ratio");
return std::chrono::duration<R,
std::ratio<get_value<std::intmax_t>(numerator(ratio)),
get_value<std::intmax_t>(denominator(ratio))>>{dt};
}

} // namespace au


namespace au {

// DO NOT follow this pattern to define your own units. This is for library-defined units.
Expand Down Expand Up @@ -7263,6 +7296,7 @@ constexpr auto W = SymbolFor<Watts>{};
} // namespace au



namespace au {

// DO NOT follow this pattern to define your own units. This is for library-defined units.
Expand Down
92 changes: 63 additions & 29 deletions main/au_all_units_noio.hh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#include <type_traits>
#include <utility>

// Version identifier: 0.3.5-3-g40c8e0c
// Version identifier: 0.3.5-4-gf77cc5e
// <iostream> support: EXCLUDED
// List of included units:
// amperes
Expand Down Expand Up @@ -7004,34 +7004,6 @@ constexpr auto ftm = SymbolFor<Fathoms>{};
} // namespace au



namespace au {

// Define 1:1 mapping between duration types of chrono library and our library.
template <typename RepT, typename Period>
struct CorrespondingQuantity<std::chrono::duration<RepT, Period>> {
using Unit = decltype(Seconds{} * (mag<Period::num>() / mag<Period::den>()));
using Rep = RepT;

using ChronoDuration = std::chrono::duration<Rep, Period>;

static constexpr Rep extract_value(ChronoDuration d) { return d.count(); }
static constexpr ChronoDuration construct_from_value(Rep x) { return ChronoDuration{x}; }
};

// Convert any Au duration quantity to an equivalent `std::chrono::duration`.
template <typename U, typename R>
constexpr auto as_chrono_duration(Quantity<U, R> dt) {
constexpr auto ratio = unit_ratio(U{}, seconds);
static_assert(is_rational(ratio), "Cannot convert to chrono::duration with non-rational ratio");
return std::chrono::duration<R,
std::ratio<get_value<std::intmax_t>(numerator(ratio)),
get_value<std::intmax_t>(denominator(ratio))>>{dt};
}

} // namespace au


namespace au {

// DO NOT follow this pattern to define your own units. This is for library-defined units.
Expand Down Expand Up @@ -7187,6 +7159,67 @@ constexpr auto bar = SymbolFor<Bars>{};



namespace au {

// Define 1:1 mapping between duration types of chrono library and our library.
template <typename RepT, typename Period>
struct CorrespondingQuantity<std::chrono::duration<RepT, Period>> {
using Unit = decltype(Seconds{} * (mag<Period::num>() / mag<Period::den>()));
using Rep = RepT;

using ChronoDuration = std::chrono::duration<Rep, Period>;

static constexpr Rep extract_value(ChronoDuration d) { return d.count(); }
static constexpr ChronoDuration construct_from_value(Rep x) { return ChronoDuration{x}; }
};

// Define special mappings for widely used chrono types.
template <typename ChronoType, typename AuUnit>
struct SpecialCorrespondingQuantity {
using Unit = AuUnit;
using Rep = decltype(ChronoType{}.count());

static constexpr Rep extract_value(ChronoType d) { return d.count(); }
static constexpr ChronoType construct_from_value(Rep x) { return ChronoType{x}; }
};

template <>
struct CorrespondingQuantity<std::chrono::nanoseconds>
: SpecialCorrespondingQuantity<std::chrono::nanoseconds, Nano<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::microseconds>
: SpecialCorrespondingQuantity<std::chrono::microseconds, Micro<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::milliseconds>
: SpecialCorrespondingQuantity<std::chrono::milliseconds, Milli<Seconds>> {};

template <>
struct CorrespondingQuantity<std::chrono::seconds>
: SpecialCorrespondingQuantity<std::chrono::seconds, Seconds> {};

template <>
struct CorrespondingQuantity<std::chrono::minutes>
: SpecialCorrespondingQuantity<std::chrono::minutes, Minutes> {};

template <>
struct CorrespondingQuantity<std::chrono::hours>
: SpecialCorrespondingQuantity<std::chrono::hours, Hours> {};

// Convert any Au duration quantity to an equivalent `std::chrono::duration`.
template <typename U, typename R>
constexpr auto as_chrono_duration(Quantity<U, R> dt) {
constexpr auto ratio = unit_ratio(U{}, seconds);
static_assert(is_rational(ratio), "Cannot convert to chrono::duration with non-rational ratio");
return std::chrono::duration<R,
std::ratio<get_value<std::intmax_t>(numerator(ratio)),
get_value<std::intmax_t>(denominator(ratio))>>{dt};
}

} // namespace au


namespace au {

// DO NOT follow this pattern to define your own units. This is for library-defined units.
Expand Down Expand Up @@ -7231,6 +7264,7 @@ constexpr auto W = SymbolFor<Watts>{};
} // namespace au



namespace au {

// DO NOT follow this pattern to define your own units. This is for library-defined units.
Expand Down
Loading

0 comments on commit 1096631

Please sign in to comment.