summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib.h b/lib.h
index 5fa529e5..3365183c 100644
--- a/lib.h
+++ b/lib.h
@@ -415,9 +415,15 @@ typedef struct seq_iter {
cnum cbound;
val next;
} ul;
+ struct seq_iter_ops *ops;
+} seq_iter_t;
+
+struct seq_iter_ops {
int (*get)(struct seq_iter *, val *pval);
int (*peek)(struct seq_iter *, val *pval);
-} seq_iter_t;
+};
+
+#define seq_iter_ops_init(get, peek) { get, peek }
extern const seq_kind_t seq_kind_tab[MAXTYPE+1];
@@ -572,8 +578,8 @@ seq_info_t seq_info(val cobj);
void seq_iter_init_with_info(val self, seq_iter_t *it,
seq_info_t si, int support_rewind);
void seq_iter_init(val self, seq_iter_t *it, val obj);
-INLINE int seq_get(seq_iter_t *it, val *pval) { return it->get(it, pval); }
-INLINE int seq_peek(seq_iter_t *it, val *pval) { return it->peek(it, pval); }
+INLINE int seq_get(seq_iter_t *it, val *pval) { return it->ops->get(it, pval); }
+INLINE int seq_peek(seq_iter_t *it, val *pval) { return it->ops->peek(it, pval); }
val seq_geti(seq_iter_t *it);
val seq_getpos(val self, seq_iter_t *it);
void seq_setpos(val self, seq_iter_t *it, val pos);