Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/fstream.cfa

    r58b6d1b r200fcb3  
    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 : Wed Dec 12 08:34:28 2018
     13// Update Count     : 298
    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 nonlManip, const char * separator, const char * tupleSeparator ) {
    3029        os.file = file;
    3130        os.sepDefault = sepDefault;
    3231        os.sepOnOff = sepOnOff;
     32        os.nlOnOff = nlOnOff;
     33        os.nonlManip = nonlManip;
    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 getNonl( ofstream & os ) { return os.nonlManip; }
     49void setNonl( ofstream & os, bool state ) { os.nonlManip = 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
     
    145154} // fmt
    146155
    147 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, " ", ", " };
     156static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, true, false, " ", ", " };
    148157ofstream & sout = soutFile;
    149 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, " ", ", " };
     158static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, true, false, " ", ", " };
    150159ofstream & serr = serrFile;
    151160
     
    178187void open( ifstream & is, const char * name, const char * mode ) {
    179188        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
     189        #ifdef __CFA_DEBUG__
     190        if ( file == 0 ) {
     191                fprintf( stderr, IO_MSG "open input file \"%s\", ", name );
     192                perror( 0 );
     193                exit( EXIT_FAILURE );
     194        } // if
     195        #endif // __CFA_DEBUG__
    185196        is.file = file;
    186197} // open
Note: See TracChangeset for help on using the changeset viewer.