Doxygen documentation added

This commit is contained in:
Mateusz Pusz
2020-05-13 15:33:29 +02:00
parent 64a8b32b8f
commit e58c8054bc
5 changed files with 80 additions and 8 deletions

View File

@@ -27,6 +27,12 @@
namespace units {
/**
* @brief A compile-time fixed string
*
* @tparam CharT Character type to be used by the string
* @tparam N The size of the string
*/
template<typename CharT, std::size_t N>
struct basic_fixed_string {
CharT data_[N + 1] = {};

View File

@@ -189,6 +189,14 @@ struct dimension_unit_impl<D> {
} // namespace detail
/**
* @brief Returns a 'default' unit of the dimension
*
* Depending on the dimension type it returns a base unit (for base dimensions)
* or a coherent unit (in case of derived dimensions).
*
* @tparam D Dimension type to get the unit from.
*/
template<Dimension D>
using dimension_unit = detail::dimension_unit_impl<D>::type;

View File

@@ -29,13 +29,15 @@
namespace units {
template<std::intmax_t N, typename D, typename U, typename Rep>
requires(N == 0)
inline Rep pow(const quantity<D, U, Rep>&) noexcept
{
return 1;
}
/**
* @brief Computes the value of a quantity raised to the power `N`
*
* Both the quantity value and its dimension are the base of the operation.
*
* @tparam N Exponent
* @param q Quantity being the base of the operation
* @return Quantity The result of computation
*/
template<std::intmax_t N, typename D, typename U, typename Rep>
requires(N != 0)
inline Quantity AUTO pow(const quantity<D, U, Rep>& q) noexcept
@@ -47,6 +49,26 @@ inline Quantity AUTO pow(const quantity<D, U, Rep>& q) noexcept
return quantity<dim, unit, Rep>(static_cast<Rep>(std::pow(q.count(), N)));
}
/**
* @brief OVerload that always returns 1 for N == 0
*
* @return Rep A scalar value of @c 1.
*/
template<std::intmax_t N, typename D, typename U, typename Rep>
requires(N == 0)
inline Rep pow(const quantity<D, U, Rep>&) noexcept
{
return 1;
}
/**
* @brief Computes the square root of a quantity
*
* Both the quantity value and its dimension are the base of the operation.
*
* @param q Quantity being the base of the operation
* @return Quantity The result of computation
*/
template<typename D, typename U, typename Rep>
inline Quantity AUTO sqrt(const quantity<D, U, Rep>& q) noexcept
requires requires { std::sqrt(q.count()); }
@@ -57,6 +79,12 @@ inline Quantity AUTO sqrt(const quantity<D, U, Rep>& q) noexcept
return quantity<dim, unit, Rep>(static_cast<Rep>(std::sqrt(q.count())));
}
/**
* @brief Computes the absolute value of a quantity
*
* @param q Quantity being the base of the operation
* @return Quantity The absolute value of a provided quantity
*/
template<typename D, typename U, typename Rep>
constexpr Quantity AUTO abs(const quantity<D, U, Rep>& q) noexcept
requires requires { std::abs(q.count()); }
@@ -64,6 +92,14 @@ constexpr Quantity AUTO abs(const quantity<D, U, Rep>& q) noexcept
return quantity<D, U, Rep>(std::abs(q.count()));
}
/**
* @brief Returns the epsilon of the quantity
*
* The returned value is defined by a <tt>std::numeric_limits<typename Q::rep>::epsilon()</tt>.
*
* @tparam Q Quantity type being the base of the operation
* @return Quantity The epsilon value for quantity's representation type
*/
template<Quantity Q>
requires requires { std::numeric_limits<typename Q::rep>::epsilon(); }
constexpr Quantity AUTO epsilon() noexcept

View File

@@ -33,6 +33,16 @@
namespace units {
/**
* @brief Provides compile-time rational arithmetic support.
*
* This class is really similar to @c std::ratio but gets an additional `Exp`
* template parameter.
*
* @tparam Num Numerator
* @tparam Den Denominator (default @c 1)
* @tparam Exp Exponent (default @c 0)
*/
template<std::intmax_t Num, std::intmax_t Den = 1, std::intmax_t Exp = 0>
requires(Den != 0)
struct ratio {

View File

@@ -18,8 +18,20 @@ constexpr void validate_ascii_string([[maybe_unused]] const char (&s)[P + 1]) no
#endif
}
}
} // namespace detail
/**
* @brief A symbol text representation
*
* This class template is responsible for definition and handling of a symbol text
* representation. In the libary it is used to define symbols of units and prefixes.
* Each symbol can have two versions: Unicode and ASCI-only.
*
* @tparam StandardCharT Character type to be used for a Unicode representation
* @tparam N The size of a Unicode symbol
* @tparam M The size of the ASCII-only symbol
*/
template<typename StandardCharT, std::size_t N, std::size_t M>
struct basic_symbol_text {
basic_fixed_string<StandardCharT, N> standard_;