C ++でLuaテーブルを作成し、それをLua関数に渡すにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/453769

質問

C ++では、不明な数のエントリを含むmap<string, string>があります。これをLua関数に渡すと、Lua関数がデータをテーブルとして使用できるようになりますか?

役に立ちましたか?

解決

実際のluaテーブルが必要な場合:

lua_newtable(L);
int top = lua_gettop(L);

for (std::map::iterator it = mymap.begin(); it != mymap.end(); ++it) {
    const char* key = it->first.c_str();
    const char* value = it->second.c_str();
    lua_pushlstring(L, key, it->first.size());
    lua_pushlstring(L, value, it->second.size());
    lua_settable(L, top);
}

マップに適切なタイプを代入して..

他のヒント

いくつかのオプション...

  1. マップを新しいLuaテーブルにコピーし、Luaテーブルを渡します。

  2. メタテーブルの読み取りと書き込みを指示するプロキシテーブルを作成します__indexおよび__newindexメタメソッド

(1)の欠点は、もちろんすべてのコピーです。

(2)の欠点は、pairs()がプロキシテーブルで機能しないことです

一般化されたpairsのLuaの修正については、 wikiでおよび< href = "http://lua-users.org/lists/lua-l/2007-02/msg00423.html" rel = "nofollow noreferrer">このメーリングリストスレッド。 Lua 5.2

には一般化された<=>が必要です。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top