Changeset 54800


Ignore:
Timestamp:
Jul 8, 2009, 6:28:42 PM (9 years ago)
Author:
Hartmut Kaiser
Message:

Spirit: fixing Karma output_iterator and tweaks to numeric utils

Location:
trunk/boost/spirit/home/karma
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/boost/spirit/home/karma/detail/output_iterator.hpp

    r54796 r54800  
    298298        output_iterator operator++(int)
    299299        {
    300             output_iterator t(*this);
    301             ++sink;
    302             return t;
     300            if (NULL == buffer) {
     301                output_iterator t(*this);
     302                ++sink;
     303                return t;
     304            }
     305            return *this;
    303306        }
    304307
  • trunk/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp

    r52770 r54800  
    363363                return static_cast<long>(n % Radix);
    364364            }
    365            
     365
    366366            template <typename T>
    367367            static long call(T n, mpl::false_)
     
    371371                return cast_to_long::call(fmod(n, T(Radix)));
    372372            }
    373            
     373
    374374            template <typename T>
    375375            static long call(T n)
     
    486486            else
    487487                *sink = ' ';
    488                
     488
    489489            ++sink;
    490490            return true;
     
    630630            if (fractional_part >= precexp)
    631631            {
    632                 fractional_part -= precexp;
     632                fractional_part = floor(fractional_part - precexp);
    633633                integer_part += 1;    // handle rounding overflow
    634634            }
     
    637637        // fractional part
    638638            U long_int_part = floor(integer_part);
    639             U long_frac_part = floor(fractional_part);
     639            U long_frac_part = fractional_part;
    640640            unsigned prec = precision;
    641641            if (!p.trailing_zeros(n))
    642642            {
     643                U frac_part_floor = long_frac_part;
    643644                if (0 != long_frac_part) {
    644645                    // remove the trailing zeros
     
    658659                if (precision != prec)
    659660                {
    660                     long_frac_part = floor(fractional_part) /
     661                    long_frac_part = frac_part_floor /
    661662                        spirit::detail::pow10<U>(precision-prec);
    662663                }
Note: See TracChangeset for help on using the changeset viewer.