proxyfuncs.go
func ProxyIpairs(L *lua.State) int {
	// See Lua >=5.2 source code.
	if L.GetMetaField(1, "__ipairs") {
		L.PushValue(1)
		L.Call(1, 3)
		return 3
	}

	L.CheckType(1, lua.LUA_TTABLE)
	L.PushGoFunction(ipairsAux)
	L.PushValue(1)
	L.PushInteger(0)
	return 3
}
func ProxyIpairs(L *lua.State) int {
	// See Lua >=5.2 source code.
	if L.GetMetaField(1, "__ipairs") {
		L.PushValue(1)
		L.Call(1, 3)
		return 3
	}

	L.CheckType(1, lua.LUA_TTABLE)
	L.PushGoFunction(ipairsAux)
	L.PushValue(1)
	L.PushInteger(0)
	return 3
}
func ProxyIpairs ( L * lua . State ) int { // See Lua >=5.2 source code. if L . GetMetaField ( 1 , " " ) { L . PushValue ( 1 ) L . Call ( 1 , 3 ) return 3 } L . CheckType ( 1 , lua . LUA_TTABLE ) L . PushGoFunction ( ipairsAux ) L . PushValue ( 1 ) L . PushInteger ( 0 ) return 3 }
// ProxyIpairs implements Lua 5.2 'ipairs' functions.
// It respects the __ipairs metamethod.
//
// It is only useful for compatibility with Lua 5.1.
//
// Because it cannot call 'ipairs' for it might recurse infinitely, ProxyIpairs
// reimplements `ipairsAux` in Go which can be a performance issue in tight
// loops.
//
// You should call 'RegProxyIpairs' instead.
ProxyIpairs implements Lua 5 . 2 ipairs functions . It respects the __ipairs metamethod . It is only useful for compatibility with Lua 5 . 1 . Because it cannot call ipairs for it might recurse infinitely ProxyIpairs reimplements ipairsAux in Go which can be a performance issue in tight loops . You should call RegProxyIpairs instead .