123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907 |
- //
- // NumberFormatter.h
- //
- // Library: Foundation
- // Package: Core
- // Module: NumberFormatter
- //
- // Definition of the NumberFormatter class.
- //
- // Copyright (c) 2004-2008, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #ifndef Foundation_NumberFormatter_INCLUDED
- #define Foundation_NumberFormatter_INCLUDED
- #include "Poco/Foundation.h"
- #include "Poco/NumericString.h"
- namespace Poco {
- class Foundation_API NumberFormatter
- /// The NumberFormatter class provides static methods
- /// for formatting numeric values into strings.
- ///
- /// There are two kind of static member functions:
- /// * format* functions return a std::string containing
- /// the formatted value.
- /// * append* functions append the formatted value to
- /// an existing string.
- {
- public:
- enum BoolFormat
- {
- FMT_TRUE_FALSE,
- FMT_YES_NO,
- FMT_ON_OFF
- };
- static const unsigned NF_MAX_INT_STRING_LEN = 32; // increase for 64-bit binary formatting support
- static const unsigned NF_MAX_FLT_STRING_LEN = POCO_MAX_FLT_STRING_LEN;
- static std::string format(int value);
- /// Formats an integer value in decimal notation.
- static std::string format(int value, int width);
- /// Formats an integer value in decimal notation,
- /// right justified in a field having at least
- /// the specified width.
- static std::string format0(int value, int width);
- /// Formats an integer value in decimal notation,
- /// right justified and zero-padded in a field
- /// having at least the specified width.
- static std::string formatHex(int value, bool prefix = false);
- /// Formats an int value in hexadecimal notation.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- /// The value is treated as unsigned.
- static std::string formatHex(int value, int width, bool prefix = false);
- /// Formats a int value in hexadecimal notation,
- /// right justified and zero-padded in
- /// a field having at least the specified width.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- /// The value is treated as unsigned.
- static std::string format(unsigned value);
- /// Formats an unsigned int value in decimal notation.
- static std::string format(unsigned value, int width);
- /// Formats an unsigned long int in decimal notation,
- /// right justified in a field having at least the
- /// specified width.
- static std::string format0(unsigned int value, int width);
- /// Formats an unsigned int value in decimal notation,
- /// right justified and zero-padded in a field having at
- /// least the specified width.
- static std::string formatHex(unsigned value, bool prefix = false);
- /// Formats an unsigned int value in hexadecimal notation.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- static std::string formatHex(unsigned value, int width, bool prefix = false);
- /// Formats a int value in hexadecimal notation,
- /// right justified and zero-padded in
- /// a field having at least the specified width.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- static std::string format(long value);
- /// Formats a long value in decimal notation.
- static std::string format(long value, int width);
- /// Formats a long value in decimal notation,
- /// right justified in a field having at least the
- /// specified width.
- static std::string format0(long value, int width);
- /// Formats a long value in decimal notation,
- /// right justified and zero-padded in a field
- /// having at least the specified width.
- static std::string formatHex(long value, bool prefix = false);
- /// Formats an unsigned long value in hexadecimal notation.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- /// The value is treated as unsigned.
- static std::string formatHex(long value, int width, bool prefix = false);
- /// Formats an unsigned long value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least the
- /// specified width.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- /// The value is treated as unsigned.
- static std::string format(unsigned long value);
- /// Formats an unsigned long value in decimal notation.
- static std::string format(unsigned long value, int width);
- /// Formats an unsigned long value in decimal notation,
- /// right justified in a field having at least the specified
- /// width.
- static std::string format0(unsigned long value, int width);
- /// Formats an unsigned long value in decimal notation,
- /// right justified and zero-padded
- /// in a field having at least the specified width.
- static std::string formatHex(unsigned long value, bool prefix = false);
- /// Formats an unsigned long value in hexadecimal notation.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- static std::string formatHex(unsigned long value, int width, bool prefix = false);
- /// Formats an unsigned long value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least the
- /// specified width.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- #ifdef POCO_HAVE_INT64
- #ifdef POCO_LONG_IS_64_BIT
- static std::string format(long long value);
- /// Formats a 64-bit integer value in decimal notation.
- static std::string format(long long value, int width);
- /// Formats a 64-bit integer value in decimal notation,
- /// right justified in a field having at least the specified width.
- static std::string format0(long long value, int width);
- /// Formats a 64-bit integer value in decimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- static std::string formatHex(long long value, bool prefix = false);
- /// Formats a 64-bit integer value in hexadecimal notation.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- /// The value is treated as unsigned.
- static std::string formatHex(long long value, int width, bool prefix = false);
- /// Formats a 64-bit integer value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- /// The value is treated as unsigned.
- /// If prefix is true, "0x" prefix is prepended to the resulting string.
- static std::string format(unsigned long long value);
- /// Formats an unsigned 64-bit integer value in decimal notation.
- static std::string format(unsigned long long value, int width);
- /// Formats an unsigned 64-bit integer value in decimal notation,
- /// right justified in a field having at least the specified width.
- static std::string format0(unsigned long long value, int width);
- /// Formats an unsigned 64-bit integer value in decimal notation,
- /// right justified and zero-padded in a field having at least the
- /// specified width.
- static std::string formatHex(unsigned long long value, bool prefix = false);
- /// Formats a 64-bit integer value in hexadecimal notation.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- static std::string formatHex(unsigned long long value, int width, bool prefix = false);
- /// Formats a 64-bit integer value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width. If prefix is true, "0x" prefix is
- /// prepended to the resulting string.
- #else // ifndef POCO_LONG_IS_64_BIT
- static std::string format(Int64 value);
- /// Formats a 64-bit integer value in decimal notation.
- static std::string format(Int64 value, int width);
- /// Formats a 64-bit integer value in decimal notation,
- /// right justified in a field having at least the specified width.
- static std::string format0(Int64 value, int width);
- /// Formats a 64-bit integer value in decimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- static std::string formatHex(Int64 value, bool prefix = false);
- /// Formats a 64-bit integer value in hexadecimal notation.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- /// The value is treated as unsigned.
- static std::string formatHex(Int64 value, int width, bool prefix = false);
- /// Formats a 64-bit integer value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- /// The value is treated as unsigned.
- /// If prefix is true, "0x" prefix is prepended to the resulting string.
- static std::string format(UInt64 value);
- /// Formats an unsigned 64-bit integer value in decimal notation.
- static std::string format(UInt64 value, int width);
- /// Formats an unsigned 64-bit integer value in decimal notation,
- /// right justified in a field having at least the specified width.
- static std::string format0(UInt64 value, int width);
- /// Formats an unsigned 64-bit integer value in decimal notation,
- /// right justified and zero-padded in a field having at least the
- /// specified width.
- static std::string formatHex(UInt64 value, bool prefix = false);
- /// Formats a 64-bit integer value in hexadecimal notation.
- /// If prefix is true, "0x" prefix is prepended to the
- /// resulting string.
- static std::string formatHex(UInt64 value, int width, bool prefix = false);
- /// Formats a 64-bit integer value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width. If prefix is true, "0x" prefix is
- /// prepended to the resulting string.
- #endif // ifdef POCO_LONG_IS_64_BIT
- #endif // ifdef POCO_HAVE_INT64
- static std::string format(float value);
- /// Formats a float value in decimal floating-point notation,
- /// according to std::printf's %g format with a precision of 8 fractional digits.
- static std::string format(float value, int precision);
- /// Formats a double value in decimal floating-point notation,
- /// according to std::printf's %f format with the given precision.
- static std::string format(float value, int width, int precision);
- /// Formats a double value in decimal floating-point notation,
- /// right justified in a field of the specified width,
- /// with the number of fractional digits given in precision.
- static std::string format(double value);
- /// Formats a double value in decimal floating-point notation,
- /// according to std::printf's %g format with a precision of 16 fractional digits.
- static std::string format(double value, int precision);
- /// Formats a double value in decimal floating-point notation,
- /// according to std::printf's %f format with the given precision.
- static std::string format(double value, int width, int precision);
- /// Formats a double value in decimal floating-point notation,
- /// right justified in a field of the specified width,
- /// with the number of fractional digits given in precision.
- static std::string format(const void* ptr);
- /// Formats a pointer in an eight (32-bit architectures) or
- /// sixteen (64-bit architectures) characters wide
- /// field in hexadecimal notation.
- static std::string format(bool value, BoolFormat format = FMT_TRUE_FALSE);
- /// Formats a bool value in decimal/text notation,
- /// according to format parameter.
- static void append(std::string& str, int value);
- /// Formats an integer value in decimal notation.
- static void append(std::string& str, int value, int width);
- /// Formats an integer value in decimal notation,
- /// right justified in a field having at least
- /// the specified width.
- static void append0(std::string& str, int value, int width);
- /// Formats an integer value in decimal notation,
- /// right justified and zero-padded in a field
- /// having at least the specified width.
- static void appendHex(std::string& str, int value);
- /// Formats an int value in hexadecimal notation.
- /// The value is treated as unsigned.
- static void appendHex(std::string& str, int value, int width);
- /// Formats a int value in hexadecimal notation,
- /// right justified and zero-padded in
- /// a field having at least the specified width.
- /// The value is treated as unsigned.
- static void append(std::string& str, unsigned value);
- /// Formats an unsigned int value in decimal notation.
- static void append(std::string& str, unsigned value, int width);
- /// Formats an unsigned long int in decimal notation,
- /// right justified in a field having at least the
- /// specified width.
- static void append0(std::string& str, unsigned int value, int width);
- /// Formats an unsigned int value in decimal notation,
- /// right justified and zero-padded in a field having at
- /// least the specified width.
- static void appendHex(std::string& str, unsigned value);
- /// Formats an unsigned int value in hexadecimal notation.
- static void appendHex(std::string& str, unsigned value, int width);
- /// Formats a int value in hexadecimal notation,
- /// right justified and zero-padded in
- /// a field having at least the specified width.
- static void append(std::string& str, long value);
- /// Formats a long value in decimal notation.
- static void append(std::string& str, long value, int width);
- /// Formats a long value in decimal notation,
- /// right justified in a field having at least the
- /// specified width.
- static void append0(std::string& str, long value, int width);
- /// Formats a long value in decimal notation,
- /// right justified and zero-padded in a field
- /// having at least the specified width.
- static void appendHex(std::string& str, long value);
- /// Formats an unsigned long value in hexadecimal notation.
- /// The value is treated as unsigned.
- static void appendHex(std::string& str, long value, int width);
- /// Formats an unsigned long value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least the
- /// specified width.
- /// The value is treated as unsigned.
- static void append(std::string& str, unsigned long value);
- /// Formats an unsigned long value in decimal notation.
- static void append(std::string& str, unsigned long value, int width);
- /// Formats an unsigned long value in decimal notation,
- /// right justified in a field having at least the specified
- /// width.
- static void append0(std::string& str, unsigned long value, int width);
- /// Formats an unsigned long value in decimal notation,
- /// right justified and zero-padded
- /// in a field having at least the specified width.
- static void appendHex(std::string& str, unsigned long value);
- /// Formats an unsigned long value in hexadecimal notation.
- static void appendHex(std::string& str, unsigned long value, int width);
- /// Formats an unsigned long value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least the
- /// specified width.
- #ifdef POCO_HAVE_INT64
- #ifdef POCO_LONG_IS_64_BIT
- static void append(std::string& str, long long value);
- /// Formats a 64-bit integer value in decimal notation.
- static void append(std::string& str, long long value, int width);
- /// Formats a 64-bit integer value in decimal notation,
- /// right justified in a field having at least the specified width.
- static void append0(std::string& str, long long value, int width);
- /// Formats a 64-bit integer value in decimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- static void appendHex(std::string& str, long long value);
- /// Formats a 64-bit integer value in hexadecimal notation.
- /// The value is treated as unsigned.
- static void appendHex(std::string& str, long long value, int width);
- /// Formats a 64-bit integer value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- /// The value is treated as unsigned.
- static void append(std::string& str, unsigned long long value);
- /// Formats an unsigned 64-bit integer value in decimal notation.
- static void append(std::string& str, unsigned long long value, int width);
- /// Formats an unsigned 64-bit integer value in decimal notation,
- /// right justified in a field having at least the specified width.
- static void append0(std::string& str, unsigned long long value, int width);
- /// Formats an unsigned 64-bit integer value in decimal notation,
- /// right justified and zero-padded in a field having at least the
- /// specified width.
- static void appendHex(std::string& str, unsigned long long value);
- /// Formats a 64-bit integer value in hexadecimal notation.
- static void appendHex(std::string& str, unsigned long long value, int width);
- /// Formats a 64-bit integer value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- #else // ifndef POCO_LONG_IS_64_BIT
- static void append(std::string& str, Int64 value);
- /// Formats a 64-bit integer value in decimal notation.
- static void append(std::string& str, Int64 value, int width);
- /// Formats a 64-bit integer value in decimal notation,
- /// right justified in a field having at least the specified width.
- static void append0(std::string& str, Int64 value, int width);
- /// Formats a 64-bit integer value in decimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- static void appendHex(std::string& str, Int64 value);
- /// Formats a 64-bit integer value in hexadecimal notation.
- /// The value is treated as unsigned.
- static void appendHex(std::string& str, Int64 value, int width);
- /// Formats a 64-bit integer value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- /// The value is treated as unsigned.
- static void append(std::string& str, UInt64 value);
- /// Formats an unsigned 64-bit integer value in decimal notation.
- static void append(std::string& str, UInt64 value, int width);
- /// Formats an unsigned 64-bit integer value in decimal notation,
- /// right justified in a field having at least the specified width.
- static void append0(std::string& str, UInt64 value, int width);
- /// Formats an unsigned 64-bit integer value in decimal notation,
- /// right justified and zero-padded in a field having at least the
- /// specified width.
- static void appendHex(std::string& str, UInt64 value);
- /// Formats a 64-bit integer value in hexadecimal notation.
- static void appendHex(std::string& str, UInt64 value, int width);
- /// Formats a 64-bit integer value in hexadecimal notation,
- /// right justified and zero-padded in a field having at least
- /// the specified width.
- #endif // ifdef POCO_LONG_IS_64_BIT
- #endif // ifdef POCO_HAVE_INT64
- static void append(std::string& str, float value);
- /// Formats a float value in decimal floating-point notation,
- /// according to std::printf's %g format with a precision of 8 fractional digits.
- static void append(std::string& str, float value, int precision);
- /// Formats a double value in decimal floating-point notation,
- /// according to std::printf's %f format with the given precision.
- static void append(std::string& str, float value, int width, int precision);
- /// Formats a double value in decimal floating-point notation,
- /// right justified in a field of the specified width,
- /// with the number of fractional digits given in precision.
- static void append(std::string& str, double value);
- /// Formats a double value in decimal floating-point notation,
- /// according to std::printf's %g format with a precision of 16 fractional digits.
- static void append(std::string& str, double value, int precision);
- /// Formats a double value in decimal floating-point notation,
- /// according to std::printf's %f format with the given precision.
- static void append(std::string& str, double value, int width, int precision);
- /// Formats a double value in decimal floating-point notation,
- /// right justified in a field of the specified width,
- /// with the number of fractional digits given in precision.
- static void append(std::string& str, const void* ptr);
- /// Formats a pointer in an eight (32-bit architectures) or
- /// sixteen (64-bit architectures) characters wide
- /// field in hexadecimal notation.
- private:
- };
- //
- // inlines
- //
- inline std::string NumberFormatter::format(int value)
- {
- std::string result;
- intToStr(value, 10, result);
- return result;
- }
- inline std::string NumberFormatter::format(int value, int width)
- {
- std::string result;
- intToStr(value, 10, result, false, width, ' ');
- return result;
- }
- inline std::string NumberFormatter::format0(int value, int width)
- {
- std::string result;
- intToStr(value, 10, result, false, width, '0');
- return result;
- }
- inline std::string NumberFormatter::formatHex(int value, bool prefix)
- {
- std::string result;
- uIntToStr(static_cast<unsigned int>(value), 0x10, result, prefix);
- return result;
- }
- inline std::string NumberFormatter::formatHex(int value, int width, bool prefix)
- {
- std::string result;
- uIntToStr(static_cast<unsigned int>(value), 0x10, result, prefix, width, '0');
- return result;
- }
- inline std::string NumberFormatter::format(unsigned value)
- {
- std::string result;
- uIntToStr(value, 10, result);
- return result;
- }
- inline std::string NumberFormatter::format(unsigned value, int width)
- {
- std::string result;
- uIntToStr(value, 10, result, false, width, ' ');
- return result;
- }
- inline std::string NumberFormatter::format0(unsigned int value, int width)
- {
- std::string result;
- uIntToStr(value, 10, result, false, width, '0');
- return result;
- }
- inline std::string NumberFormatter::formatHex(unsigned value, bool prefix)
- {
- std::string result;
- uIntToStr(value, 0x10, result, prefix);
- return result;
- }
- inline std::string NumberFormatter::formatHex(unsigned value, int width, bool prefix)
- {
- std::string result;
- uIntToStr(value, 0x10, result, prefix, width, '0');
- return result;
- }
- inline std::string NumberFormatter::format(long value)
- {
- std::string result;
- intToStr(value, 10, result);
- return result;
- }
- inline std::string NumberFormatter::format(long value, int width)
- {
- std::string result;
- intToStr(value, 10, result, false, width, ' ');
- return result;
- }
- inline std::string NumberFormatter::format0(long value, int width)
- {
- std::string result;
- intToStr(value, 10, result, false, width, '0');
- return result;
- }
- inline std::string NumberFormatter::formatHex(long value, bool prefix)
- {
- std::string result;
- uIntToStr(static_cast<unsigned long>(value), 0x10, result, prefix);
- return result;
- }
- inline std::string NumberFormatter::formatHex(long value, int width, bool prefix)
- {
- std::string result;
- uIntToStr(static_cast<unsigned long>(value), 0x10, result, prefix, width, '0');
- return result;
- }
- inline std::string NumberFormatter::format(unsigned long value)
- {
- std::string result;
- uIntToStr(value, 10, result);
- return result;
- }
- inline std::string NumberFormatter::format(unsigned long value, int width)
- {
- std::string result;
- uIntToStr(value, 10, result, false, width, ' ');
- return result;
- }
- inline std::string NumberFormatter::format0(unsigned long value, int width)
- {
- std::string result;
- uIntToStr(value, 10, result, false, width, '0');
- return result;
- }
- inline std::string NumberFormatter::formatHex(unsigned long value, bool prefix)
- {
- std::string result;
- uIntToStr(value, 0x10, result, prefix);
- return result;
- }
- inline std::string NumberFormatter::formatHex(unsigned long value, int width, bool prefix)
- {
- std::string result;
- uIntToStr(value, 0x10, result, prefix, width, '0');
- return result;
- }
- #ifdef POCO_HAVE_INT64
- #ifdef POCO_LONG_IS_64_BIT
- inline std::string NumberFormatter::format(long long value)
- {
- std::string result;
- intToStr(value, 10, result);
- return result;
- }
- inline std::string NumberFormatter::format(long long value, int width)
- {
- std::string result;
- intToStr(value, 10, result, false, width, ' ');
- return result;
- }
- inline std::string NumberFormatter::format0(long long value, int width)
- {
- std::string result;
- intToStr(value, 10, result, false, width, '0');
- return result;
- }
- inline std::string NumberFormatter::formatHex(long long value, bool prefix)
- {
- std::string result;
- uIntToStr(static_cast<unsigned long long>(value), 0x10, result, prefix);
- return result;
- }
- inline std::string NumberFormatter::formatHex(long long value, int width, bool prefix)
- {
- std::string result;
- uIntToStr(static_cast<unsigned long long>(value), 0x10, result, prefix, width, '0');
- return result;
- }
- inline std::string NumberFormatter::format(unsigned long long value)
- {
- std::string result;
- uIntToStr(value, 10, result);
- return result;
- }
- inline std::string NumberFormatter::format(unsigned long long value, int width)
- {
- std::string result;
- uIntToStr(value, 10, result, false, width, ' ');
- return result;
- }
- inline std::string NumberFormatter::format0(unsigned long long value, int width)
- {
- std::string result;
- uIntToStr(value, 10, result, false, width, '0');
- return result;
- }
- inline std::string NumberFormatter::formatHex(unsigned long long value, bool prefix)
- {
- std::string result;
- uIntToStr(value, 0x10, result, prefix);
- return result;
- }
- inline std::string NumberFormatter::formatHex(unsigned long long value, int width, bool prefix)
- {
- std::string result;
- uIntToStr(value, 0x10, result, prefix, width, '0');
- return result;
- }
- #else // ifndef POCO_LONG_IS_64_BIT
- inline std::string NumberFormatter::format(Int64 value)
- {
- std::string result;
- intToStr(value, 10, result);
- return result;
- }
- inline std::string NumberFormatter::format(Int64 value, int width)
- {
- std::string result;
- intToStr(value, 10, result, false, width, ' ');
- return result;
- }
- inline std::string NumberFormatter::format0(Int64 value, int width)
- {
- std::string result;
- intToStr(value, 10, result, false, width, '0');
- return result;
- }
- inline std::string NumberFormatter::formatHex(Int64 value, bool prefix)
- {
- std::string result;
- uIntToStr(static_cast<UInt64>(value), 0x10, result, prefix);
- return result;
- }
- inline std::string NumberFormatter::formatHex(Int64 value, int width, bool prefix)
- {
- std::string result;
- uIntToStr(static_cast<UInt64>(value), 0x10, result, prefix, width, '0');
- return result;
- }
- inline std::string NumberFormatter::format(UInt64 value)
- {
- std::string result;
- uIntToStr(value, 10, result);
- return result;
- }
- inline std::string NumberFormatter::format(UInt64 value, int width)
- {
- std::string result;
- uIntToStr(value, 10, result, false, width, ' ');
- return result;
- }
- inline std::string NumberFormatter::format0(UInt64 value, int width)
- {
- std::string result;
- uIntToStr(value, 10, result, false, width, '0');
- return result;
- }
- inline std::string NumberFormatter::formatHex(UInt64 value, bool prefix)
- {
- std::string result;
- uIntToStr(value, 0x10, result, prefix);
- return result;
- }
- inline std::string NumberFormatter::formatHex(UInt64 value, int width, bool prefix)
- {
- std::string result;
- uIntToStr(value, 0x10, result, prefix, width, '0');
- return result;
- }
- #endif // ifdef POCO_LONG_IS_64_BIT
- #endif // ifdef POCO_HAVE_INT64
- inline std::string NumberFormatter::format(float value)
- {
- char buffer[POCO_MAX_FLT_STRING_LEN];
- floatToStr(buffer, POCO_MAX_FLT_STRING_LEN, value);
- return std::string(buffer);
- }
- inline std::string NumberFormatter::format(float value, int precision)
- {
- char buffer[POCO_MAX_FLT_STRING_LEN];
- floatToFixedStr(buffer, POCO_MAX_FLT_STRING_LEN, value, precision);
- return std::string(buffer);
- }
- inline std::string NumberFormatter::format(float value, int width, int precision)
- {
- std::string result;
- floatToFixedStr(result, value, precision, width);
- return result;
- }
- inline std::string NumberFormatter::format(double value)
- {
- char buffer[POCO_MAX_FLT_STRING_LEN];
- doubleToStr(buffer, POCO_MAX_FLT_STRING_LEN, value);
- return std::string(buffer);
- }
- inline std::string NumberFormatter::format(double value, int precision)
- {
- char buffer[POCO_MAX_FLT_STRING_LEN];
- doubleToFixedStr(buffer, POCO_MAX_FLT_STRING_LEN, value, precision);
- return std::string(buffer);
- }
- inline std::string NumberFormatter::format(double value, int width, int precision)
- {
- std::string result;
- doubleToFixedStr(result, value, precision, width);
- return result;
- }
- inline std::string NumberFormatter::format(const void* ptr)
- {
- std::string result;
- append(result, ptr);
- return result;
- }
- } // namespace Poco
- #endif // Foundation_NumberFormatter_INCLUDED
|