jbe@0: #include jbe@0: #include jbe@0: jbe@0: typedef struct { jbe@0: lua_State *L; jbe@8: int idx; jbe@0: int itertype; jbe@0: lua_Integer i; jbe@0: } seqlua_Iterator; jbe@0: jbe@52: #define SEQLUA_MODE_NONE 0 jbe@52: #define SEQLUA_MODE_CALL 1 jbe@52: #define SEQLUA_MODE_GENERATOR 2 jbe@52: jbe@52: extern void seqlua_iterinit(lua_State *L, seqlua_Iterator *iter, int mode, int idx); jbe@0: jbe@0: extern int seqlua_iternext(seqlua_Iterator *iter); jbe@0: jbe@52: #define seqlua_iterloop(L, iter, mode, idx) \ jbe@0: for ( \ jbe@52: seqlua_iterinit((L), (iter), (mode), (idx)); \ jbe@0: seqlua_iternext(iter); \ jbe@25: ) jbe@25: jbe@52: #define seqlua_iterloopauto(L, iter, mode, idx) \ jbe@25: for ( \ jbe@52: seqlua_iterinit((L), (iter), (mode), (idx)); \ jbe@25: seqlua_iternext(iter); \ jbe@0: lua_pop((L), 1) \ jbe@0: ) jbe@0: jbe@0: #define seqlua_itercount(iter) ((iter)->i) jbe@0: