func slice__newindex(L *lua.State) int { slice, t := valueOfProxy(L, 1) idx := L.ToInteger(2) val := LuaToGo(L, t.Elem(), 3) slice.Index(idx - 1).Set(valueOf(val)) return 0 }
func slice_slice(L *lua.State) int { slice, _ := valueOfProxy(L, 1) i1, i2 := L.ToInteger(2), L.ToInteger(3) newslice := slice.Slice(i1, i2) makeValueProxy(L, newslice, SLICE_META) return 1 }
func slice__index(L *lua.State) int { slice, _ := valueOfProxy(L, 1) if L.IsNumber(2) { idx := L.ToInteger(2) ret := slice.Index(idx - 1) GoToLua(L, ret.Type(), ret) } else { name := L.ToString(2) switch name { case "Slice": L.PushGoFunction(slice_slice) default: fmt.Println("unknown slice method") } } return 1 }