One new bit of apr "glue" to complement apr_table.get and
apr_table.set : apr_table.foreach

Index: apr_lua.c
===================================================================
--- apr_lua.c   (revision 653202)
+++ apr_lua.c   (working copy)
@@ -46,9 +46,30 @@
     return 1;
 }

+static APR_DECLARE_NONSTD(int) lua_table_foreach_iterator(void* rec,
const char* key, const char* value) {
+    int status;
+    lua_State *L = (lua_State*)rec;
+    lua_pushvalue(L, 2);
+    lua_pushstring(L, key);
+    lua_pushstring(L, value);
+    lua_call(L, 2, 1);
+    status = lua_toboolean(L, 3);
+    lua_pop(L, 1);
+    return status;
+}
+
+static int lua_table_foreach(lua_State* L) {
+    apr_table_t *t = check_apr_table(L, 1);
+    luaL_checktype(L, 2, LUA_TFUNCTION);
+    lua_settop(L, 2);
+    lua_pushboolean(L, apr_table_do(lua_table_foreach_iterator,
(void*)L, t, NULL));
+    return 1;
+}
+
 static const luaL_reg lua_table_methods[] = {
     {"set", lua_table_set},
     {"get", lua_table_get},
+    {"foreach", lua_table_foreach},
     {0, 0}
 };

2008/4/30 Akins, Brian <[EMAIL PROTECTED]>:
> On 4/29/08 3:52 PM, "Maxime Petazzoni" <[EMAIL PROTECTED]> wrote:
>  > So, feel free to jump in and write down some
>  > ideas!
>
>  Some "short term" ideas:
>
>  -Interface/API to allow other modules to run Lua code:
>  wombat_init(/some/lua/file), wombat_run(some_lua "handle) or something
>  similar.  Mod_wombat could/should (?) use this interface internally.
>
>  -Allow <Lua hook>some lua code for this hook</Lua> in config.
>
>  -Do Lua binding in another module(s) (mod_headers, mod_expires, and mod_mime
>  look like they may be fairly easy).
>
>  -More Lua "glue" with httpd/apr as well as apreq.
>
>  -Other modules can hook into "initialization" hooks.  Ie, wombat_loadlibs
>  and push_request become hooks.  There was a version I did that did this.
>
>  Some longer term ideas:
>
>  -Lua bindings to most core modules where it makes sense.
>
>  -Ability to write "full" modules in Lua.
>
>  -mod_lsp (don't laugh, we are contemplating working on this...)
>
>
>  I have several itches that must be scratched in Lua/httpd.  I am willing to
>  help as my time permits.  I have a real project coming up that will
>  "require" some Lua integration, so I may as well base that on mod_wombat.
>
>  --
>  Brian Akins
>  Chief Operations Engineer
>  Turner Digital Media Technologies
>
>

Reply via email to