Skip to content

Commit 007ff3e

Browse files
committed
fix: text output bugs fixed
1 parent b2c85c2 commit 007ff3e

File tree

4 files changed

+39
-36
lines changed

4 files changed

+39
-36
lines changed

src/core/include/mp-units/bits/text_tools.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ template<std::intmax_t Value>
9999
}
100100

101101
template<typename CharT, std::size_t N, std::size_t M, std::output_iterator<CharT> Out>
102-
constexpr Out copy(const symbol_text<N, M>& txt, character_set char_set, Out out)
102+
[[nodiscard]] constexpr Out copy(const symbol_text<N, M>& txt, character_set char_set, Out out)
103103
{
104104
if (char_set == character_set::utf8) {
105105
if constexpr (is_same_v<CharT, char8_t>)
@@ -123,7 +123,8 @@ constexpr Out copy(const symbol_text<N, M>& txt, character_set char_set, Out out
123123
}
124124

125125
template<typename CharT, std::size_t N, std::size_t M, std::output_iterator<CharT> Out>
126-
constexpr Out copy_symbol(const symbol_text<N, M>& txt, character_set char_set, bool negative_power, Out out)
126+
[[nodiscard]] constexpr Out copy_symbol(const symbol_text<N, M>& txt, character_set char_set, bool negative_power,
127+
Out out)
127128
{
128129
out = copy<CharT>(txt, char_set, out);
129130
if (negative_power) {
@@ -134,7 +135,7 @@ constexpr Out copy_symbol(const symbol_text<N, M>& txt, character_set char_set,
134135
}
135136

136137
template<typename CharT, int Num, int... Den, std::output_iterator<CharT> Out>
137-
constexpr Out copy_symbol_exponent(character_set char_set, bool negative_power, Out out)
138+
[[nodiscard]] constexpr Out copy_symbol_exponent(character_set char_set, bool negative_power, Out out)
138139
{
139140
constexpr ratio r{Num, Den...};
140141
if constexpr (r.den != 1) {

src/core/include/mp-units/bits/unit_magnitude.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ template<auto... Ms>
281281
}
282282

283283
template<typename CharT, std::output_iterator<CharT> Out>
284-
constexpr Out print_separator(Out out, const unit_symbol_formatting& fmt)
284+
[[nodiscard]] constexpr Out print_separator(Out out, const unit_symbol_formatting& fmt)
285285
{
286286
if (fmt.separator == unit_symbol_separator::half_high_dot) {
287287
if (fmt.char_set != character_set::utf8)
@@ -311,12 +311,12 @@ template<typename CharT, std::output_iterator<CharT> Out, auto M, auto... Rest>
311311
constexpr ratio r = get_exponent(T{});
312312
return copy_symbol_exponent<CharT, detail::abs(r.num), r.den>(fmt.char_set, negative_power, out);
313313
};
314-
return (to_symbol(M), ..., (print_separator<CharT>(out, fmt), to_symbol(Rest)));
314+
return (to_symbol(M), ..., (out = print_separator<CharT>(out, fmt), to_symbol(Rest)));
315315
}
316316

317317
template<typename CharT, UnitMagnitude auto Num, UnitMagnitude auto Den, UnitMagnitude auto NumConstants,
318318
UnitMagnitude auto DenConstants, std::intmax_t Exp10, std::output_iterator<CharT> Out>
319-
constexpr Out magnitude_symbol_impl(Out out, const unit_symbol_formatting& fmt)
319+
[[nodiscard]] constexpr Out magnitude_symbol_impl(Out out, const unit_symbol_formatting& fmt)
320320
{
321321
bool numerator = false;
322322
constexpr auto num_value = get_value<std::intmax_t>(Num);
@@ -488,7 +488,7 @@ struct unit_magnitude : magnitude_base<unit_magnitude<Ms...>> {
488488
}
489489

490490
template<typename CharT, std::output_iterator<CharT> Out>
491-
friend constexpr Out magnitude_symbol(Out out, unit_magnitude, const unit_symbol_formatting& fmt)
491+
[[nodiscard]] friend constexpr Out magnitude_symbol(Out out, unit_magnitude, const unit_symbol_formatting& fmt)
492492
{
493493
if constexpr (unit_magnitude{} == unit_magnitude<1>{}) {
494494
return out;

src/core/include/mp-units/framework/dimension.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -234,29 +234,31 @@ namespace detail {
234234

235235
template<typename CharT, std::output_iterator<CharT> Out, Dimension D>
236236
requires requires { D::_symbol_; }
237-
constexpr Out dimension_symbol_impl(Out out, D, const dimension_symbol_formatting& fmt, bool negative_power)
237+
[[nodiscard]] constexpr Out dimension_symbol_impl(Out out, D, const dimension_symbol_formatting& fmt,
238+
bool negative_power)
238239
{
239240
return copy_symbol<CharT>(D::_symbol_, fmt.char_set, negative_power, out);
240241
}
241242

242243
template<typename CharT, std::output_iterator<CharT> Out, typename F, int Num, int... Den>
243-
constexpr auto dimension_symbol_impl(Out out, const power<F, Num, Den...>&, const dimension_symbol_formatting& fmt,
244-
bool negative_power)
244+
[[nodiscard]] constexpr auto dimension_symbol_impl(Out out, const power<F, Num, Den...>&,
245+
const dimension_symbol_formatting& fmt, bool negative_power)
245246
{
246247
out = dimension_symbol_impl<CharT>(out, F{}, fmt, false); // negative power component will be added below if needed
247248
return copy_symbol_exponent<CharT, Num, Den...>(fmt.char_set, negative_power, out);
248249
}
249250

250251
template<typename CharT, std::output_iterator<CharT> Out, typename... Ms>
251-
constexpr Out dimension_symbol_impl(Out out, const type_list<Ms...>&, const dimension_symbol_formatting& fmt,
252-
bool negative_power)
252+
[[nodiscard]] constexpr Out dimension_symbol_impl(Out out, const type_list<Ms...>&,
253+
const dimension_symbol_formatting& fmt, bool negative_power)
253254
{
254255
return (..., (out = dimension_symbol_impl<CharT>(out, Ms{}, fmt, negative_power)));
255256
}
256257

257258
template<typename CharT, std::output_iterator<CharT> Out, typename... Nums, typename... Dens>
258-
constexpr Out dimension_symbol_impl(Out out, const type_list<Nums...>& nums, const type_list<Dens...>& dens,
259-
const dimension_symbol_formatting& fmt)
259+
[[nodiscard]] constexpr Out dimension_symbol_impl(Out out, const type_list<Nums...>& nums,
260+
const type_list<Dens...>& dens,
261+
const dimension_symbol_formatting& fmt)
260262
{
261263
if constexpr (sizeof...(Nums) == 0 && sizeof...(Dens) == 0) {
262264
// dimensionless quantity
@@ -272,8 +274,8 @@ constexpr Out dimension_symbol_impl(Out out, const type_list<Nums...>& nums, con
272274
}
273275

274276
template<typename CharT, std::output_iterator<CharT> Out, typename... Expr>
275-
constexpr Out dimension_symbol_impl(Out out, const derived_dimension_impl<Expr...>&,
276-
const dimension_symbol_formatting& fmt, bool negative_power)
277+
[[nodiscard]] constexpr Out dimension_symbol_impl(Out out, const derived_dimension_impl<Expr...>&,
278+
const dimension_symbol_formatting& fmt, bool negative_power)
277279
{
278280
(void)negative_power;
279281
MP_UNITS_EXPECTS(negative_power == false);

src/core/include/mp-units/framework/unit.h

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -801,19 +801,19 @@ namespace detail {
801801

802802
template<typename CharT, std::output_iterator<CharT> Out, Unit U>
803803
requires requires { U::_symbol_; }
804-
constexpr Out unit_symbol_impl(Out out, U, const unit_symbol_formatting& fmt, bool negative_power)
804+
[[nodiscard]] constexpr Out unit_symbol_impl(Out out, U, const unit_symbol_formatting& fmt, bool negative_power)
805805
{
806806
return copy_symbol<CharT>(U::_symbol_, fmt.char_set, negative_power, out);
807807
}
808808

809809
template<typename CharT, std::output_iterator<CharT> Out, auto M, typename U>
810-
constexpr Out unit_symbol_impl(Out out, const scaled_unit_impl<M, U>& u, const unit_symbol_formatting& fmt,
811-
bool negative_power)
810+
[[nodiscard]] constexpr Out unit_symbol_impl(Out out, const scaled_unit_impl<M, U>& u,
811+
const unit_symbol_formatting& fmt, bool negative_power)
812812
{
813813
*out++ = '(';
814-
magnitude_symbol<CharT>(out, M, fmt);
814+
out = magnitude_symbol<CharT>(out, M, fmt);
815815
if constexpr (space_before_unit_symbol<scaled_unit<M, U>::_reference_unit_>) *out++ = ' ';
816-
unit_symbol_impl<CharT>(out, u._reference_unit_, fmt, negative_power);
816+
out = unit_symbol_impl<CharT>(out, u._reference_unit_, fmt, negative_power);
817817
*out++ = ')';
818818
return out;
819819
}
@@ -836,50 +836,50 @@ template<typename... Us, Unit U>
836836
}
837837

838838
template<typename CharT, std::output_iterator<CharT> Out, typename U, typename... Rest>
839-
constexpr Out unit_symbol_impl(Out out, const common_unit<U, Rest...>&, const unit_symbol_formatting& fmt,
840-
bool negative_power)
839+
[[nodiscard]] constexpr Out unit_symbol_impl(Out out, const common_unit<U, Rest...>&, const unit_symbol_formatting& fmt,
840+
bool negative_power)
841841
{
842842
constexpr std::string_view prefix("[");
843843
constexpr std::string_view separator(", ");
844844
auto print_unit = [&]<Unit Arg>(Arg) {
845845
constexpr auto u = get_common_unit_in(common_unit<U, Rest...>{}, Arg{});
846-
unit_symbol_impl<CharT>(out, u, fmt, negative_power);
846+
out = unit_symbol_impl<CharT>(out, u, fmt, negative_power);
847847
};
848-
detail::copy(std::begin(prefix), std::end(prefix), out);
848+
out = detail::copy(std::begin(prefix), std::end(prefix), out);
849849
print_unit(U{});
850850
for_each(std::tuple<Rest...>{}, [&]<Unit Arg>(Arg) {
851-
detail::copy(std::begin(separator), std::end(separator), out);
851+
out = detail::copy(std::begin(separator), std::end(separator), out);
852852
print_unit(Arg{});
853853
});
854854
*out++ = ']';
855855
return out;
856856
}
857857

858858
template<typename CharT, std::output_iterator<CharT> Out, typename F, int Num, int... Den>
859-
constexpr auto unit_symbol_impl(Out out, const power<F, Num, Den...>&, const unit_symbol_formatting& fmt,
860-
bool negative_power)
859+
[[nodiscard]] constexpr auto unit_symbol_impl(Out out, const power<F, Num, Den...>&, const unit_symbol_formatting& fmt,
860+
bool negative_power)
861861
{
862862
out = unit_symbol_impl<CharT>(out, F{}, fmt, false); // negative power component will be added below if needed
863863
return copy_symbol_exponent<CharT, Num, Den...>(fmt.char_set, negative_power, out);
864864
}
865865

866866
template<typename CharT, std::output_iterator<CharT> Out, typename... Us>
867-
constexpr Out unit_symbol_impl(Out out, const type_list<>&, const unit_symbol_formatting&, bool)
867+
[[nodiscard]] constexpr Out unit_symbol_impl(Out out, const type_list<>&, const unit_symbol_formatting&, bool)
868868
{
869869
return out;
870870
}
871871

872872
template<typename CharT, std::output_iterator<CharT> Out, typename U, typename... Rest>
873-
constexpr Out unit_symbol_impl(Out out, const type_list<U, Rest...>&, const unit_symbol_formatting& fmt,
874-
bool negative_power)
873+
[[nodiscard]] constexpr Out unit_symbol_impl(Out out, const type_list<U, Rest...>&, const unit_symbol_formatting& fmt,
874+
bool negative_power)
875875
{
876876
return ((out = unit_symbol_impl<CharT>(out, U{}, fmt, negative_power)), ...,
877-
(print_separator<CharT>(out, fmt), out = unit_symbol_impl<CharT>(out, Rest{}, fmt, negative_power)));
877+
(out = print_separator<CharT>(out, fmt), out = unit_symbol_impl<CharT>(out, Rest{}, fmt, negative_power)));
878878
}
879879

880880
template<typename CharT, std::output_iterator<CharT> Out, typename... Nums, typename... Dens>
881-
constexpr Out unit_symbol_impl(Out out, const type_list<Nums...>& nums, const type_list<Dens...>& dens,
882-
const unit_symbol_formatting& fmt)
881+
[[nodiscard]] constexpr Out unit_symbol_impl(Out out, const type_list<Nums...>& nums, const type_list<Dens...>& dens,
882+
const unit_symbol_formatting& fmt)
883883
{
884884
if constexpr (sizeof...(Nums) == 0 && sizeof...(Dens) == 0) {
885885
// dimensionless quantity
@@ -907,8 +907,8 @@ constexpr Out unit_symbol_impl(Out out, const type_list<Nums...>& nums, const ty
907907
}
908908

909909
template<typename CharT, std::output_iterator<CharT> Out, typename... Expr>
910-
constexpr Out unit_symbol_impl(Out out, const derived_unit_impl<Expr...>&, const unit_symbol_formatting& fmt,
911-
bool negative_power)
910+
[[nodiscard]] constexpr Out unit_symbol_impl(Out out, const derived_unit_impl<Expr...>&,
911+
const unit_symbol_formatting& fmt, bool negative_power)
912912
{
913913
(void)negative_power;
914914
MP_UNITS_EXPECTS(negative_power == false);

0 commit comments

Comments
 (0)