Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/enum.hfa

    rb006c51e r26d40a1  
    22
    33#include "iostream.hfa"
     4
     5forall( E ) trait Bounded {
     6        E lowerBound(void);
     7        E upperBound(void);
     8};
     9
     10forall( E | Bounded( E ) ) trait Serial {
     11        int fromInstance( E e );
     12        E fromInt_unsafe( int i );
     13        E succ_unsafe( E e );
     14        E pred_unsafe( E e );
     15};
     16
     17forall( E | Serial( E ) ) {
     18        E fromInt( int i );
     19        E succ( E e );
     20        E pred( E e );
     21        int Countof( E );
     22}
     23
     24// forall( E | Bounded(E) ) trait SafeSerial {
     25//       // unsigned fromInstance( E e );
     26//       E fromInt_unsafe( unsigned i );
     27//       // E succ_unsafe( E e );
     28//       //E pred_unsafe( E e );
     29
     30//       unsigned fromInstance( E e );
     31//       E fromInt( unsigned i );
     32//       E succ( E e );
     33//       E pred( E e );
     34// };
     35
     36forall( E ) trait CfaEnum {
     37        const char * label( E e );
     38        int posn( E e );
     39};
     40
     41forall( E, V | CfaEnum( E ) ) trait TypedEnum {
     42        V value( E e );
     43};
     44
     45// I/O
    446
    547forall( istype & | istream( istype ), E | CfaEnum( E ) | Serial(E) )
Note: See TracChangeset for help on using the changeset viewer.