Changeset 0f9e4403 for src/libcfa/iostream
- Timestamp:
- Apr 15, 2016, 12:03:11 PM (10 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 29ad0ac
- Parents:
- c5833e8 (diff), 37f0da8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/iostream
rc5833e8 r0f9e4403 7 7 // iostream -- 8 8 // 9 // Author : Richard C. Bilson9 // Author : Peter A. Buhr 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 14:04:24201613 // Update Count : 3212 // Last Modified On : Sun Apr 10 23:00:12 2016 13 // Update Count : 92 14 14 // 15 15 16 #ifndef IOSTREAM_H17 #define IOSTREAM_H16 #ifndef __IOSTREAM_H__ 17 #define __IOSTREAM_H__ 18 18 19 19 #include "iterator" 20 20 21 typedef unsigned long streamsize_type; 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 22 31 23 context ostream( dtype ostype ) {24 32 int fail( ostype * ); 25 33 int flush( ostype * ); 26 ostype * write( ostype *, const char *, streamsize_type ); 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[], ... ); 27 38 }; 28 context writeable( type T ) { 39 40 trait writeable( otype T ) { 29 41 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T ); 30 42 }; … … 33 45 34 46 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 ); 35 50 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, int ); 36 51 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned int ); … … 39 54 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long int ); 40 55 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long long int ); 56 41 57 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float ); // FIX ME: should not be required 42 58 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double ); 43 59 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double ); 60 44 61 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float _Complex ); 45 62 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double _Complex ); 46 63 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double _Complex ); 64 47 65 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const char * ); 48 66 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const void * ); 49 67 50 forall( dtype ostype , dtype retostype | ostream( ostype ) | ostream( retostype ) ) retostype * ?|?( ostype *os, retostype * (* manip)(ostype*) );68 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, ostype * (*)( ostype * ) ); 51 69 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 * ); 52 74 53 75 // writes the range [begin, end) to the given stream 54 forall( type elt_type | writeable( elt_type ),type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )76 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) ) 55 77 void write( iterator_type begin, iterator_type end, os_type *os ); 56 78 57 forall( type elt_type | writeable( elt_type ),type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )79 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) ) 58 80 void write_reverse( iterator_type begin, iterator_type end, os_type *os ); 59 81 60 82 //--------------------------------------- 61 83 62 context istream( dtype istype ) {84 trait istream( dtype istype ) { 63 85 int fail( istype * ); 64 86 int eof( istype * ); 65 istype * get( istype *, int * ); 66 istype * read( istype *, char *, streamsize_type ); 87 void open( istype * is, const char * name, const char * mode ); 88 void close( istype * is ); 89 istype * read( istype *, char *, unsigned long int ); 67 90 istype * ungetc( istype *, char ); 91 int scanfmt( istype *, const char fmt[], ... ); 68 92 }; 69 93 70 context readable(type T ) {94 trait readable( otype T ) { 71 95 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T ); 72 96 }; 73 97 74 forall( dtype istype | istream( istype ) ) 75 istype * ?|?( istype *, char * ); 98 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * ); 76 99 77 forall( dtype istype | istream( istype ) ) 78 istype * ?|?( istype *, int * ); 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 * ); 79 108 80 #endif // IOSTREAM_H 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__ 81 126 82 127 // Local Variables: //
Note:
See TracChangeset
for help on using the changeset viewer.