コード例 #1
0
ファイル: table_iterator.hpp プロジェクト: Enverex/mame
		~basic_table_iterator() {
			if (keyidx != -1) {
				stack::remove(ref.lua_state(), keyidx, 1);
			}
			if (ref.valid()) {
				stack::remove(ref.lua_state(), tableidx, 1);
			}
		}
コード例 #2
0
ファイル: table_iterator.hpp プロジェクト: Enverex/mame
		basic_table_iterator(reference_type x) : ref(std::move(x)) {
			ref.push();
			tableidx = lua_gettop(ref.lua_state());
			stack::push(ref.lua_state(), nil);
			this->operator++();
			if (idx == -1) {
				return;
			}
			--idx;
		}
コード例 #3
0
    basic_table_iterator& operator++() {
        if (idx == -1)
            return *this;

        if (lua_next(ref.lua_state(), tableidx) == 0) {
            idx = -1;
            return *this;
        }
        ++idx;
        kvp.first = object(ref.lua_state(), -2);
        kvp.second = object(ref.lua_state(), -1);
        lua_pop(ref.lua_state(), 1);
        // leave key on the stack
        return *this;
    }