Changeset 86f384b for src/libcfa


Ignore:
Timestamp:
Jul 2, 2017, 10:49:41 AM (7 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
307a732
Parents:
d395012
Message:

make tuple separator a separator rather than terminator

Location:
src/libcfa
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/iostream

    rd395012 r86f384b  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul  1 16:37:52 2017
    13 // Update Count     : 108
     12// Last Modified On : Sun Jul  2 08:42:56 2017
     13// Update Count     : 110
    1414//
    1515
     
    2626        const char * sepGetCur( ostype * );                                     // get current separator string
    2727        void sepSetCur( ostype *, const char * );                       // set current separator string
     28        _Bool lastSepOn( ostype * );                                            // last manipulator is setOn (context sensitive)
    2829        // public
    2930        void sepOn( ostype * );                                                         // turn separator state on
     
    3132        _Bool sepDisable( ostype * );                                           // set default state to off, and return previous state
    3233        _Bool sepEnable( ostype * );                                            // set default state to on, and return previous state
    33         _Bool lastSepOn( ostype * );                                            // last manipulator is setOn (context sensitive)
    3434
    3535        const char * sepGet( ostype * );                                        // get separator string
     
    4444        ostype * write( ostype *, const char *, unsigned long int );
    4545        int fmt( ostype *, const char fmt[], ... );
    46 };
     46}; // ostream
    4747
    4848trait writeable( otype T ) {
    4949        forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T );
    50 };
     50}; // writeable
    5151
    5252// implement writable for intrinsic types
     
    104104        istype * ungetc( istype *, char );
    105105        int fmt( istype *, const char fmt[], ... );
    106 };
     106}; // istream
    107107
    108108trait readable( otype T ) {
    109109        forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T );
    110 };
     110}; // readable
    111111
    112112forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * );
  • src/libcfa/iostream.c

    rd395012 r86f384b  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul  1 16:37:51 2017
    13 // Update Count     : 374
     12// Last Modified On : Sun Jul  2 08:54:02 2017
     13// Update Count     : 375
    1414//
    1515
     
    201201forall( dtype ostype, otype T, ttype Params | ostream( ostype ) | writeable( T ) | { ostype * ?|?( ostype *, Params ); } )
    202202ostype * ?|?( ostype * os, T arg, Params rest ) {
     203        os | arg;                                                                                       // print first argument
    203204        sepSetCur( os, sepGetTuple( os ) );                                     // switch to tuple separator
    204         os | arg;                                                                                       // print first argument
    205205        os | rest;                                                                                      // print remaining arguments
    206206        sepSetCur( os, sepGet( os ) );                                          // switch to regular separator
Note: See TracChangeset for help on using the changeset viewer.