Use nl_langinfo to determine the numeric thousands separator
This commit is contained in:
parent
6ff2fb0b32
commit
0146ae9d99
|
@ -1,3 +1,7 @@
|
||||||
|
2016-05-24 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* Use nl_langinfo to determine the numeric thousands separator
|
||||||
|
for Fstring::setFormatedNumber as default parameter
|
||||||
|
|
||||||
2016-05-22 Markus Gans <guru.mail@muenster.de>
|
2016-05-22 Markus Gans <guru.mail@muenster.de>
|
||||||
* Fix for menus in modal dialogs
|
* Fix for menus in modal dialogs
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
// class FString
|
// class FString
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
// constructors and destructor
|
// constructors and destructor
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
FString::FString()
|
FString::FString()
|
||||||
|
@ -1402,6 +1401,9 @@ FString& FString::setFormatedNumber (long num, char separator)
|
||||||
n = 0;
|
n = 0;
|
||||||
s = &buf[29];
|
s = &buf[29];
|
||||||
|
|
||||||
|
if ( separator == 0 )
|
||||||
|
separator = ' ';
|
||||||
|
|
||||||
if ( num < 0 )
|
if ( num < 0 )
|
||||||
{
|
{
|
||||||
neg = true;
|
neg = true;
|
||||||
|
@ -1437,6 +1439,9 @@ FString& FString::setFormatedNumber (uLong num, char separator)
|
||||||
s = &buf[29];
|
s = &buf[29];
|
||||||
*s = L'\0';
|
*s = L'\0';
|
||||||
|
|
||||||
|
if ( separator == 0 )
|
||||||
|
separator = ' ';
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
*--s = wchar_t(int(num%10) + '0');
|
*--s = wchar_t(int(num%10) + '0');
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <langinfo.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -162,12 +163,12 @@ class FString
|
||||||
FString& setNumber (double, int = 11);
|
FString& setNumber (double, int = 11);
|
||||||
FString& setNumber (lDouble, int = 11);
|
FString& setNumber (lDouble, int = 11);
|
||||||
|
|
||||||
FString& setFormatedNumber (sInt16, char = '.');
|
FString& setFormatedNumber (sInt16, char = nl_langinfo(THOUSEP)[0]);
|
||||||
FString& setFormatedNumber (uInt16, char = '.');
|
FString& setFormatedNumber (uInt16, char = nl_langinfo(THOUSEP)[0]);
|
||||||
FString& setFormatedNumber (int, char = '.');
|
FString& setFormatedNumber (int, char = nl_langinfo(THOUSEP)[0]);
|
||||||
FString& setFormatedNumber (uInt, char = '.');
|
FString& setFormatedNumber (uInt, char = nl_langinfo(THOUSEP)[0]);
|
||||||
FString& setFormatedNumber (long, char = '.');
|
FString& setFormatedNumber (long, char = nl_langinfo(THOUSEP)[0]);
|
||||||
FString& setFormatedNumber (uLong, char = '.');
|
FString& setFormatedNumber (uLong, char = nl_langinfo(THOUSEP)[0]);
|
||||||
|
|
||||||
friend std::ostream& operator << (std::ostream& outstr, const FString& s);
|
friend std::ostream& operator << (std::ostream& outstr, const FString& s);
|
||||||
friend std::istream& operator >> (std::istream& instr, FString& s);
|
friend std::istream& operator >> (std::istream& instr, FString& s);
|
||||||
|
|
|
@ -1501,6 +1501,8 @@ void FTerm::init_termcaps()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FTerm::init_encoding()
|
void FTerm::init_encoding()
|
||||||
{
|
{
|
||||||
|
// detect encoding and set the Fputchar function pointer
|
||||||
|
|
||||||
if ( isatty(stdout_no) && ! strcmp(nl_langinfo(CODESET), "UTF-8") )
|
if ( isatty(stdout_no) && ! strcmp(nl_langinfo(CODESET), "UTF-8") )
|
||||||
{
|
{
|
||||||
utf8_console = true;
|
utf8_console = true;
|
||||||
|
@ -1726,8 +1728,9 @@ void FTerm::init()
|
||||||
init_termcaps();
|
init_termcaps();
|
||||||
init_alt_charset();
|
init_alt_charset();
|
||||||
|
|
||||||
// set the Fputchar function pointer
|
// init current locale
|
||||||
locale_name = setlocale(LC_ALL, ""); // init current locale
|
locale_name = setlocale(LC_ALL, "");
|
||||||
|
locale_name = setlocale(LC_NUMERIC, "");
|
||||||
|
|
||||||
// get XTERM_LOCALE
|
// get XTERM_LOCALE
|
||||||
locale_xterm = getenv("XTERM_LOCALE");
|
locale_xterm = getenv("XTERM_LOCALE");
|
||||||
|
|
|
@ -174,6 +174,7 @@ int main (int, char**)
|
||||||
std::cout << " setNumber: "
|
std::cout << " setNumber: "
|
||||||
<< num3 << " (long double)" << std::endl;
|
<< num3 << " (long double)" << std::endl;
|
||||||
|
|
||||||
|
setlocale (LC_NUMERIC, "");
|
||||||
FString fnum1, fnum2;
|
FString fnum1, fnum2;
|
||||||
#if defined(__LP64__) || defined(_LP64)
|
#if defined(__LP64__) || defined(_LP64)
|
||||||
// 64-bit architecture
|
// 64-bit architecture
|
||||||
|
|
Loading…
Reference in New Issue