@@ -2,71 +2,71 @@ use {HasLua, Lua, CopyRead, ConsumeRead, LoadedVariable, Push, Index};
2
2
use ffi;
3
3
4
4
#[ unstable]
5
- pub struct LuaTable < ' var , ' lua > {
6
- variable : LoadedVariable < ' var , ' lua >
5
+ pub struct LuaTable < ' var , L > {
6
+ variable : LoadedVariable < ' var , L >
7
7
}
8
8
9
- impl < ' var , ' lua > HasLua < ' lua > for LuaTable < ' var , ' lua > {
9
+ impl < ' var , ' lua , L : HasLua < ' lua > > HasLua < ' lua > for LuaTable < ' var , L > {
10
10
fn use_lua ( & mut self ) -> * mut ffi:: lua_State {
11
11
self . variable . use_lua ( )
12
12
}
13
13
}
14
14
15
15
// while the LuaTableIterator is active, the current key is constantly pushed over the table
16
16
#[ unstable]
17
- pub struct LuaTableIterator < ' var , ' lua , ' table > {
18
- table : & ' table mut LuaTable < ' var , ' lua >
17
+ pub struct LuaTableIterator < ' var , ' table , L > {
18
+ table : & ' table mut LuaTable < ' var , L >
19
19
}
20
20
21
- impl < ' var , ' lua , ' table > HasLua < ' lua > for LuaTableIterator < ' var , ' lua , ' table > {
21
+ impl < ' var , ' lua , ' table , L : HasLua < ' lua > > HasLua < ' lua > for LuaTableIterator < ' var , ' table , L > {
22
22
fn use_lua ( & mut self ) -> * mut ffi:: lua_State {
23
23
self . table . use_lua ( )
24
24
}
25
25
}
26
26
27
- impl < ' var , ' lua > ConsumeRead < ' var , ' lua > for LuaTable < ' var , ' lua > {
28
- fn read_from_variable ( var : LoadedVariable < ' var , ' lua > )
29
- -> Result < LuaTable < ' var , ' lua > , LoadedVariable < ' var , ' lua > >
27
+ impl < ' var , ' lua , L : HasLua < ' lua > > ConsumeRead < ' var , L > for LuaTable < ' var , L > {
28
+ fn read_from_variable ( mut var : LoadedVariable < ' var , L > )
29
+ -> Result < LuaTable < ' var , L > , LoadedVariable < ' var , L > >
30
30
{
31
- if unsafe { ffi:: lua_istable ( var. lua . lua , -1 ) } {
31
+ if unsafe { ffi:: lua_istable ( var. use_lua ( ) , -1 ) } {
32
32
Ok ( LuaTable { variable : var } )
33
33
} else {
34
34
Err ( var)
35
35
}
36
36
}
37
37
}
38
38
39
- impl < ' var , ' lua > LuaTable < ' var , ' lua > {
39
+ impl < ' var , ' lua , L : HasLua < ' lua > > LuaTable < ' var , L > {
40
40
pub fn iter < ' me > ( & ' me mut self )
41
- -> LuaTableIterator < ' var , ' lua , ' me >
41
+ -> LuaTableIterator < ' var , ' me , L >
42
42
{
43
- unsafe { ffi:: lua_pushnil ( self . variable . lua . lua ) } ;
43
+ unsafe { ffi:: lua_pushnil ( self . variable . use_lua ( ) ) } ;
44
44
LuaTableIterator { table : self }
45
45
}
46
46
47
- pub fn get < R : CopyRead < LuaTable < ' var , ' lua > > , I : Index < Lua < ' lua > > > ( & mut self , index : I ) -> Option < R > {
48
- index. push_to_lua ( self . variable . lua ) ;
49
- unsafe { ffi:: lua_gettable ( self . variable . lua . lua , -2 ) ; }
47
+ pub fn get < R : CopyRead < LuaTable < ' var , L > > , I : Index < LuaTable < ' var , L > > > ( & mut self , index : I ) -> Option < R > {
48
+ index. push_to_lua ( self ) ;
49
+ unsafe { ffi:: lua_gettable ( self . use_lua ( ) , -2 ) ; }
50
50
let value = CopyRead :: read_from_lua ( self , -1 ) ;
51
- unsafe { ffi:: lua_pop ( self . variable . lua . lua , 1 ) ; }
51
+ unsafe { ffi:: lua_pop ( self . use_lua ( ) , 1 ) ; }
52
52
value
53
53
}
54
54
55
- pub fn set < I : Index < Lua < ' lua > > , V : Push < Lua < ' lua > > > ( & mut self , index : I , value : V ) {
56
- index. push_to_lua ( self . variable . lua ) ;
57
- value. push_to_lua ( self . variable . lua ) ;
58
- unsafe { ffi:: lua_settable ( self . variable . lua . lua , -3 ) ; }
55
+ pub fn set < I : Index < LuaTable < ' var , L > > , V : Push < LuaTable < ' var , L > > > ( & mut self , index : I , value : V ) {
56
+ index. push_to_lua ( self ) ;
57
+ value. push_to_lua ( self ) ;
58
+ unsafe { ffi:: lua_settable ( self . use_lua ( ) , -3 ) ; }
59
59
}
60
60
61
61
// Obtains or create the metatable of the table
62
- pub fn get_or_create_metatable ( mut self ) -> LuaTable < ' var , ' lua > {
63
- let result = unsafe { ffi:: lua_getmetatable ( self . variable . lua . lua , -1 ) } ;
62
+ pub fn get_or_create_metatable ( mut self ) -> LuaTable < ' var , L > {
63
+ let result = unsafe { ffi:: lua_getmetatable ( self . variable . use_lua ( ) , -1 ) } ;
64
64
65
65
if result == 0 {
66
66
unsafe {
67
- ffi:: lua_newtable ( self . variable . lua . lua ) ;
68
- ffi:: lua_setmetatable ( self . variable . lua . lua , -2 ) ;
69
- let r = ffi:: lua_getmetatable ( self . variable . lua . lua , -1 ) ;
67
+ ffi:: lua_newtable ( self . variable . use_lua ( ) ) ;
68
+ ffi:: lua_setmetatable ( self . variable . use_lua ( ) , -2 ) ;
69
+ let r = ffi:: lua_getmetatable ( self . variable . use_lua ( ) , -1 ) ;
70
70
assert ! ( r != 0 ) ;
71
71
}
72
72
}
@@ -77,22 +77,22 @@ impl<'var, 'lua> LuaTable<'var, 'lua> {
77
77
}
78
78
}
79
79
80
- impl < ' a , ' b , ' c , K : CopyRead < LuaTableIterator < ' a , ' b , ' c > > , V : CopyRead < LuaTableIterator < ' a , ' b , ' c > > >
81
- Iterator < Option < ( K , V ) > > for LuaTableIterator < ' a , ' b , ' c >
80
+ impl < ' a , ' b , ' lua , L : HasLua < ' lua > , K : CopyRead < LuaTableIterator < ' a , ' b , L > > , V : CopyRead < LuaTableIterator < ' a , ' b , L > > >
81
+ Iterator < Option < ( K , V ) > > for LuaTableIterator < ' a , ' b , L >
82
82
{
83
83
fn next ( & mut self )
84
84
-> Option < Option < ( K , V ) > >
85
85
{
86
86
// this call pushes the next key and value on the stack
87
- if unsafe { ffi:: lua_next ( self . table . variable . lua . lua , -2 ) } == 0 {
87
+ if unsafe { ffi:: lua_next ( self . table . use_lua ( ) , -2 ) } == 0 {
88
88
return None
89
89
}
90
90
91
91
let key = CopyRead :: read_from_lua ( self , -2 ) ;
92
92
let value = CopyRead :: read_from_lua ( self , -1 ) ;
93
93
94
94
// removing the value, leaving only the key on the top of the stack
95
- unsafe { ffi:: lua_pop ( self . table . variable . lua . lua , 1 ) } ;
95
+ unsafe { ffi:: lua_pop ( self . table . use_lua ( ) , 1 ) } ;
96
96
97
97
//
98
98
if key. is_none ( ) || value. is_none ( ) {
0 commit comments