STD::NUM_PUT(3)
π std::num_put< _CharT, _OutIter >(3) β Library Functions Manual π
okay so bestie, you opened the manual for std::num_put< _CharT, _OutIter > in the Library Functions Manual and honestly?? iconic decision. she's the primary class template num_put and she's about to teach you how numbers become strings. this is part 1 of 3 so grab a snack π and let's GO.
πΈ NAME πΈ
std::num_put< _CharT, _OutIter > β Primary class template num_put. that's the whole vibe, no notes π
β¨ SYNOPSIS β¨
#include <locale>
Inherits std::locale::facet.
π«Ά Public Types
typedef _CharT char_typeβ Public typedefs. (a cute lil alias, she's literally just_CharTin a bow π)typedef _OutIter iter_typeβ Public typedefs. (_OutIterbut make it fashion)
π Public Member Functions
num_put (size_t __refs=0)β Constructor performs initialization.template<typename _ValueT> _OutIter _M_insert_float (_OutIter __s, ios_base &__io, _CharT __fill, char __mod, _ValueT __v) consttemplate<typename _ValueT> _OutIter _M_insert_int (_OutIter __s, ios_base &__io, _CharT __fill, _ValueT __v) constiter_type put (iter_type __s, ios_base &__io, char_type __fill, bool __v) constβ Numeric formatting.iter_type put (iter_type __s, ios_base &__io, char_type __fill, const void *__v) constβ Numeric formatting.iter_type put (iter_type __s, ios_base &__io, char_type __fill, long __v) constβ Numeric formatting.iter_type put (iter_type __s, ios_base &__io, char_type __fill, unsigned long __v) constβ Numeric formatting.iter_type put (iter_type __s, ios_base &__io, char_type __fill, long long __v) constβ Numeric formatting.iter_type put (iter_type __s, ios_base &__io, char_type __fill, unsigned long long __v) constβ Numeric formatting.iter_type put (iter_type __s, ios_base &__io, char_type __fill, double __v) constβ Numeric formatting.iter_type put (iter_type __s, ios_base &__io, char_type __fill, long double __v) constβ Numeric formatting.
π Static Public Attributes
static locale::id idβ Numpunct facet id.
π¦ Protected Member Functions
virtual ~num_put ()β Destructor.void _M_group_float (const char *__grouping, size_t __grouping_size, char_type __sep, const char_type *__p, char_type *__new, char_type *__cs, int &__len) constvoid _M_group_int (const char *__grouping, size_t __grouping_size, char_type __sep, ios_base &__io, char_type *__new, char_type *__cs, int &__len) consttemplate<typename _ValueT> iter_type _M_insert_float (iter_type, ios_base &__io, char_type __fill, char __mod, _ValueT __v) consttemplate<typename _ValueT> iter_type _M_insert_int (iter_type, ios_base &__io, char_type __fill, _ValueT __v) constvoid _M_pad (char_type __fill, streamsize __w, ios_base &__io, char_type *__new, const char_type *__cs, int &__len) constvirtual iter_type do_put (iter_type __s, ios_base &__io, char_type __fill, bool __v) constβ Numeric formatting.virtual iter_type do_put (iter_type __s, ios_base &__io, char_type __fill, long __v) constβ Numeric formatting.virtual iter_type do_put (iter_type __s, ios_base &__io, char_type __fill, unsigned long __v) constβ Numeric formatting.virtual iter_type do_put (iter_type __s, ios_base &__io, char_type __fill, long long __v) constβ Numeric formatting.virtual iter_type do_put (iter_type __s, ios_base &__io, char_type __fill, unsigned long long __v) constβ Numeric formatting.virtual iter_type do_put (iter_type, ios_base &, char_type, double) constβ Numeric formatting.virtual iter_type do_put (iter_type, ios_base &, char_type, long double) constβ Numeric formatting.virtual iter_type do_put (iter_type, ios_base &, char_type, const void *) constβ Numeric formatting.
π§ Static Protected Member Functions
static __c_locale _S_clone_c_locale (__c_locale &__cloc) throw ()static void _S_create_c_locale (__c_locale &__cloc, const char *__s, __c_locale __old=0)static void _S_destroy_c_locale (__c_locale &__cloc)static __c_locale _S_get_c_locale ()static const char * _S_get_c_name () throw ()static __c_locale _S_lc_ctype_c_locale (__c_locale __cloc, const char *__s)
π Detailed Description π
template<typename _CharT, typename _OutIter>
class std::num_put< _CharT, _OutIter >"Primary class template num_put.
so like. what IS this facet? she encapsulates the code to convert a number to a string, and she's the one the ostream numeric insertion operators call up when they need a number turned into pretty text. main character energy fr fr π
the num_put template uses protected virtual functions to provide the actual results. the public accessors just forward the call to those virtual functions. and those virtual functions? they're hooks for developers to implement the behavior they require from the num_put facet. so if you wanna customize, that's your doorway πͺβ¨
π Member Typedef Documentation π
template<typename _CharT, typename _OutIter> typedef _CharT std::num_put< _CharT, _OutIter >::char_type
Public typedefs. π
template<typename _CharT, typename _OutIter> typedef _OutIter std::num_put< _CharT, _OutIter >::iter_type
Public typedefs. π
π Constructor & Destructor Documentation π
template<typename _CharT, typename _OutIter> std::num_put< _CharT, _OutIter >::num_put (size_t __refs = 0) [inline], [explicit]
Constructor performs initialization. this is the constructor provided by the standard, so it's not doing anything wild, she's just doing her job π
Parameters
__refsβ Passed to the base facet class.
template<typename _CharT, typename _OutIter> virtual std::num_put< _CharT, _OutIter >::~num_put () [inline], [protected], [virtual]
Destructor. she's protected and virtual, so she exits the group chat quietly π«‘
π₯ Member Function Documentation π₯
template<typename _CharT, typename _OutIter> _OutIter std::num_put< _CharT, _OutIter >::do_put (iter_type __s, ios_base & __io, char_type __fill, bool __v) const [protected], [virtual]
Numeric formatting. these functions do the work of formatting numeric values and inserting them into a stream. this function is a hook for derived classes to change the value returned. so if you're a derived class wanting to switch things up, this is your moment β¨
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
- Iterator after writing.
References std::ios_base::_M_getloc(), std::ios_base::adjustfield, std::ios_base::boolalpha, std::ios_base::flags(), std::ios_base::left, and std::ios_base::width().
Referenced by std::num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > >::put(), std::num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > >::put(), std::num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > >::put(), std::num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > >::put(), std::num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > >::put(), std::num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > >::put(), std::num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > >::put(), and std::num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > >::put(). (yes that's eight of them, she's popular π)
template<typename _CharT, typename _OutIter> virtual iter_type std::num_put< _CharT, _OutIter >::do_put (iter_type __s, ios_base & __io, char_type __fill, long __v) const [inline], [protected], [virtual]
Numeric formatting. these functions do the work of formatting numeric values and inserting them into a stream. this function is a hook for derived classes to change the value returned.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
- Iterator after writing.
template<typename _CharT, typename _OutIter> virtual iter_type std::num_put< _CharT, _OutIter >::do_put (iter_type __s, ios_base & __io, char_type __fill, long long __v) const [inline], [protected], [virtual]
Numeric formatting. these functions do the work of formatting numeric values and inserting them into a stream. this function is a hook for derived classes to change the value returned.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
- Iterator after writing.
template<typename _CharT, typename _OutIter> virtual iter_type std::num_put< _CharT, _OutIter >::do_put (iter_type __s, ios_base & __io, char_type __fill, unsigned long __v) const [inline], [protected], [virtual]
Numeric formatting. these functions do the work of formatting numeric values and inserting them into a stream. this function is a hook for derived classes to change the value returned.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
- Iterator after writing.
template<typename _CharT, typename _OutIter> virtual iter_type std::num_put< _CharT, _OutIter >::do_put (iter_type __s, ios_base & __io, char_type __fill, unsigned long long __v) const [inline], [protected], [virtual]
Numeric formatting. these functions do the work of formatting numeric values and inserting them into a stream. this function is a hook for derived classes to change the value returned.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
- Iterator after writing.
template<typename _CharT, typename _OutIter> _OutIter std::num_put< _CharT, _OutIter >::do_put (iter_type __s, ios_base & __io, char_type __fill, const void * __v) const [protected], [virtual]
Numeric formatting. these functions do the work of formatting numeric values and inserting them into a stream. this function is a hook for derived classes to change the value returned.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
- Iterator after writing.
References std::ios_base::basefield, std::ios_base::flags(), std::ios_base::hex, std::ios_base::showbase, and std::ios_base::uppercase.
template<typename _CharT, typename _OutIter> _OutIter std::num_put< _CharT, _OutIter >::do_put (iter_type __s, ios_base & __io, char_type __fill, double __v) const [protected], [virtual]
Numeric formatting. these functions do the work of formatting numeric values and inserting them into a stream. this function is a hook for derived classes to change the value returned.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
- Iterator after writing.
okay that's the end of part 1 bestie, there's more where that came from π¦π
do_put β the long double one, protected + virtual π
template<typename _CharT, typename _OutIter> _OutIter std::num_put< _CharT,
_OutIter >::do_put (iter_type __s, ios_base & __io, char_type __fill,
long double __v) const
[protected], [virtual]
Okay bestie, numeric formatting time. These functions are the ones doing the actual work of formatting numeric values and inserting them into a stream. And this specific one? It's a hook for derived classes to change the value returned β so if you're subclassing, this is your moment, your main character era. π
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
Iterator after writing.
put β the bool one πΈ
template<typename _CharT, typename _OutIter> iter_type std::num_put< _CharT,
_OutIter >::put (iter_type __s, ios_base & __io, char_type __fill, bool
__v) const
[inline]
Numeric formatting, but make it boolean β¨. Formats the boolean v and inserts it into a stream. How? By calling num_put::do_put(). Iconic delegation behavior, we love to see it.
If ios_base::boolalpha is set, it writes ctype<CharT>::truename() or ctype<CharT>::falsename(). Otherwise it just formats v as an int. Simple as that, no cap.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
Iterator after writing.
Referenced by std::basic_ostream< _CharT, _Traits >::operator<<().
put β the const void* one π¦
template<typename _CharT, typename _OutIter> iter_type std::num_put< _CharT,
_OutIter >::put (iter_type __s, ios_base & __io, char_type __fill, const
void * __v) const
[inline]
Numeric formatting for your pointer girlies π. Formats the pointer value v and inserts it into a stream β again by calling num_put::do_put(). Teamwork makes the dream work.
This function formats v as an unsigned long with ios_base::hex and ios_base::showbase set. So yes, you're getting that 0x energy whether you asked for it or not. π
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
Iterator after writing.
put β the double one π
template<typename _CharT, typename _OutIter> iter_type std::num_put< _CharT,
_OutIter >::put (iter_type __s, ios_base & __io, char_type __fill,
double __v) const
[inline]
Numeric formatting! Formats the floating point value v and inserts it into a stream, by calling num_put::do_put(). Formatting is affected by the flag settings in io.
The basic format is affected by the value of io.flags() & ios_base::floatfield:
- If equal to
ios_base::fixed, it formats like theprintffspecifier. - Else if equal to
ios_base::scientific, it formats likeeorEwithios_base::uppercaseunset or set respectively. - Otherwise, it formats like
gorGdepending onuppercase.
Heads up bestie: if bothfixedandscientificare set, the effect will also be likegorG. Yes, both-at-once is a thing and it does NOT do what you'd assume. π
The output precision is given by io.precision(). This precision is capped at numeric_limits::digits10 + 2 (different for double and long double). The default precision is 6.
If ios_base::showpos is set, '+' is output before positive values. If ios_base::showpoint is set, a decimal point will always be output. Periodt.
The decimal point character used is numpunct::decimal_point(). Thousands separators are inserted according to numpunct::grouping() and numpunct::thousands_sep(). Fancy.
If io.width() is non-zero, enough fill characters are inserted to make the result at least that wide:
- If
(io.flags() & ios_base::adjustfield) == ios_base::left, result is padded at the end. - If
ios_base::internal, then padding occurs immediately after either a'+'or'-'or after'0x'or'0X'. - Otherwise, padding occurs at the beginning.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
Iterator after writing.
put β the long one β¨
template<typename _CharT, typename _OutIter> iter_type std::num_put< _CharT,
_OutIter >::put (iter_type __s, ios_base & __io, char_type __fill, long
__v) const
[inline]
Numeric formatting, integral edition π. Formats the integral value v and inserts it into a stream. You already know the drill β it does so by calling num_put::do_put().
Formatting is affected by the flag settings in io.
The basic format is affected by the value of io.flags() & ios_base::basefield:
- If equal to
ios_base::oct, it formats like theprintfospecifier. - Else if equal to
ios_base::hex, it formats likexorXwithios_base::uppercaseunset or set respectively. - Otherwise, it formats like
d,ld,lldfor signed andu,lu,llufor unsigned values.
Okay so this is the part everyone gets wrong: if bothoctandhexare set, neither will take effect. It's giving "you can't sit with us." π
If ios_base::showpos is set, '+' is output before positive values. If ios_base::showbase is set, '0' precedes octal values (except 0) and '0[xX]' precedes hex values.
The decimal point character used is numpunct::decimal_point(). Thousands separators are inserted according to numpunct::grouping() and numpunct::thousands_sep().
If io.width() is non-zero, enough fill characters are inserted to make the result at least that wide:
- If
(io.flags() & ios_base::adjustfield) == ios_base::left, result is padded at the end. - If
ios_base::internal, then padding occurs immediately after either a'+'or'-'or after'0x'or'0X'. - Otherwise, padding occurs at the beginning.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
Iterator after writing.
put β the long double one π
template<typename _CharT, typename _OutIter> iter_type std::num_put< _CharT,
_OutIter >::put (iter_type __s, ios_base & __io, char_type __fill, long
double __v) const
[inline]
Numeric formatting! Formats the floating point value v and inserts it into a stream, calling num_put::do_put() like the well-behaved icon it is. Formatting is affected by the flag settings in io.
The basic format is affected by the value of io.flags() & ios_base::floatfield:
- If equal to
ios_base::fixed, it formats like theprintffspecifier. - Else if equal to
ios_base::scientific, it formats likeeorEwithios_base::uppercaseunset or set respectively. - Otherwise, it formats like
gorGdepending onuppercase.
And again, for the people in the back: if bothfixedandscientificare set, the effect will also be likegorG. Both set = neither wins. π«Ά
The output precision is given by io.precision(). This precision is capped at numeric_limits::digits10 + 2 (different for double and long double). The default precision is 6.
If ios_base::showpos is set, '+' is output before positive values. If ios_base::showpoint is set, a decimal point will always be output.
The decimal point character used is numpunct::decimal_point(). Thousands separators are inserted according to numpunct::grouping() and numpunct::thousands_sep().
If io.width() is non-zero, enough fill characters are inserted to make the result at least that wide:
- If
(io.flags() & ios_base::adjustfield) == ios_base::left, result is padded at the end. - If
ios_base::internal, then padding occurs immediately after either a'+'or'-'or after'0x'or'0X'. - Otherwise, padding occurs at the beginning.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
Iterator after writing.
put β the long long one π«
template<typename _CharT, typename _OutIter> iter_type std::num_put< _CharT,
_OutIter >::put (iter_type __s, ios_base & __io, char_type __fill, long
long __v) const
[inline]
Numeric formatting, integral, but make it BIG π
. Formats the integral value v and inserts it into a stream, by calling num_put::do_put().
Formatting is affected by the flag settings in io.
The basic format is affected by the value of io.flags() & ios_base::basefield:
- If equal to
ios_base::oct, it formats like theprintfospecifier. - Else if equal to
ios_base::hex, it formats likexorXwithios_base::uppercaseunset or set respectively. - Otherwise, it formats like
d,ld,lldfor signed andu,lu,llufor unsigned values.
Not me having to say it again but: if bothoctandhexare set, neither will take effect. It's a vibe check they both fail. π
If ios_base::showpos is set, '+' is output before positive values. If ios_base::showbase is set, '0' precedes octal values (except 0) and '0[xX]' precedes hex values.
The decimal point character used is numpunct::decimal_point(). Thousands separators are inserted according to numpunct::grouping() and numpunct::thousands_sep().
If io.width() is non-zero, enough fill characters are inserted to make the result at least that wide:
- If
(io.flags() & ios_base::adjustfield) == ios_base::left, result is padded at the end. - If
ios_base::internal, then padding occurs immediately after either a'+'or'-'or after'0x'or'0X'. - Otherwise, padding occurs at the beginning.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
Iterator after writing.
put β the unsigned long one π
template<typename _CharT, typename _OutIter> iter_type std::num_put< _CharT,
_OutIter >::put (iter_type __s, ios_base & __io, char_type __fill,
unsigned long __v) const
[inline]
Numeric formatting for the unsigned girlies, no negativity allowed π. Formats the integral value v and inserts it into a stream by calling num_put::do_put().
Formatting is affected by the flag settings in io.
The basic format is affected by the value of io.flags() & ios_base::basefield:
- If equal to
ios_base::oct, it formats like theprintfospecifier. - Else if equal to
ios_base::hex, it formats likexorXwithios_base::uppercaseunset or set respectively. - Otherwise, it formats like
d,ld,lldfor signed andu,lu,llufor unsigned values.
Once more with feeling: if bothoctandhexare set, neither will take effect. β
If ios_base::showpos is set, '+' is output before positive values. If ios_base::showbase is set, '0' precedes octal values (except 0) and '0[xX]' precedes hex values.
The decimal point character used is numpunct::decimal_point(). Thousands separators are inserted according to numpunct::grouping() and numpunct::thousands_sep().
If io.width() is non-zero, enough fill characters are inserted to make the result at least that wide:
- If
(io.flags() & ios_base::adjustfield) == ios_base::left, result is padded at the end. - If
ios_base::internal, then padding occurs immediately after either a'+'or'-'or after'0x'or'0X'. - Otherwise, padding occurs at the beginning.
Parameters
__sβ Stream to write to.__ioβ Source of locale and flags.__fillβ Char_type to use for filling.__vβ Value to format and insert.
Returns
Iterator after writing.
put β the unsigned long long one π
template<typename _CharT, typename _OutIter> iter_type std::num_put< _CharT,
_OutIter >::put (iter_type __s, ios_base & __io, char_type __fill,
unsigned long long __v) const
[inline]
Numeric formatting, unsigned AND enormous, truly the moment π. Formats the integral value v and inserts it into a stream. It does so by calling num_put::do_put().
Formatting is affected by the flag settings in io.
okay so the whole vibe of the basic format depends on what io.flags() & ios_base::basefield is giving. if it's equal to ios_base::oct, it formats like the printf o specifier. else if it's ios_base::hex, it's giving x or X with ios_base::uppercase unset or set respectively. otherwise, it's like d, ld, lld for signed and u, lu, llu for unsigned values. and bestie, note that if both oct and hex are set, neither will take effect. it's a whole mess, don't do it. π
if ios_base::showpos is set, a '+' is output before positive values. if ios_base::showbase is set, '0' precedes octal values (except 0) and '0[xX]' precedes hex values. iconic.
the decimal point character used is numpunct::decimal_point(). thousands separators are inserted according to numpunct::grouping() and numpunct::thousands_sep(). so fancy.
if io.width() is non-zero, enough fill characters are inserted to make the result at least that wide. if (io.flags() & ios_base::adjustfield) == ios_base::left, result is padded at the end. if ios_base::internal, then padding occurs immediately after either a '+' or '-' or after '0x' or '0X'. otherwise, padding occurs at the beginning. slay.
β¨ Parameters β¨
__sβ Stream to write to. π__ioβ Source of locale and flags. π__fillβ Char_type to use for filling. π¦__vβ Value to format and insert. πΈ
π Returns π
Iterator after writing. periodt. β¨
π¦ Member Data Documentation π¦
template<typename _CharT, typename _OutIter>
locale::id std::num_put< _CharT, _OutIter >::id [static]
Numpunct facet id. π
πΈ Author πΈ
Generated automatically by Doxygen for libstdc++ from the source code. π€β¨
and that's the tea, bestie. this page came from libstdc++ (the source/version) and the footer says libstdc++ std::num_p..._OutIter >(3) β no date in sight but we still ate. π
β¨π¦
π¦ where this page comes from
- arch rolling: gcc 16.2.1+r23+gd564253eb6c8-1 Β· GPL-3.0-or-later WITH GCC-exception-3.1 AND GFDL-1.3-or-later
- centos-stream 10: gcc-toolset-16-libstdc++-docs 16.2.1-1.3.el10 Β· GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel
- fedora 44: libstdc++-docs 16.2.1-2.fc44
- fedora 44: libstdc++-docs 16.2.1-3.fc44 Β· GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms