-
Notifications
You must be signed in to change notification settings - Fork 9
/
api_tox.go
100 lines (87 loc) · 2.28 KB
/
api_tox.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package state
import "strconv"
import . "luago/api"
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_toboolean
func (self *luaState) ToBoolean(index int) bool {
val := self.stack.get(index)
return valToBoolean(val)
}
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_tointeger
func (self *luaState) ToInteger(index int) int64 {
i, _ := self.ToIntegerX(index)
return i
}
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_tointegerx
func (self *luaState) ToIntegerX(index int) (int64, bool) {
val := self.stack.get(index)
return valToInteger(val)
}
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_tonumber
func (self *luaState) ToNumber(index int) float64 {
n, _ := self.ToNumberX(index)
return n
}
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_tonumberx
func (self *luaState) ToNumberX(index int) (float64, bool) {
val := self.stack.get(index)
return valToNumber(val)
}
// [-0, +0, m]
// http://www.lua.org/manual/5.3/manual.html#lua_tostring
// http://www.lua.org/manual/5.3/manual.html#lua_tolstring
func (self *luaState) ToString(index int) (string, bool) {
val := self.stack.get(index)
s := ""
switch x := val.(type) {
case int64:
s = strconv.FormatInt(x, 10) // todo
case float64:
s = strconv.FormatFloat(x, 'f', -1, 64) // todo
case string:
return x, true
default:
return "", false
}
// val is a number
self.CheckStack(1)
self.PushString(s)
self.Replace(index)
return s, true
}
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_tocfunction
func (self *luaState) ToGoFunction(index int) GoFunction {
val := self.stack.get(index)
switch x := val.(type) {
case GoFunction:
return x
default:
return nil
}
}
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_touserdata
func (self *luaState) ToUserData(index int) UserData {
val := self.stack.get(index)
if val != nil {
if ud, ok := val.(*userData); ok {
return ud.data
}
}
return nil
}
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_topointer
func (self *luaState) ToPointer(index int) interface{} {
return self.stack.get(index)
}
// [-0, +0, –]
// http://www.lua.org/manual/5.3/manual.html#lua_tothread
func (self *luaState) ToThread(index int) LuaState {
panic("todo!")
}