luaur_vm/functions/
str_reverse.rs1use crate::functions::lua_l_buffinitsize::lua_l_buffinitsize;
6use crate::functions::lua_l_checklstring::lua_l_checklstring;
7use crate::functions::lua_l_pushresultsize::lua_l_pushresultsize;
8use crate::records::lua_l_strbuf::LuaLStrbuf;
9use crate::type_aliases::lua_state::lua_State;
10use core::ffi::c_int;
11
12pub fn str_reverse(L: *mut lua_State) -> c_int {
13 unsafe {
14 let mut len: usize = 0;
15 let s = lua_l_checklstring(L, 1, &mut len);
16
17 let mut b: LuaLStrbuf = LuaLStrbuf {
18 p: core::ptr::null_mut(),
19 end: core::ptr::null_mut(),
20 L: core::ptr::null_mut(),
21 storage: core::ptr::null_mut(),
22 buffer: [0; 512],
23 };
24 let ptr = lua_l_buffinitsize(L, &mut b, len);
25
26 for i in 0..len {
27 *ptr.add(i) = *s.add(len - 1 - i);
28 }
29
30 lua_l_pushresultsize(&mut b, len);
31 1
32 }
33}