source: packages/libs/uclibc++/patches/008-integer_width.patch @ 11522

Last change on this file since 11522 was 11522, checked in by nix, 8 years ago

Add "integer width" and "numeric limits" support to uclibc++ for ptlib.
See bug #3555.

File size: 11.1 KB
  • uClibc++-0.2.2/include/ostream

     
    129129                        return *this; 
    130130                } 
    131131 
     132                _UCXXEXPORT void printout(const char_type* s, streamsize n) 
     133                { 
     134                  int extra = ios::width() - n; 
     135                  if ((ios::flags()&ios::adjustfield) == ios::right) 
     136                    while (extra-- > 0) 
     137                      put(ios::fill()); 
     138                  write(s, n); 
     139                  if ((ios::flags()&ios::adjustfield) == ios::left) 
     140                    while (extra-- > 0) 
     141                      put(ios::fill()); 
     142                } 
     143 
    132144        protected: 
    133145                basic_ostream(const basic_ostream<charT,traits> &){ } 
    134146                basic_ostream<charT,traits> & operator=(const basic_ostream<charT,traits> &){ return *this; } 
     
    142154                sentry s(*this); 
    143155                if( basic_ios<charT,traits>::flags() & ios_base::boolalpha){ 
    144156                        if(n){ 
    145                                 write("true", 4); 
     157                                printout("true", 4); 
    146158                        }else{ 
    147                                 write("false", 5); 
     159                                printout("false", 5); 
    148160                        } 
    149161                }else{ 
    150162                        if(n){ 
    151                                 write("1", 1); 
     163                                printout("1", 1); 
    152164                        }else{ 
    153                                 write("0", 1); 
     165                                printout("0", 1); 
    154166                        } 
    155167                } 
    156168                if(basic_ios<charT,traits>::flags() & ios_base::unitbuf){ 
     
    219231        template <class charT, class traits> _UCXXEXPORT basic_ostream<charT,traits>& basic_ostream<charT, traits>::operator<<(void* p){ 
    220232                sentry s(*this); 
    221233                char buffer[20]; 
    222                 write(buffer, snprintf(buffer, 20, "%p", p) ); 
     234                printout(buffer, snprintf(buffer, 20, "%p", p) ); 
    223235                if(basic_ios<charT,traits>::flags() & ios_base::unitbuf){ 
    224236                        flush(); 
    225237                } 
     
    356368                operator<<(basic_ostream<charT,traits>& out, const charT* c) 
    357369        { 
    358370                typename basic_ostream<charT,traits>::sentry s(out); 
    359                 out.write(c, traits::length(c) ); 
     371                out.printout(c, traits::length(c) ); 
    360372                return out; 
    361373        } 
    362374         
     
    364376                operator<<(basic_ostream<charT,traits>& out, const char* c) 
    365377        { 
    366378                typename basic_ostream<charT,traits>::sentry s(out); 
    367                 out.write(c, char_traits<char>::length(c) ); 
     379                out.printout(c, char_traits<char>::length(c) ); 
    368380                return out; 
    369381        } 
    370382 
     
    373385                operator<<(basic_ostream<char,traits>& out, const char* c) 
    374386        { 
    375387                typename basic_ostream<char,traits>::sentry s(out); 
    376                 out.write(c, traits::length(c)); 
     388                out.printout(c, traits::length(c)); 
    377389                return out; 
    378390        } 
    379391 
     
    389401                        temp[i] = out.widen(c[i]); 
    390402                } 
    391403 
    392                 out.write(temp, numChars); 
     404                out.printout(temp, numChars); 
    393405                return out; 
    394406        } 
    395407#endif 
     
    399411                operator<<(basic_ostream<char,traits>& out, const signed char* c) 
    400412        { 
    401413                typename basic_ostream<char,traits>::sentry s(out); 
    402                 out.write(reinterpret_cast<const char *>(c), traits::length( reinterpret_cast<const char *>(c))); 
     414                out.printout(reinterpret_cast<const char *>(c), traits::length( reinterpret_cast<const char *>(c))); 
    403415                return out; 
    404416        } 
    405417         
     
    407419                operator<<(basic_ostream<char,traits>& out, const unsigned char* c) 
    408420        { 
    409421                typename basic_ostream<char,traits>::sentry s(out); 
    410                 out.write(reinterpret_cast<const char *>(c), traits::length( reinterpret_cast<const char *>(c))); 
     422                out.printout(reinterpret_cast<const char *>(c), traits::length( reinterpret_cast<const char *>(c))); 
    411423                return out; 
    412424        } 
    413425 
  • uClibc++-0.2.2/include/ostream_helpers

     
    8888                                } 
    8989                        } 
    9090 
    91                         stream.write(buffer, snprintf(buffer, 20, formatString, n) ); 
     91                        stream.printout(buffer, snprintf(buffer, 20, formatString, n) ); 
    9292 
    9393                        if(stream.flags() & ios_base::unitbuf){ 
    9494                                stream.flush(); 
     
    135135                                } 
    136136                        } 
    137137 
    138                         stream.write(buffer, snprintf(buffer, 20, formatString, n)); 
     138                        stream.printout(buffer, snprintf(buffer, 20, formatString, n)); 
    139139                        if(stream.flags() & ios_base::unitbuf){ 
    140140                                stream.flush(); 
    141141                        } 
     
    182182                                } 
    183183                        } 
    184184 
    185                         stream.write(buffer, snprintf(buffer, 27, formatString, n) ); 
     185                        stream.printout(buffer, snprintf(buffer, 27, formatString, n) ); 
    186186 
    187187                        if(stream.flags() & ios_base::unitbuf){ 
    188188                                stream.flush(); 
     
    228228                                } 
    229229                        } 
    230230 
    231                         stream.write(buffer, snprintf(buffer, 27, formatString, n) ); 
     231                        stream.printout(buffer, snprintf(buffer, 27, formatString, n) ); 
    232232 
    233233                        if(stream.flags() & ios_base::unitbuf){ 
    234234                                stream.flush(); 
     
    256256                        } else { 
    257257                                length = snprintf(buffer, 32, "%*.*g",static_cast<int>(stream.width()),static_cast<int>(stream.precision()), f); 
    258258                        } 
    259                         stream.write(buffer, length); 
     259                        stream.printout(buffer, length); 
    260260                        if(stream.flags() & ios_base::unitbuf){ 
    261261                                stream.flush(); 
    262262                        } 
     
    280280                        } else { 
    281281                                length = snprintf(buffer, 32, "%*.*Lg", static_cast<int>(stream.width()), static_cast<int>(stream.precision()), f); 
    282282                        } 
    283                         stream.write(buffer, length); 
     283                        stream.printout(buffer, length); 
    284284                        if(stream.flags() & ios_base::unitbuf){ 
    285285                                stream.flush(); 
    286286                        } 
     
    295295                { 
    296296                        wchar_t buffer[20]; 
    297297                        if( stream.flags() & ios_base::dec){ 
    298                                 stream.write(buffer, swprintf(buffer, 20, L"%ld", n)); 
     298                                stream.printout(buffer, swprintf(buffer, 20, L"%ld", n)); 
    299299                        }else if( stream.flags() & ios_base::oct){ 
    300300                                if( stream.flags() & ios_base::showbase){ 
    301                                         stream.write(buffer, swprintf(buffer, 20, L"%#lo", n)); 
     301                                        stream.printout(buffer, swprintf(buffer, 20, L"%#lo", n)); 
    302302                                }else{ 
    303                                         stream.write(buffer, swprintf(buffer, 20, L"%lo", n) ); 
     303                                        stream.printout(buffer, swprintf(buffer, 20, L"%lo", n) ); 
    304304                                } 
    305305                        }else if (stream.flags() & ios_base::hex){ 
    306306                                if(stream.flags() & ios_base::showbase){ 
    307307                                        if(stream.flags() & ios_base::uppercase){ 
    308                                                 stream.write(buffer, swprintf(buffer, 20, L"%#lX", n) ); 
     308                                                stream.printout(buffer, swprintf(buffer, 20, L"%#lX", n) ); 
    309309                                        }else{ 
    310                                                 stream.write(buffer, swprintf(buffer, 20, L"%#lx", n) ); 
     310                                                stream.printout(buffer, swprintf(buffer, 20, L"%#lx", n) ); 
    311311                                        } 
    312312                                }else{ 
    313313                                        if(stream.flags() & ios_base::uppercase){ 
    314                                                 stream.write(buffer, swprintf(buffer, 20, L"%lX", n) ); 
     314                                                stream.printout(buffer, swprintf(buffer, 20, L"%lX", n) ); 
    315315                                        }else{ 
    316                                                 stream.write(buffer, swprintf(buffer, 20, L"%lx", n) ); 
     316                                                stream.printout(buffer, swprintf(buffer, 20, L"%lx", n) ); 
    317317                                        } 
    318318                                } 
    319319                        } 
     
    329329                { 
    330330                        wchar_t buffer[20]; 
    331331                        if( stream.flags() & ios_base::dec){ 
    332                                 stream.write(buffer, swprintf(buffer, 20, L"%lu", n)); 
     332                                stream.printout(buffer, swprintf(buffer, 20, L"%lu", n)); 
    333333                        }else if( stream.flags() & ios_base::oct){ 
    334334                                if( stream.flags() & ios_base::showbase){ 
    335                                         stream.write(buffer, swprintf(buffer, 20, L"%#lo", n)); 
     335                                        stream.printout(buffer, swprintf(buffer, 20, L"%#lo", n)); 
    336336                                }else{ 
    337                                         stream.write(buffer, swprintf(buffer, 20, L"%lo", n) ); 
     337                                        stream.printout(buffer, swprintf(buffer, 20, L"%lo", n) ); 
    338338                                } 
    339339                        }else if (stream.flags() & ios_base::hex){ 
    340340                                if(stream.flags() & ios_base::showbase){ 
    341341                                        if(stream.flags() & ios_base::uppercase){ 
    342                                                 stream.write(buffer, swprintf(buffer, 20, L"%#lX", n) ); 
     342                                                stream.printout(buffer, swprintf(buffer, 20, L"%#lX", n) ); 
    343343                                        }else{ 
    344                                                 stream.write(buffer, swprintf(buffer, 20, L"%#lx", n) ); 
     344                                                stream.printout(buffer, swprintf(buffer, 20, L"%#lx", n) ); 
    345345                                        } 
    346346                                }else{ 
    347347                                        if(stream.flags() & ios_base::uppercase){ 
    348                                                 stream.write(buffer, swprintf(buffer, 20, L"%lX", n) ); 
     348                                                stream.printout(buffer, swprintf(buffer, 20, L"%lX", n) ); 
    349349                                        }else{ 
    350                                                 stream.write(buffer, swprintf(buffer, 20, L"%lx", n) ); 
     350                                                stream.printout(buffer, swprintf(buffer, 20, L"%lx", n) ); 
    351351                                        } 
    352352                                } 
    353353                        } 
     
    365365                { 
    366366                        wchar_t buffer[28]; 
    367367                        if( stream.flags() & ios_base::dec){ 
    368                                 stream.write(buffer, swprintf(buffer, 27, L"%lld", n)); 
     368                                stream.printout(buffer, swprintf(buffer, 27, L"%lld", n)); 
    369369                        }else if( stream.flags() & ios_base::oct){ 
    370370                                if( stream.flags() & ios_base::showbase){ 
    371                                         stream.write(buffer, swprintf(buffer, 27, L"%#llo", n)); 
     371                                        stream.printout(buffer, swprintf(buffer, 27, L"%#llo", n)); 
    372372                                }else{ 
    373                                         stream.write(buffer, swprintf(buffer, 27, L"%llo", n) ); 
     373                                        stream.printout(buffer, swprintf(buffer, 27, L"%llo", n) ); 
    374374                                } 
    375375                        }else if (stream.flags() & ios_base::hex){ 
    376376                                if(stream.flags() & ios_base::showbase){ 
    377377                                        if(stream.flags() & ios_base::uppercase){ 
    378                                                 stream.write(buffer, swprintf(buffer, 27, L"%#llX", n) ); 
     378                                                stream.printout(buffer, swprintf(buffer, 27, L"%#llX", n) ); 
    379379                                        }else{ 
    380                                                 stream.write(buffer, swprintf(buffer, 27, L"%#llx", n) ); 
     380                                                stream.printout(buffer, swprintf(buffer, 27, L"%#llx", n) ); 
    381381                                        } 
    382382                                }else{ 
    383383                                        if(stream.flags() & ios_base::uppercase){ 
    384                                                 stream.write(buffer, swprintf(buffer, 27, L"%llX", n) ); 
     384                                                stream.printout(buffer, swprintf(buffer, 27, L"%llX", n) ); 
    385385                                        }else{ 
    386                                                 stream.write(buffer, swprintf(buffer, 27, L"%llx", n) ); 
     386                                                stream.printout(buffer, swprintf(buffer, 27, L"%llx", n) ); 
    387387                                        } 
    388388                                } 
    389389                        } 
     
    399399                { 
    400400                        wchar_t buffer[28]; 
    401401                        if( stream.flags() & ios_base::dec){ 
    402                                 stream.write(buffer, swprintf(buffer, 27, L"%llu", n)); 
     402                                stream.printout(buffer, swprintf(buffer, 27, L"%llu", n)); 
    403403                        }else if( stream.flags() & ios_base::oct){ 
    404404                                if( stream.flags() & ios_base::showbase){ 
    405                                         stream.write(buffer, swprintf(buffer, 27, L"%#llo", n)); 
     405                                        stream.printout(buffer, swprintf(buffer, 27, L"%#llo", n)); 
    406406                                }else{ 
    407                                         stream.write(buffer, swprintf(buffer, 27, L"%llo", n) ); 
     407                                        stream.printout(buffer, swprintf(buffer, 27, L"%llo", n) ); 
    408408                                } 
    409409                        }else if (stream.flags() & ios_base::hex){ 
    410410                                if(stream.flags() & ios_base::showbase){ 
    411411                                        if(stream.flags() & ios_base::uppercase){ 
    412                                                 stream.write(buffer, swprintf(buffer, 27, L"%#llX", n) ); 
     412                                                stream.printout(buffer, swprintf(buffer, 27, L"%#llX", n) ); 
    413413                                        }else{ 
    414                                                 stream.write(buffer, swprintf(buffer, 27, L"%#llx", n) ); 
     414                                                stream.printout(buffer, swprintf(buffer, 27, L"%#llx", n) ); 
    415415                                        } 
    416416                                }else{ 
    417417                                        if(stream.flags() & ios_base::uppercase){ 
    418                                                 stream.write(buffer, swprintf(buffer, 27, L"%llX", n) ); 
     418                                                stream.printout(buffer, swprintf(buffer, 27, L"%llX", n) ); 
    419419                                        }else{ 
    420                                                 stream.write(buffer, swprintf(buffer, 27, L"%llx", n) ); 
     420                                                stream.printout(buffer, swprintf(buffer, 27, L"%llx", n) ); 
    421421                                        } 
    422422                                } 
    423423                        } 
     
    447447                        } else { 
    448448                                swprintf(format_string, 32, L"%%%u.%ug", static_cast<int>(stream.width()), static_cast<unsigned int>(stream.precision())); 
    449449                        } 
    450                         stream.write(buffer, swprintf(buffer, 32, format_string, f) ); 
     450                        stream.printout(buffer, swprintf(buffer, 32, format_string, f) ); 
    451451                        if(stream.flags() & ios_base::unitbuf){ 
    452452                                stream.flush(); 
    453453                        } 
     
    471471                        } else { 
    472472                                swprintf(format_string, 32, L"%%%u.%uLg", static_cast<unsigned int>(stream.width()), static_cast<unsigned int>(stream.precision())); 
    473473                        } 
    474                         stream.write(buffer, swprintf(buffer, 32, format_string, f) ); 
     474                        stream.printout(buffer, swprintf(buffer, 32, format_string, f) ); 
    475475                        if(stream.flags() & ios_base::unitbuf){ 
    476476                                stream.flush(); 
    477477                        } 
Note: See TracBrowser for help on using the repository browser.