- Timestamp:
- Jun 29, 2024, 7:33:28 AM (4 months ago)
- Branches:
- master
- Children:
- 011c29e
- Parents:
- 62a38e7 (diff), 115ac1ce (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. - Location:
- libcfa/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/enum.cfa
r62a38e7 rbc07190 4 4 #pragma GCC visibility push(default) 5 5 6 forall(ostype & | basic_ostream(ostype), E, V| CfaEnum(E, V)) 7 ostype & ?|?(ostype& os, E e) { 8 return os | type_name(e) | "." | label(e); 6 forall( ostype & | basic_ostream(ostype), E, V | CfaEnum(E, V) ) { 7 ostype & ?|?( ostype& os, E e ) { 8 return os | label( e ); 9 } 10 OSTYPE_VOID_IMPL( E ) 9 11 } 10 12 11 forall( ostype & | basic_ostream(ostype), E| CfaEnum(E, quasi_void))12 ostype & ?|?( ostype& os, E e) {13 return os | type_name(e) | "." | label(e);13 forall( ostype & | basic_ostream(ostype), E | CfaEnum(E, quasi_void) ) 14 ostype & ?|?( ostype & os, E e ) { 15 return os | label( e ); 14 16 } 15 17 16 forall( ostype & | basic_ostream(ostype), E, V| CfaEnum(E, V)) {18 forall( E, V | CfaEnum(E, V) ) { // relational operators 17 19 int ?==?(E l, E r) { return posn(l) == posn(r); } 20 int ?!=?(E l, E r) { return posn(l) != posn(r); } 21 int ?<?(E l, E r) { return posn(l) < posn(r); } 18 22 int ?<=?(E l, E r) { return posn(l) <= posn(r); } 23 int ?>?(E l, E r) { return posn(l) > posn(r); } 19 24 int ?>=?(E l, E r) { return posn(l) >= posn(r); } 20 int ?<?(E l, E r) { return posn(l) < posn(r); }21 int ?>?(E l, E r) { return posn(l) > posn(r); }22 25 } -
libcfa/src/enum.hfa
r62a38e7 rbc07190 3 3 #include "iostream.hfa" 4 4 5 forall( E) trait Bounded {5 forall( E ) trait Bounded { 6 6 E lowerBound(); 7 7 E upperBound(); 8 8 }; 9 9 10 forall( E | Bounded(E)) trait Serial {11 unsigned fromInstance( E e);12 E fromInt( unsigned i);13 E succ( E e);14 E pred( E e);10 forall( E | Bounded(E) ) trait Serial { 11 unsigned fromInstance( E e ); 12 E fromInt( unsigned i ); 13 E succ( E e ); 14 E pred( E e ); 15 15 }; 16 16 17 17 // Design one 18 forall(E, V | Serial(E)) trait CfaEnum { 19 char * label(E e); 20 unsigned int posn(E e); 21 V value(E e); 22 char * type_name(E e); 18 forall( E, V | Serial(E) ) trait CfaEnum { 19 char * label( E e ); 20 unsigned int posn( E e ); 21 V value( E e ); 23 22 }; 24 23 25 forall(ostype & | basic_ostream(ostype), E, V | CfaEnum(E, V)) 26 ostype & ?|?(ostype&, E); 24 // I/O 27 25 28 forall(ostype & | basic_ostream(ostype), E| CfaEnum(E, quasi_void)) 29 ostype & ?|?(ostype&, E); 26 forall( ostype & | basic_ostream(ostype), E, V | CfaEnum(E, V) ) { 27 ostype & ?|?( ostype &, E ); 28 OSTYPE_VOID( E ); 29 } 30 31 forall( ostype & | basic_ostream(ostype), E | CfaEnum(E, quasi_void) ) 32 ostype & ?|?( ostype &, E ); 30 33 31 34 // Design two <- should go for this if we have change the cost model … … 39 42 // }; 40 43 41 forall( ostype & | basic_ostream(ostype), E, V| CfaEnum(E, V)) {44 forall( E, V | CfaEnum(E, V) ) { // relational operators 42 45 int ?==?(E, E); 46 int ?!=?(E, E); 47 int ?<?(E, E); 43 48 int ?<=?(E, E); 49 int ?>?(E, E); 44 50 int ?>=?(E, E); 45 int ?<?(E, E);46 int ?>?(E, E);47 48 // E ++?( E & lhs );49 // E ?++( E & lhs );50 51 }
Note: See TracChangeset
for help on using the changeset viewer.