iterator->level++;
iterator->type = SEXP_START;
- return 1;
+
+ return sexp_iterator_next(iterator);
}
/* Skips the rest of the current list */
const uint8_t *type)
{
return (sexp_iterator_enter_list(iterator)
- && sexp_iterator_next(iterator)
&& iterator->type == SEXP_ATOM
&& !iterator->display
&& strlen(type) == iterator->atom_length
const uint8_t **types)
{
if (sexp_iterator_enter_list(iterator)
- && sexp_iterator_next(iterator)
&& iterator->type == SEXP_ATOM
&& !iterator->display)
{
for (;;)
{
- if (!sexp_iterator_next(iterator))
- return 0;
-
switch (iterator->type)
{
case SEXP_LIST:
/* FIXME: Use sexp_iterator_check_type? */
- if (! (sexp_iterator_enter_list(iterator)
- && sexp_iterator_next(iterator)))
+ if (!sexp_iterator_enter_list(iterator))
return 0;
if (iterator->type == SEXP_ATOM
default:
abort();
}
+ if (!sexp_iterator_next(iterator))
+ return 0;
}
}
ASSERT(sexp_iterator_first(&i, LDATA("()")));
ASSERT(i.type == SEXP_LIST
&& sexp_iterator_enter_list(&i)
- && sexp_iterator_next(&i) && i.type == SEXP_END
+ && i.type == SEXP_END
&& sexp_iterator_exit_list(&i)
&& sexp_iterator_next(&i) && i.type == SEXP_END);
ASSERT(sexp_iterator_first(&i, LDATA("(")));
ASSERT(i.type == SEXP_LIST
- && sexp_iterator_enter_list(&i)
- && !sexp_iterator_next(&i));
+ && !sexp_iterator_enter_list(&i));
ASSERT(sexp_iterator_first(&i, LDATA("3:foo0:[3:bar]1:x")));
ASSERT(i.type == SEXP_ATOM