Index: libcfa/src/enum.cfa
===================================================================
--- libcfa/src/enum.cfa	(revision 259012e3d5cbf2639379fff3cc51ef41fb9cb5cf)
+++ libcfa/src/enum.cfa	(revision 73d0e3f4e0ab67804cda0bdfa2660e3905620544)
@@ -23,3 +23,25 @@
     int ?>?(E l, E r) { return posn(l) > posn(r); }
     int ?>=?(E l, E r) { return posn(l) >= posn(r); }
+
+    E ++?(E& l) { 
+        l = succ(l);
+        return l;
+    }
+    
+    E ?++(E& l) {
+        E ret = l;
+        l = succ(l);
+        return ret;
+    }
+
+    E --?(E& l) {
+        l = pred(l);
+        return l;
+    }
+
+    E ?--(E& l) {
+        E ret = l;
+        l = pred(l);
+        return ret;
+    }
 }
Index: libcfa/src/enum.hfa
===================================================================
--- libcfa/src/enum.hfa	(revision 259012e3d5cbf2639379fff3cc51ef41fb9cb5cf)
+++ libcfa/src/enum.hfa	(revision 73d0e3f4e0ab67804cda0bdfa2660e3905620544)
@@ -49,3 +49,8 @@
     int ?>?(E, E);
     int ?>=?(E, E);
+
+    int ++?(E&);
+    int ?++(E&);
+    int --?(E&);
+    int ?--(E&);
 }
