| 342 | return 0; |
| 343 | } |
| 344 | template <typename C> int generateIpairsIterator(lua_State *L) |
| 345 | { |
| 346 | C **v = (C **)lua_touserdata(L, 1); |
| 347 | lua_pop(L, 1); |
| 348 | lua_pushcfunction(L, advanceIpairsIterator<C>); |
| 349 | LuaIteratorState<C> *it = |
| 350 | (LuaIteratorState<C> *)lua_newuserdata(L, sizeof(LuaIteratorState<C>)); |
| 351 | new (it) LuaIteratorState<C>((*v)->begin(), (*v)->end()); |
| 352 | lua_createtable(L, 0, 1); |
| 353 | |
| 354 | lua_pushcfunction(L, (destroyIPairsIterator<C>)); |
| 355 | lua_setfield(L, -2, "__gc"); |
| 356 | lua_setmetatable(L, -2); |
| 357 | lua_pushinteger(L, 0); |
| 358 | return 2; |
| 359 | } |
| 360 | |
| 361 | template <typename C> int destroyIPairsIterator(lua_State *L) |
| 362 | { |