+
+int
+real_db_enumerate_items(struct db_enumerator e)
+{
+ int item = max(0, e.item + 1);
+ int i;
+
+ switch(e.mode) {
+#ifdef DEBUG
+ case ENUM_ALL:
+ break;
+#endif
+ case ENUM_SELECTED:
+ for(i = item; i < items; i++) {
+ if(is_selected(i)) {
+ item = i;
+ goto out;
+ }
+ }
+ return -1;
+#ifdef DEBUG
+ default:
+ fprintf(stderr, "real_db_enumerate_items() "
+ "BUG: unknown db_enumerator mode: %d\n",
+ e.mode);
+ break;
+#endif
+ }
+out:
+ return (item > LAST_ITEM || item < 0) ? -1 : item;
+}
+
+struct db_enumerator
+init_db_enumerator(int mode)
+{
+ struct db_enumerator new;
+
+ new.item = -1; /* important - means "start from beginning" */
+ new.mode = mode;
+
+ return new;
+}