Changeset ee06e41b
- Timestamp:
- Feb 18, 2019, 1:04:30 PM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- d08beee
- Parents:
- ada4575
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/prelude/prelude-gen.cc
rada4575 ree06e41b 1 // 2 // Cforall Version 1.0.0 Copyright (C) 2018 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 // prelude-gen.cc -- 8 // 9 // Author : Rob Schluntz and Thierry Delisle 10 // Created On : Sat Feb 16 08:44:58 2019 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 18 09:47:33 2019 13 // Update Count : 22 14 // 15 1 16 #include <algorithm> 2 17 #include <array> … … 11 26 bool hasComparison; 12 27 } basicTypes[] = { 13 //{ "char" , false, true , },14 //{ "signed char" , false, true , },15 //{ "unsigned char" , false, true , },28 { "char" , false, true , }, 29 { "signed char" , false, true , }, 30 { "unsigned char" , false, true , }, 16 31 { "signed short" , false, true , }, 17 32 { "unsigned short" , false, true , }, … … 150 165 cout << endl; 151 166 152 cout << "signed int ?==?( zero_t, zero_t ), 153 cout << "signed int ?==?( one_t, one_t ), 154 cout << "signed int ?==?( _Bool, _Bool ), 167 cout << "signed int ?==?( zero_t, zero_t ), ?!=?( zero_t, zero_t );" << endl; 168 cout << "signed int ?==?( one_t, one_t ), ?!=?( one_t, one_t );" << endl; 169 cout << "signed int ?==?( _Bool, _Bool ), ?!=?( _Bool, _Bool );" << endl; 155 170 cout << "signed int !?( _Bool );" << endl; 156 171 … … 188 203 cout << "// Arithmetic Constructors //" << endl; 189 204 cout << "/////////////////////////////" << endl; 205 cout << endl; 206 190 207 auto otype = [](const std::string & type, bool do_volatile = false) { 191 cout << "void \t?{} ( " << type << " &);" << endl;192 cout << "void \t?{} ( " << type << " &, " << type << ");" << endl;193 cout << type << " \t?=? ( " << type << " &, " << type << ")";194 if ( do_volatile ) {195 cout << ", \t?=?( volatile " << type << " &, " << type << ")";208 cout << "void ?{} (" << type << " &);" << endl; 209 cout << "void ?{} (" << type << " &, " << type << ");" << endl; 210 cout << type << " ?=? (" << type << " &, " << type << ")"; 211 if ( do_volatile ) { 212 cout << ", ?=?(volatile " << type << " &, " << type << ")"; 196 213 } 197 214 cout << ";" << endl; 198 cout << "void \t^?{}( " << type << " & );" << endl;215 cout << "void ^?{}( " << type << " & );" << endl; 199 216 }; 200 217 … … 202 219 otype("one_t"); 203 220 otype("_Bool", true); 204 otype("char", true); 205 otype("signed char", true); 206 otype("unsigned char", true); 221 cout << endl; 207 222 208 223 for (auto type : basicTypes) { 209 cout << "void ?{}(" << type.name << " &);" << endl; 210 cout << "void ?{}(" << type.name << " &, " << type.name << ");" << endl; 224 cout << "void ?{}(" << type.name << " &);" << endl; 225 cout << "void ?{}(" << type.name << " &, " << type.name << ");" << endl; 226 cout << "void ?{}(" << type.name << " &, zero_t);" << endl; 211 227 cout << "void ^?{}(" << type.name << " &);" << endl; 212 228 cout << endl; … … 217 233 cout << "// Pointer Constructors //" << endl; 218 234 cout << "//////////////////////////" << endl; 219 cout << "forall(ftype FT) void ?{}( FT *&, FT * );" << endl; 220 cout << "forall(ftype FT) void ?{}( FT * volatile &, FT * );" << endl; 235 cout << endl; 236 237 cout << "forall(ftype FT) void ?{}( FT *&, FT * );" << endl; 238 cout << "forall(ftype FT) void ?{}( FT * volatile &, FT * );" << endl; 221 239 222 240 // generate qualifiers … … 242 260 for (auto cvq : qualifiersPair) { 243 261 for (auto is_vol : { " ", "volatile" }) { 244 cout << "forall(dtype DT) void 262 cout << "forall(dtype DT) void ?{}(" << cvq.first << type << " * " << is_vol << " &, " << cvq.second << "DT *);" << endl; 245 263 } 246 264 } 247 265 for (auto cvq : qualifiersSingle) { 248 266 for (auto is_vol : { " ", "volatile" }) { 249 cout << "forall(dtype DT) void 267 cout << "forall(dtype DT) void ?{}(" << cvq << type << " * " << is_vol << " &);" << endl; 250 268 } 251 269 for (auto is_vol : { " ", "volatile" }) { … … 386 404 cout << endl; 387 405 } 406 407 // Local Variables: // 408 // tab-width: 4 // 409 // End: // -
libcfa/src/containers/maybe.cfa
rada4575 ree06e41b 10 10 // Created On : Wed May 24 15:40:00 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 20 15:23:50 201713 // Update Count : 212 // Last Modified On : Sun Feb 17 11:22:03 2019 13 // Update Count : 3 14 14 // 15 15 … … 39 39 forall(otype T) 40 40 maybe(T) ?=?(maybe(T) & this, maybe(T) that) { 41 if (this.has_value & that.has_value) {41 if (this.has_value && that.has_value) { 42 42 this.value = that.value; 43 43 } else if (this.has_value) { -
libcfa/src/containers/result.cfa
rada4575 ree06e41b 10 10 // Created On : Wed May 24 15:40:00 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 20 15:23:58 201713 // Update Count : 212 // Last Modified On : Sun Feb 17 11:24:04 2019 13 // Update Count : 3 14 14 // 15 15 … … 48 48 forall(otype T, otype E) 49 49 result(T, E) ?=?(result(T, E) & this, result(T, E) that) { 50 if (this.has_value & that.has_value) {50 if (this.has_value && that.has_value) { 51 51 this.value = that.value; 52 52 } else if (this.has_value) { -
tests/.expect/declarationSpecifier.x64.txt
rada4575 ree06e41b 689 689 signed int _X4mainFi_iPPKc__1(signed int _X4argci_1, const char **_X4argvPPKc_1){ 690 690 __attribute__ ((unused)) signed int _X12_retval_maini_1; 691 ((void)(_X12_retval_maini_1= ((signed int )0)) /* ?{} */);691 ((void)(_X12_retval_maini_1=0) /* ?{} */); 692 692 return _X12_retval_maini_1; 693 693 ((void)(_X12_retval_maini_1=0) /* ?{} */); -
tests/.expect/gccExtensions.x64.txt
rada4575 ree06e41b 162 162 signed int _X2m2A0A0i_2[((unsigned long int )10)][((unsigned long int )10)]; 163 163 signed int _X2m3A0A0i_2[((unsigned long int )10)][((unsigned long int )10)]; 164 ((void)(_X12_retval_maini_1= ((signed int )0)) /* ?{} */);164 ((void)(_X12_retval_maini_1=0) /* ?{} */); 165 165 return _X12_retval_maini_1; 166 166 ((void)(_X12_retval_maini_1=0) /* ?{} */); -
tests/.expect/sum.txt
rada4575 ree06e41b 1 sum from 5 to 15 is 95, check 95 2 sum from 5 to 15 is 95, check 95 1 3 sum from 5 to 15 is 95, check 95 2 4 sum from 5 to 15 is 95, check 95 -
tests/sum.cfa
rada4575 ree06e41b 11 11 // Created On : Wed May 27 17:56:53 2015 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : S at Feb 9 15:38:48201914 // Update Count : 29313 // Last Modified On : Sun Feb 17 22:54:16 2019 14 // Update Count : 328 15 15 // 16 16 … … 34 34 } // sum 35 35 36 // Not in prelude.37 unsigned char ?+?( unsigned char t1, unsigned char t2 ) { return (int)t1 + t2; } // cast forces integer addition, otherwise recursion38 unsigned char ?+=?( unsigned char & t1, unsigned char t2 ) { t1 = t1 + t2; return t1; }39 unsigned char ++?( unsigned char & t ) { t += 1; return t; }40 unsigned char ?++( unsigned char & t ) { unsigned char temp = t; t += 1; return temp; }41 42 // Not in prelude.43 void ?{}( unsigned char & c, zero_t ) { c = 0; }44 void ?{}( int & i, zero_t ) { i = 0; }45 void ?{}( float & f, zero_t ) { f = 0.0; }46 void ?{}( double & d, zero_t ) { d = 0.0; }47 48 36 int main( void ) { 49 37 const int low = 5, High = 15, size = High - low; 50 38 51 unsigned char s = 0, a[size], v = (char)low;52 for ( int i = 0; i < size; i += 1, v += 1 ) {39 signed char s = 0, a[size], v = (char)low; 40 for ( int i = 0; i < size; i += 1, v += 1hh ) { 53 41 s += v; 54 42 a[i] = v; 55 43 } // for 56 44 sout | "sum from" | low | "to" | High | "is" 57 | sum( size, (unsigned char *)a ) | ", check" | (int)s; 45 | sum( size, (signed char *)a ) | ", check" | (int)s; 46 47 unsigned char s = 0, a[size], v = low; 48 for ( int i = 0; i < size; i += 1, v += 1hhu ) { 49 s += (unsigned char)v; 50 a[i] = (unsigned char)v; 51 } // for 52 sout | "sum from" | low | "to" | High | "is" 53 | sum( size, (unsigned char *)a ) | ", check" | (unsigned char)s; 54 55 short int s = 0, a[size], v = low; 56 for ( int i = 0; i < size; i += 1, v += 1h ) { 57 s += (short int)v; 58 a[i] = (short int)v; 59 } // for 60 sout | "sum from" | low | "to" | High | "is" 61 | sum( size, (short int *)a ) | ", check" | (short int)s; 58 62 59 63 int s = 0, a[size], v = low;
Note: See TracChangeset
for help on using the changeset viewer.