Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/iostream

    r3849857 r6ba0659  
    77// iostream --
    88//
    9 // Author           : Peter A. Buhr
     9// Author           : Richard C. Bilson
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Apr 10 23:00:12 2016
    13 // Update Count     : 92
     12// Last Modified On : Wed Feb 17 14:04:24 2016
     13// Update Count     : 32
    1414//
    1515
    16 #ifndef __IOSTREAM_H__
    17 #define __IOSTREAM_H__
     16#ifndef IOSTREAM_H
     17#define IOSTREAM_H
    1818
    1919#include "iterator"
    2020
    21 trait ostream( dtype ostype ) {
    22         _Bool sepPrt( ostype * );                                                       // return separator state (on/off)
    23         void sepOn( ostype * );                                                         // turn separator state on
    24         void sepOff( ostype * );                                                        // turn separator state off
    25         void sepReset( ostype * );                                                      // set separator state to default state
    26         void sepReset( ostype *, _Bool );                                       // set separator and default state
    27         void sepSet( ostype *, const char * );                          // set separator to string (15 character maximum)
    28         const char * sepGet( ostype * );                                        // get separator string
    29         _Bool sepDisable( ostype * );                                           // set default state to off, and return previous state
    30         _Bool sepEnable( ostype * );                                            // set default state to on, and return previous state
     21typedef unsigned long streamsize_type;
    3122
     23context ostream( dtype ostype ) {
    3224        int fail( ostype * );
    3325        int flush( ostype * );
    34         void open( ostype * os, const char * name, const char * mode );
    35         void close( ostype * os );
    36         ostype * write( ostype *, const char *, unsigned long int );
    37         int prtfmt( ostype *, const char fmt[], ... );
     26        ostype * write( ostype *, const char *, streamsize_type );
    3827};
    39 
    40 trait writeable( otype T ) {
     28context writeable( type T ) {
    4129        forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T );
    4230};
     
    4533
    4634forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, char );
    47 
    48 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, short int );
    49 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned short int );
    5035forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, int );
    5136forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned int );
     
    5439forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long int );
    5540forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long long int );
    56 
    5741forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float ); // FIX ME: should not be required
    5842forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double );
    5943forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double );
    60 
    6144forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float _Complex );
    6245forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double _Complex );
    6346forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double _Complex );
    64 
    6547forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const char * );
    6648forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const void * );
    6749
    68 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, ostype * (*)( ostype * ) );
     50forall( dtype ostype, dtype retostype | ostream( ostype ) | ostream( retostype ) ) retostype * ?|?( ostype *os, retostype * (* manip)(ostype*) );
    6951forall( dtype ostype | ostream( ostype ) ) ostype * endl( ostype * );
    70 forall( dtype ostype | ostream( ostype ) ) ostype * sepOn( ostype * );
    71 forall( dtype ostype | ostream( ostype ) ) ostype * sepOff( ostype * );
    72 forall( dtype ostype | ostream( ostype ) ) ostype * sepDisable( ostype * );
    73 forall( dtype ostype | ostream( ostype ) ) ostype * sepEnable( ostype * );
    7452
    7553// writes the range [begin, end) to the given stream
    76 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )
     54forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )
    7755void write( iterator_type begin, iterator_type end, os_type *os );
    7856
    79 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )
     57forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )
    8058void write_reverse( iterator_type begin, iterator_type end, os_type *os );
    8159
    8260//---------------------------------------
    8361
    84 trait istream( dtype istype ) {
     62context istream( dtype istype ) {
    8563        int fail( istype * );
    8664        int eof( istype * );
    87         void open( istype * is, const char * name, const char * mode );
    88         void close( istype * is );
    89         istype * read( istype *, char *, unsigned long int );
     65        istype * get( istype *, int * );
     66        istype * read( istype *, char *, streamsize_type );
    9067        istype * ungetc( istype *, char );
    91         int scanfmt( istype *, const char fmt[], ... );
    9268};
    9369
    94 trait readable( otype T ) {
     70context readable( type T ) {
    9571        forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T );
    9672};
    9773
    98 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * );
     74forall( dtype istype | istream( istype ) )
     75istype * ?|?( istype *, char * );
    9976
    100 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, short int * );
    101 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned short int * );
    102 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, int * );
    103 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned int * );
    104 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long int * );
    105 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long long int * );
    106 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long int * );
    107 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long long int * );
     77forall( dtype istype | istream( istype ) )
     78istype * ?|?( istype *, int * );
    10879
    109 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float * );
    110 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double * );
    111 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double * );
    112 
    113 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float _Complex * );
    114 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double _Complex * );
    115 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double _Complex * );
    116 
    117 struct _Istream_cstrUC { char * s; };
    118 _Istream_cstrUC cstr( char * );
    119 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, _Istream_cstrUC );
    120 
    121 struct _Istream_cstrC { char * s; int size; };
    122 _Istream_cstrC cstr( char *, int size );
    123 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, _Istream_cstrC );
    124 
    125 #endif // __IOSTREAM_H__
     80#endif // IOSTREAM_H
    12681
    12782// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.