Changes in tests/forall.cfa [aca0d2f:39d9b32]
- File:
-
- 1 edited
-
tests/forall.cfa (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/forall.cfa
raca0d2f r39d9b32 10 10 // Created On : Wed May 9 08:48:15 2018 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 23 20:29:59 2023 13 // Update Count : 91 14 // 15 16 #include <fstream.hfa> 12 // Last Modified On : Sat Jun 5 10:06:08 2021 13 // Update Count : 36 14 // 17 15 18 16 void g1() { 19 forall( T ) T f( T p ) { sout | 'f'; return p; }; 20 void f( int p ) { sout | p; }; 21 void g( void ) { sout | 'g'; }; 22 void h( void (*p)(void) ) { p(); }; 23 24 int x = 1; 25 void (*y)(void) = g; 26 char z = 'a'; 27 float w = 3.5; 17 forall( T ) T f( T ) {}; 18 void f( int ) {}; 19 void h( void (*p)(void) ) {}; 20 21 int x; 22 void (*y)(void); 23 char z; 24 float w; 28 25 29 26 f( x ); … … 31 28 f( z ); 32 29 f( w ); 33 h( y );34 f( y );35 30 h( f( y ) ); 36 31 } 37 32 38 33 void g2() { 39 forall( T ) void f( T, T ) { sout | "fT";}40 forall( T, U ) void f( T, U ) { sout | "fTU";}34 forall( T ) void f( T, T ) {} 35 forall( T, U ) void f( T, U ) {} 41 36 42 37 int x; 43 38 float y; 44 int * z; 45 float * w; 46 47 f( x, x ); 48 f( y, y ); 49 f( w, w ); 39 int *z; 40 float *w; 41 50 42 f( x, y ); 51 43 f( z, w ); … … 58 50 59 51 forall( T ) 60 void swap( T & left, T & right ) { // by reference 61 T temp = left; 62 left = right; 63 right = temp; 64 } 65 66 forall( T ) 67 [ T, T ] swap( T i, T j ) { // by value 68 return [ j, i ]; 69 } 70 71 forall( T ) trait sumable { 52 void swap( T left, T right ) { 53 T temp = left; 54 left = right; 55 right = temp; 56 } 57 58 trait sumable( T ) { 72 59 void ?{}( T &, zero_t ); // 0 literal constructor 73 60 T ?+?( T, T ); // assortment of additions … … 77 64 }; // sumable 78 65 79 forall( T | sumable( T ) ) // use trait66 forall( T | sumable( T ) ) // use trait 80 67 T sum( size_t size, T a[] ) { 81 68 T total = 0; // initialize by 0 constructor … … 85 72 } // sum 86 73 87 forall( T | { T ?+?( T, T ); T ?++( T & ); [T] ?+=?( T &, T ); } )74 forall( T | { T ?+?( T, T ); T ?++( T & ); [T] ?+=?( T &,T ); } ) 88 75 T twice( T t ) { 89 76 return t + t; … … 95 82 } 96 83 97 voidfred() {98 int x = 1, y = 2, a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };84 int fred() { 85 int x = 1, y = 2, a[10]; 99 86 float f; 100 87 101 sout | x | y;102 88 swap( x, y ); 103 sout | x | y | nl | swap( x, y ); 104 // [ x, y ] = swap( y, x ); 105 sout | twice( ' ' ) | ' ' | twice( 0hh ) | twice( 1h ) | twice( 0n ) | twice( 2 ) 106 | twice( 3.2f ) | twice( 3.2 ) | twice( 3.2d ) | twice( 3.2+1.5i ) | twice( x ); 89 twice( x ); 107 90 f = min( 4.0, 3.0 ); 108 sout | f | min( 4.0, 3.0 ); 109 sout | sum( 10, a ); 91 sum( 10, a ); 110 92 } 111 93 … … 195 177 196 178 forall( T ) struct S { T t; } (int) x, y, z; 197 staticforall( T ) struct { T t; } (int) a, b, c;179 forall( T ) struct { T t; } (int) a, b, c; 198 180 199 181 forall( T ) static forall( S ) { … … 204 186 205 187 forall( T ) { 206 //extern "C" {188 extern "C" { 207 189 struct SS { T t; }; 208 T foo( T p ) { return p;}209 //}190 T foo( T ) {} 191 } 210 192 } 211 193 … … 213 195 W(int,int) w; 214 196 215 voidjane() {197 int jane() { 216 198 // int j = bar( 3, 4 ); 217 199 int k = baz( 3, 4, 5 ); 218 200 int i = foo( 3 ); 219 sout | k | i;220 201 } 221 202 … … 230 211 T t; 231 212 T t2 = t; 232 sout | &tr | tp;233 213 } 234 214 … … 262 242 263 243 int main( void ) { 264 g1(); 265 g2(); 266 fred(); 267 jane(); 244 #pragma GCC warning "Compiled" // force non-empty .expect file, NO TABS!!! 268 245 } 269 246
Note:
See TracChangeset
for help on using the changeset viewer.