summaryrefslogtreecommitdiffstats
path: root/lua.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lua.rs')
-rw-r--r--lua.rs46
1 files changed, 34 insertions, 12 deletions
diff --git a/lua.rs b/lua.rs
index 7a1fc37..bff1a2b 100644
--- a/lua.rs
+++ b/lua.rs
@@ -2,8 +2,27 @@
#[crate_type = "lib"];
-pub enum lua_State {}
-enum lua_CFunction {}
+pub struct State {
+ priv state: *lua_State,
+}
+
+impl State {
+ fn close(self) {
+ close(self)
+ }
+
+ fn openlibs(self) {
+ openlibs(self)
+ }
+
+ fn loadstring(self, string: &str) -> Status {
+ loadstring(self, string)
+ }
+
+ fn call(self, nargs: int, nresults: int) {
+ call(self, nargs, nresults)
+ }
+}
pub enum Status {
OK = 0,
@@ -15,21 +34,21 @@ pub enum Status {
ERRERR = 6,
}
-pub fn newstate() -> *lua_State {
- lua::luaL_newstate()
+pub fn newstate() -> State {
+ State { state: lua::luaL_newstate() }
}
-pub fn close(state: *lua_State) {
- lua::lua_close(state)
+pub fn close(state: State) {
+ lua::lua_close(state.state)
}
-pub fn openlibs(state: *lua_State) {
- lua::luaL_openlibs(state)
+pub fn openlibs(state: State) {
+ lua::luaL_openlibs(state.state)
}
-pub fn loadstring(state: *lua_State, string: &str) -> Status {
+pub fn loadstring(state: State, string: &str) -> Status {
let status = do str::as_c_str(string) |c_string| {
- lua::luaL_loadstring(state, c_string)
+ lua::luaL_loadstring(state.state, c_string)
};
match status {
0 => OK,
@@ -40,9 +59,9 @@ pub fn loadstring(state: *lua_State, string: &str) -> Status {
}
}
-pub fn call(state: *lua_State, nargs: int, nresults: int) {
+pub fn call(state: State, nargs: int, nresults: int) {
lua::lua_callk(
- state,
+ state.state,
nargs as libc::c_int,
nresults as libc::c_int,
0 as libc::c_int,
@@ -50,6 +69,9 @@ pub fn call(state: *lua_State, nargs: int, nresults: int) {
)
}
+enum lua_State {}
+enum lua_CFunction {}
+
extern mod lua {
fn luaL_newstate() -> *lua_State;
fn lua_close(state: *lua_State);