Ignore:
Timestamp:
Jul 7, 2017, 10:39:08 AM (5 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
29038ef
Parents:
52a9004
Message:

change meaning of sepOn, and replace #if with #pragma once in include files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/iostream.c

    r52a9004 r53a6c2a  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jul  2 08:54:02 2017
    13 // Update Count     : 375
     12// Last Modified On : Thu Jul  6 18:14:17 2017
     13// Update Count     : 396
    1414//
    1515
     
    1818extern "C" {
    1919#include <stdio.h>
     20#include <stdbool.h>                                                                    // true/false
    2021#include <string.h>                                                                             // strlen
    2122#include <float.h>                                                                              // DBL_DIG, LDBL_DIG
     
    2425
    2526forall( dtype ostype | ostream( ostype ) )
    26 ostype * ?|?( ostype * os, char c ) {
    27         fmt( os, "%c", c );
     27ostype * ?|?( ostype * os, char ch ) {
     28        fmt( os, "%c", ch );
     29        if ( ch == '\n' ) setNL( os, true );
    2830        sepOff( os );
    2931        return os;
     
    180182
    181183        // last character IS spacing or opening punctuation => turn off separator for next item
    182         unsigned int len = strlen( cp ), posn = len - 1;
    183         ch = cp[posn];                                                                          // must make unsigned
     184        size_t len = strlen( cp );
     185        ch = cp[len - 1];                                                                       // must make unsigned
    184186        if ( sepPrt( os ) && mask[ ch ] != Open && mask[ ch ] != OpenClose ) {
    185187                sepOn( os );
     
    187189                sepOff( os );
    188190        } // if
     191        if ( ch == '\n' ) setNL( os, true );                            // check *AFTER* sepPrt call above as it resets NL flag
    189192        return write( os, cp, len );
    190193} // ?|?
     
    216219
    217220forall( dtype ostype | ostream( ostype ) )
     221ostype * sep( ostype * os ) {
     222        os | sepGet( os );
     223        return os;
     224} // sep
     225
     226forall( dtype ostype | ostream( ostype ) )
     227ostype * sepTuple( ostype * os ) {
     228        os | sepGetTuple( os );
     229        return os;
     230} // sepTuple
     231
     232forall( dtype ostype | ostream( ostype ) )
    218233ostype * endl( ostype * os ) {
    219         if ( lastSepOn( os ) ) fmt( os, "%s", sepGetCur( os ) );
    220234        os | '\n';
     235        setNL( os, true );
    221236        flush( os );
    222237        sepOff( os );                                                                           // prepare for next line
Note: See TracChangeset for help on using the changeset viewer.