Changeset 76934fb for src/examples/iostream.c
- Timestamp:
- Jun 1, 2015, 12:55:33 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, string, with_gc
- Children:
- 6db50d5
- Parents:
- 46cbfe1 (diff), db82596 (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/examples/iostream.c
r46cbfe1 r76934fb 1 // "cfa -c -o iostream.o iostream.c" 2 // "cfa -v -E iostream.c > iostream_out.c" 3 // "cfa -CFA iostream.c > iostream_out.c" 4 // "cfa iostream_out.c" 5 // "gcc32 iostream_out.c LibCfa/libcfa.a" 1 // 2 // Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo 3 // 4 // The contents of this file are covered under the licence agreement in the 5 // file "LICENCE" distributed with Cforall. 6 // 7 // iostream.c -- 8 // 9 // Author : Richard C. Bilson 10 // Created On : Wed May 27 17:56:53 2015 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 27 18:18:13 2015 13 // Update Count : 2 14 // 6 15 7 16 #include "iostream.h" … … 10 19 //#include <string.h> 11 20 //#include <ctype.h> 12 typedef long unsigned int size_t;13 size_t strlen(const char *s);21 typedef long unsigned int size_t; 22 size_t strlen(const char *s); 14 23 } 15 24 16 25 forall( dtype ostype | ostream( ostype ) ) 17 26 ostype * ?<<?( ostype *os, char c ) { 18 27 return write( os, &c, 1 ); 19 28 } 20 29 21 30 forall( dtype ostype | ostream( ostype ) ) 22 31 ostype * ?<<?( ostype *os, int i ) { 23 24 25 32 char buffer[20]; // larger than the largest integer 33 sprintf( buffer, "%d", i ); 34 return write( os, buffer, strlen( buffer ) ); 26 35 } 27 36 28 37 forall( dtype ostype | ostream( ostype ) ) 29 38 ostype * ?<<?( ostype *os, double d ) { 30 31 32 39 char buffer[32]; // larger than the largest double 40 sprintf( buffer, "%g", d ); 41 return write( os, buffer, strlen( buffer ) ); 33 42 } 34 43 35 44 forall( dtype ostype | ostream( ostype ) ) 36 45 ostype * ?<<?( ostype *os, const char *cp ) { 37 46 return write( os, cp, strlen( cp ) ); 38 47 } 39 48 40 49 forall( dtype istype | istream( istype ) ) 41 50 istype * ?>>?( istype *is, char *cp ) { 42 51 return read( is, cp, 1 ); 43 52 } 44 53 45 54 forall( dtype istype | istream( istype ) ) 46 55 istype * ?>>?( istype *is, int *ip ) { 47 56 char cur; 48 57 49 50 51 is >> &cur;52 if ( fail( is ) || eof( is ) ) return is;53 58 // skip some whitespace 59 do { 60 is >> &cur; 61 if ( fail( is ) || eof( is ) ) return is; 62 } while ( !( cur >= '0' && cur <= '9' ) ); 54 63 55 56 57 58 *ip = *ip * 10 + ( cur - '0' );59 is >> &cur;60 if ( fail( is ) || eof( is ) ) return is;61 64 // accumulate digits 65 *ip = 0; 66 while ( cur >= '0' && cur <= '9' ) { 67 *ip = *ip * 10 + ( cur - '0' ); 68 is >> &cur; 69 if ( fail( is ) || eof( is ) ) return is; 70 } 62 71 63 64 72 unread( is, cur ); 73 return is; 65 74 } 75 76 // Local Variables: // 77 // tab-width: 4 // 78 // compile-command: "cfa iostream.c" // 79 // End: //
Note:
See TracChangeset
for help on using the changeset viewer.