Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/fstream.cfa

    r58b6d1b r9d362a0  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun  5 17:02:56 2018
    13 // Update Count     : 281
     12// Last Modified On : Mon Dec 24 18:33:38 2018
     13// Update Count     : 304
    1414//
    1515
     
    2020#include <stdarg.h>                                                                             // varargs
    2121#include <string.h>                                                                             // strlen
    22 #include <stdbool.h>                                                                    // true/false
    2322#include <float.h>                                                                              // DBL_DIG, LDBL_DIG
    2423#include <complex.h>                                                                    // creal, cimag
     
    2726#define IO_MSG "I/O error: "
    2827
    29 void ?{}( ofstream & os, void * file, _Bool sepDefault, _Bool sepOnOff, const char * separator, const char * tupleSeparator ) {
     28void ?{}( ofstream & os, void * file, bool sepDefault, bool sepOnOff, bool nlOnOff, bool prt, const char * separator, const char * tupleSeparator ) {
    3029        os.file = file;
    3130        os.sepDefault = sepDefault;
    3231        os.sepOnOff = sepOnOff;
     32        os.nlOnOff = nlOnOff;
     33        os.prt = prt;
    3334        sepSet( os, separator );
    3435        sepSetCur( os, sepGet( os ) );
     
    3738
    3839// private
    39 _Bool sepPrt( ofstream & os ) { setNL( os, false ); return os.sepOnOff; }
     40bool sepPrt( ofstream & os ) { setNL( os, false ); return os.sepOnOff; }
    4041void sepReset( ofstream & os ) { os.sepOnOff = os.sepDefault; }
    41 void sepReset( ofstream & os, _Bool reset ) { os.sepDefault = reset; os.sepOnOff = os.sepDefault; }
     42void sepReset( ofstream & os, bool reset ) { os.sepDefault = reset; os.sepOnOff = os.sepDefault; }
    4243const char * sepGetCur( ofstream & os ) { return os.sepCur; }
    4344void sepSetCur( ofstream & os, const char * sepCur ) { os.sepCur = sepCur; }
    44 _Bool getNL( ofstream & os ) { return os.sawNL; }
    45 void setNL( ofstream & os, _Bool state ) { os.sawNL = state; }
     45bool getNL( ofstream & os ) { return os.sawNL; }
     46void setNL( ofstream & os, bool state ) { os.sawNL = state; }
     47bool getANL( ofstream & os ) { return os.nlOnOff; }
     48bool getPrt( ofstream & os ) { return os.prt; }
     49void setPrt( ofstream & os, bool state ) { os.prt = state; }
    4650
    4751// public
     
    5862void sepOff( ofstream & os ) { os.sepOnOff = false; }
    5963
    60 _Bool sepDisable( ofstream & os ) {
    61         _Bool temp = os.sepDefault;
     64bool sepDisable( ofstream & os ) {
     65        bool temp = os.sepDefault;
    6266        os.sepDefault = false;
    6367        sepReset( os );
     
    6569} // sepDisable
    6670
    67 _Bool sepEnable( ofstream & os ) {
    68         _Bool temp = os.sepDefault;
     71bool sepEnable( ofstream & os ) {
     72        bool temp = os.sepDefault;
    6973        os.sepDefault = true;
    7074        if ( os.sepOnOff ) sepReset( os );                                      // start of line ?
    7175        return temp;
    7276} // sepEnable
     77
     78void nlOn( ofstream & os ) { os.nlOnOff = true; }
     79void nlOff( ofstream & os ) { os.nlOnOff = false; }
    7380
    7481const char * sepGet( ofstream & os ) { return os.separator; }
     
    96103void open( ofstream & os, const char * name, const char * mode ) {
    97104        FILE *file = fopen( name, mode );
    98         // if ( file == 0 ) {                                                                   // do not change unless successful
    99         //      fprintf( stderr, IO_MSG "open output file \"%s\", ", name );
    100         //      perror( 0 );
    101         //      exit( EXIT_FAILURE );
    102         // } // if
    103         (os){ file, true, false, " ", ", " };
     105        #ifdef __CFA_DEBUG__
     106        if ( file == 0 ) {
     107                fprintf( stderr, IO_MSG "open output file \"%s\", ", name );
     108                perror( 0 );
     109                exit( EXIT_FAILURE );
     110        } // if
     111        #endif // __CFA_DEBUG__
     112        (os){ file, true, false, true, false, " ", ", " };
    104113} // open
    105114
     
    141150        va_end( args );
    142151
     152        setPrt( os, true );                                                                     // called in output cascade
    143153        sepReset( os );                                                                         // reset separator
    144154        return len;
    145155} // fmt
    146156
    147 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, " ", ", " };
     157static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, true, false, " ", ", " };
    148158ofstream & sout = soutFile;
    149 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, " ", ", " };
     159static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, true, false, " ", ", " };
    150160ofstream & serr = serrFile;
    151161
     
    178188void open( ifstream & is, const char * name, const char * mode ) {
    179189        FILE *file = fopen( name, mode );
    180         // if ( file == 0 ) {                                                                   // do not change unless successful
    181         //      fprintf( stderr, IO_MSG "open input file \"%s\", ", name );
    182         //      perror( 0 );
    183         //      exit( EXIT_FAILURE );
    184         // } // if
     190        #ifdef __CFA_DEBUG__
     191        if ( file == 0 ) {
     192                fprintf( stderr, IO_MSG "open input file \"%s\", ", name );
     193                perror( 0 );
     194                exit( EXIT_FAILURE );
     195        } // if
     196        #endif // __CFA_DEBUG__
    185197        is.file = file;
    186198} // open
Note: See TracChangeset for help on using the changeset viewer.