static int tolua_tags_next(lua_State * L) { tag_iterator *iter = (tag_iterator *)lua_touserdata(L, lua_upvalueindex(1)); if (iter->node) { tolua_pushusertype(L, (void *)iter->r, TOLUA_CAST "region"); tag_advance(iter); return 1; } else { return 0; /* no more values to return */ } }
void tag_rewind(tag_iterator * iter) { if (iter->list) { iter->r = NULL; iter->node = iter->list->tags[0]; iter->hash = 0; if (iter->node) { iter->r = findregion(iter->node->coord.x, iter->node->coord.y); } if (!iter->r) { tag_advance(iter); } } else { iter->node = 0; iter->hash = MAXTHASH; } }
//------------------------------------------------------------------------- int py_tag_advance(const char *line, int cnt) { return tag_advance(line, cnt)-line; }