source: libcfa/src/enum.hfa@ 72713e5

Last change on this file since 72713e5 was 72713e5, checked in by JiadaL <j82liang@…>, 17 months ago

Add libcfa/src/enum.hfa

  • Property mode set to 100644
File size: 545 bytes
Line 
1#pragma once
2
3forall(E) trait Bounded {
4 E lowerBound();
5 E upperBound();
6};
7
8forall(E | Bounded(E)) trait Serial {
9 unsigned fromInstance(E e);
10 E fromInt(unsigned i);
11 E succ(E e);
12 E pred(E e);
13};
14
15forall(E, T) trait TypedEnum {
16 T valueE(E e);
17 char * labelE(E e);
18 unsigned int posE(E e);
19};
20
21forall(E, T| TypedEnum(E, T)) {
22 // comparison
23 int ?==?(E l, E r);
24 int ?!=?(E l, E r);
25 int ?!=?(E l, zero_t);
26 int ?<?(E l, E r);
27 int ?<=?(E l, E r);
28 int ?>?(E l, E r);
29 int ?>=?(E l, E r);
30}
Note: See TracBrowser for help on using the repository browser.