diff options
Diffstat (limited to 'lib.h')
-rw-r--r-- | lib.h | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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); |