Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/iostream.c

    re1780a2 r53a6c2a  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug  9 16:46:51 2017
    13 // Update Count     : 401
     12// Last Modified On : Thu Jul  6 18:14:17 2017
     13// Update Count     : 396
    1414//
    1515
     
    125125forall( dtype ostype | ostream( ostype ) )
    126126ostype * ?|?( ostype * os, float _Complex fc ) {
    127         if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
    128         fmt( os, "%g%+gi", crealf( fc ), cimagf( fc ) );
     127        os | crealf( fc );
     128        _Bool temp = sepDisable( os );                                          // disable separators within complex value
     129        if ( cimagf( fc ) >= 0 ) os | '+';                                      // negative value prints '-'
     130        os | cimagf( fc ) | 'i';
     131        sepReset( os, temp );                                                           // reset separator
    129132        return os;
    130133} // ?|?
     
    132135forall( dtype ostype | ostream( ostype ) )
    133136ostype * ?|?( ostype * os, double _Complex dc ) {
    134         if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
    135         fmt( os, "%.*lg%+.*lgi", DBL_DIG, creal( dc ), DBL_DIG, cimag( dc ) );
     137        os | creal( dc );
     138        _Bool temp = sepDisable( os );                                          // disable separators within complex value
     139        if ( cimag( dc ) >= 0 ) os | '+';                                       // negative value prints '-'
     140        os | cimag( dc ) | 'i';
     141        sepReset( os, temp );                                                           // reset separator
    136142        return os;
    137143} // ?|?
     
    139145forall( dtype ostype | ostream( ostype ) )
    140146ostype * ?|?( ostype * os, long double _Complex ldc ) {
    141         if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
    142         fmt( os, "%.*Lg%+.*Lgi", LDBL_DIG, creall( ldc ), LDBL_DIG, cimagl( ldc ) );
     147        os | creall( ldc );
     148        _Bool temp = sepDisable( os );                                          // disable separators within complex value
     149        if ( cimagl( ldc ) >= 0 ) os | '+';                                     // negative value prints '-'
     150        os | cimagl( ldc ) | 'i';
     151        sepReset( os, temp );                                                           // reset separator
    143152        return os;
    144153} // ?|?
     
    193202
    194203// tuples
    195 forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype * ?|?( ostype *, Params ); } )
     204forall( dtype ostype, otype T, ttype Params | ostream( ostype ) | writeable( T ) | { ostype * ?|?( ostype *, Params ); } )
    196205ostype * ?|?( ostype * os, T arg, Params rest ) {
    197206        os | arg;                                                                                       // print first argument
     
    256265//---------------------------------------
    257266
    258 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
    259 void write( iterator_type begin, iterator_type end, ostype * os ) {
    260         void print( elt_type i ) { os | i; }
     267forall( otype elttype | writeable( elttype ), otype iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) )
     268void write( iteratortype begin, iteratortype end, ostype * os ) {
     269        void print( elttype i ) { os | i; }
    261270        for_each( begin, end, print );
    262271} // ?|?
    263272
    264 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
    265 void write_reverse( iterator_type begin, iterator_type end, ostype * os ) {
    266         void print( elt_type i ) { os | i; }
     273forall( otype elttype | writeable( elttype ), otype iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) )
     274void write_reverse( iteratortype begin, iteratortype end, ostype * os ) {
     275        void print( elttype i ) { os | i; }
    267276        for_each_reverse( begin, end, print );
    268277} // ?|?
Note: See TracChangeset for help on using the changeset viewer.