Cのブリッジライブラリからテーブルを受け取る

今まで、lua_pushstringして文字列を取得する形でしか使って来なかったのですが、テーブルを受け取りたくなったのでやってみました。


static int test(lua_State *L)
{
  const char *str = luaL_checkstring(L, 1);
  int i;

  lua_newtable(L);
  for ( i=0; i<4; i++ ) {
    lua_pushstring(L, i + 1);
    lua_pushstring(L, (unsigned char *)str);
    lua_settable(L, -3);
  }

  return 1;
}

これでこんな感じで取れる

[“aaa”,”aaa”,”aaa”,”aaa”]

Cからluaにテーブル渡せるということは、いろいろCで実装出来るので便利。

About irako

広告系Webエンジニア 最近はluaがお気に入り。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です