Changes in src/libcfa/iostream [3849857:6ba0659]
- File:
-
- 1 edited
-
src/libcfa/iostream (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/iostream
r3849857 r6ba0659 7 7 // iostream -- 8 8 // 9 // Author : Peter A. Buhr9 // Author : Richard C. Bilson 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Apr 10 23:00:12201613 // Update Count : 9212 // Last Modified On : Wed Feb 17 14:04:24 2016 13 // Update Count : 32 14 14 // 15 15 16 #ifndef __IOSTREAM_H__17 #define __IOSTREAM_H__16 #ifndef IOSTREAM_H 17 #define IOSTREAM_H 18 18 19 19 #include "iterator" 20 20 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 21 typedef unsigned long streamsize_type; 31 22 23 context ostream( dtype ostype ) { 32 24 int fail( ostype * ); 33 25 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 ); 38 27 }; 39 40 trait writeable( otype T ) { 28 context writeable( type T ) { 41 29 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T ); 42 30 }; … … 45 33 46 34 forall( 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 );50 35 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, int ); 51 36 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned int ); … … 54 39 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long int ); 55 40 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long long int ); 56 57 41 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float ); // FIX ME: should not be required 58 42 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double ); 59 43 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double ); 60 61 44 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float _Complex ); 62 45 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double _Complex ); 63 46 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double _Complex ); 64 65 47 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const char * ); 66 48 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const void * ); 67 49 68 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, ostype * (*)( ostype *) );50 forall( dtype ostype, dtype retostype | ostream( ostype ) | ostream( retostype ) ) retostype * ?|?( ostype *os, retostype * (* manip)(ostype*) ); 69 51 forall( 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 * );74 52 75 53 // 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 ) )54 forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) ) 77 55 void write( iterator_type begin, iterator_type end, os_type *os ); 78 56 79 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )57 forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) ) 80 58 void write_reverse( iterator_type begin, iterator_type end, os_type *os ); 81 59 82 60 //--------------------------------------- 83 61 84 trait istream( dtype istype ) {62 context istream( dtype istype ) { 85 63 int fail( istype * ); 86 64 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 ); 90 67 istype * ungetc( istype *, char ); 91 int scanfmt( istype *, const char fmt[], ... );92 68 }; 93 69 94 trait readable( otype T ) {70 context readable( type T ) { 95 71 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T ); 96 72 }; 97 73 98 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * ); 74 forall( dtype istype | istream( istype ) ) 75 istype * ?|?( istype *, char * ); 99 76 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 * ); 77 forall( dtype istype | istream( istype ) ) 78 istype * ?|?( istype *, int * ); 108 79 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 126 81 127 82 // Local Variables: //
Note:
See TracChangeset
for help on using the changeset viewer.