# HG changeset patch # User jwe # Date 1015543712 0 # Node ID faeca8a063aeff59a75cbbc65c7d33404772a1ee # Parent 55648fc616c853eef235bb6b5174f988deb82b72 [project @ 2002-03-07 23:28:32 by jwe] diff --git a/src/oct-stream.cc b/src/oct-stream.cc --- a/src/oct-stream.cc +++ b/src/oct-stream.cc @@ -1133,8 +1133,8 @@ } template void -do_scanf_conv (std::istream&, const scanf_format_elt&, int*, Matrix&, - double*, int&, int&, int, int, bool); +do_scanf_conv (std::istream&, const scanf_format_elt&, int*, + Matrix&, double*, int&, int&, int, int, bool); template void do_scanf_conv (std::istream&, const scanf_format_elt&, long int*, @@ -1144,6 +1144,18 @@ do_scanf_conv (std::istream&, const scanf_format_elt&, short int*, Matrix&, double*, int&, int&, int, int, bool); +template void +do_scanf_conv (std::istream&, const scanf_format_elt&, unsigned int*, + Matrix&, double*, int&, int&, int, int, bool); + +template void +do_scanf_conv (std::istream&, const scanf_format_elt&, unsigned long int*, + Matrix&, double*, int&, int&, int, int, bool); + +template void +do_scanf_conv (std::istream&, const scanf_format_elt&, unsigned short int*, + Matrix&, double*, int&, int&, int, int, bool); + #if 0 template void do_scanf_conv (std::istream&, const scanf_format_elt&, float*, @@ -1481,7 +1493,7 @@ DO_PCT_CONVERSION (); break; - case 'd': case 'i': case 'o': case 'u': case 'x': + case 'd': case 'i': { switch (elt->modifier) { @@ -1515,6 +1527,40 @@ } break; + case 'o': case 'u': case 'x': + { + switch (elt->modifier) + { + case 'h': + { + unsigned short int tmp; + do_scanf_conv (is, *elt, &tmp, mval, data, + data_index, conversion_count, + nr, max_size, discard); + } + break; + + case 'l': + { + unsigned long int tmp; + do_scanf_conv (is, *elt, &tmp, mval, data, + data_index, conversion_count, + nr, max_size, discard); + } + break; + + default: + { + unsigned int tmp; + do_scanf_conv (is, *elt, &tmp, mval, data, + data_index, conversion_count, + nr, max_size, discard); + } + break; + } + } + break; + case 'e': case 'f': case 'g': { double tmp; @@ -1723,7 +1769,7 @@ } break; - case 'd': case 'i': case 'o': case 'u': case 'x': + case 'd': case 'i': { int tmp; @@ -1737,6 +1783,20 @@ } break; + case 'o': case 'u': case 'x': + { + long int tmp; + + if (OCTAVE_SCAN (is, *elt, &tmp)) + { + if (! discard) + retval = static_cast (tmp); + } + else + quit = true; + } + break; + case 'e': case 'f': case 'g': { double tmp; @@ -2161,6 +2221,12 @@ template int do_printf_conv (std::ostream&, const char*, int, int, int, long); +template int +do_printf_conv (std::ostream&, const char*, int, int, int, unsigned int); + +template int +do_printf_conv (std::ostream&, const char*, int, int, int, unsigned long); + template int do_printf_conv (std::ostream&, const char*, int, int, int, double); @@ -2244,17 +2310,29 @@ { switch (elt->type) { - case 'd': case 'i': case 'o': case 'x': - case 'X': case 'u': case 'c': + case 'd': case 'i': case 'c': { if (elt->modifier == 'l') - retval - += do_printf_conv (os, fmt, nsa, sa_1, sa_2, - static_cast (val)); + retval += do_printf_conv + (os, fmt, nsa, sa_1, sa_2, + static_cast (val)); else - retval - += do_printf_conv (os, fmt, nsa, sa_1, sa_2, - static_cast (val)); + retval += do_printf_conv + (os, fmt, nsa, sa_1, sa_2, + static_cast (val)); + } + break; + + case 'o': case 'x': case 'X': case 'u': + { + if (elt->modifier == 'l') + retval += do_printf_conv + (os, fmt, nsa, sa_1, sa_2, + static_cast (val)); + else + retval += do_printf_conv + (os, fmt, nsa, sa_1, sa_2, + static_cast (val)); } break;