| 9400 | |
| 9401 | |
| 9402 | int luaH_next (lua_State *L, Table *t, StkId key) { |
| 9403 | int i = findindex(L, t, key); /* find original element */ |
| 9404 | for (i++; i < t->sizearray; i++) { /* try first array part */ |
| 9405 | if (!ttisnil(&t->array[i])) { /* a non-nil value? */ |
| 9406 | setnvalue(key, cast_num(i+1)); |
| 9407 | setobj2s(L, key+1, &t->array[i]); |
| 9408 | return 1; |
| 9409 | } |
| 9410 | } |
| 9411 | for (i -= t->sizearray; i < sizenode(t); i++) { /* then hash part */ |
| 9412 | if (!ttisnil(gval(gnode(t, i)))) { /* a non-nil value? */ |
| 9413 | setobj2s(L, key, key2tval(gnode(t, i))); |
| 9414 | setobj2s(L, key+1, gval(gnode(t, i))); |
| 9415 | return 1; |
| 9416 | } |
| 9417 | } |
| 9418 | return 0; /* no more elements */ |
| 9419 | } |
| 9420 | |
| 9421 | |
| 9422 | /* |