Ignore:
Timestamp:
Apr 15, 2016, 12:03:11 PM (10 years ago)
Author:
Thierry Delisle <tdelisle@…>
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.
Message:

Merge branch 'master' into gc_noraii

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/iostream

    rc5833e8 r0f9e4403  
    77// iostream --
    88//
    9 // Author           : Richard C. Bilson
     9// Author           : Peter A. Buhr
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Feb 17 14:04:24 2016
    13 // Update Count     : 32
     12// Last Modified On : Sun Apr 10 23:00:12 2016
     13// Update Count     : 92
    1414//
    1515
    16 #ifndef IOSTREAM_H
    17 #define IOSTREAM_H
     16#ifndef __IOSTREAM_H__
     17#define __IOSTREAM_H__
    1818
    1919#include "iterator"
    2020
    21 typedef unsigned long streamsize_type;
     21trait 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
    2231
    23 context ostream( dtype ostype ) {
    2432        int fail( ostype * );
    2533        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[], ... );
    2738};
    28 context writeable( type T ) {
     39
     40trait writeable( otype T ) {
    2941        forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T );
    3042};
     
    3345
    3446forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, char );
     47
     48forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, short int );
     49forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned short int );
    3550forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, int );
    3651forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned int );
     
    3954forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long int );
    4055forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long long int );
     56
    4157forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float ); // FIX ME: should not be required
    4258forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double );
    4359forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double );
     60
    4461forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float _Complex );
    4562forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double _Complex );
    4663forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double _Complex );
     64
    4765forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const char * );
    4866forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const void * );
    4967
    50 forall( dtype ostype, dtype retostype | ostream( ostype ) | ostream( retostype ) ) retostype * ?|?( ostype *os, retostype * (* manip)(ostype*) );
     68forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, ostype * (*)( ostype * ) );
    5169forall( dtype ostype | ostream( ostype ) ) ostype * endl( ostype * );
     70forall( dtype ostype | ostream( ostype ) ) ostype * sepOn( ostype * );
     71forall( dtype ostype | ostream( ostype ) ) ostype * sepOff( ostype * );
     72forall( dtype ostype | ostream( ostype ) ) ostype * sepDisable( ostype * );
     73forall( dtype ostype | ostream( ostype ) ) ostype * sepEnable( ostype * );
    5274
    5375// 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 ) )
     76forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )
    5577void write( iterator_type begin, iterator_type end, os_type *os );
    5678
    57 forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )
     79forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )
    5880void write_reverse( iterator_type begin, iterator_type end, os_type *os );
    5981
    6082//---------------------------------------
    6183
    62 context istream( dtype istype ) {
     84trait istream( dtype istype ) {
    6385        int fail( istype * );
    6486        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 );
    6790        istype * ungetc( istype *, char );
     91        int scanfmt( istype *, const char fmt[], ... );
    6892};
    6993
    70 context readable( type T ) {
     94trait readable( otype T ) {
    7195        forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T );
    7296};
    7397
    74 forall( dtype istype | istream( istype ) )
    75 istype * ?|?( istype *, char * );
     98forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * );
    7699
    77 forall( dtype istype | istream( istype ) )
    78 istype * ?|?( istype *, int * );
     100forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, short int * );
     101forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned short int * );
     102forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, int * );
     103forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned int * );
     104forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long int * );
     105forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long long int * );
     106forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long int * );
     107forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long long int * );
    79108
    80 #endif // IOSTREAM_H
     109forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float * );
     110forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double * );
     111forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double * );
     112
     113forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float _Complex * );
     114forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double _Complex * );
     115forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double _Complex * );
     116
     117struct _Istream_cstrUC { char * s; };
     118_Istream_cstrUC cstr( char * );
     119forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, _Istream_cstrUC );
     120
     121struct _Istream_cstrC { char * s; int size; };
     122_Istream_cstrC cstr( char *, int size );
     123forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, _Istream_cstrC );
     124
     125#endif // __IOSTREAM_H__
    81126
    82127// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.