Get rid of getfield/setfield

This commit is contained in:
2021-02-10 16:47:45 -05:00
parent 3883f86dee
commit eefe1bd58a
5 changed files with 63 additions and 61 deletions

View File

@@ -143,8 +143,8 @@ LuaDefine(queue_create, "c") {
LuaStack LS(L, queue);
LS.newtable(queue);
LS.setfield(queue, "head", 1000000);
LS.setfield(queue, "tail", 1000000);
LS.rawset(queue, "head", 1000000);
LS.rawset(queue, "tail", 1000000);
return LS.result();
}
@@ -153,9 +153,9 @@ LuaDefine(queue_push, "c") {
lua_Integer head;
LuaStack LS(L, queue, elt);
LS.getfield(head, queue, "head");
LS.rawget(head, queue, "head");
LS.rawset(queue, head, elt);
LS.setfield(queue, "head", head+1);
LS.rawset(queue, "head", head+1);
return LS.result();
}
@@ -165,14 +165,14 @@ LuaDefine(queue_pop, "c") {
lua_Integer head, tail;
LuaStack LS(L, queue, elt);
LS.getfield(tail, queue, "tail");
LS.getfield(head, queue, "head");
LS.rawget(tail, queue, "tail");
LS.rawget(head, queue, "head");
if (head == tail) {
LS.set(elt, LuaNil);
} else {
LS.rawget(elt, queue, tail);
LS.rawset(queue, tail, LuaNil);
LS.setfield(queue, "tail", tail + 1);
LS.rawset(queue, "tail", tail + 1);
}
return LS.result();
}
@@ -183,8 +183,8 @@ LuaDefine(queue_size, "c") {
lua_Number head, tail;
LuaStack LS(L, queue, size);
LS.getfield(head, queue, "head");
LS.getfield(tail, queue, "tail");
LS.rawget(head, queue, "head");
LS.rawget(tail, queue, "tail");
LS.set(size, head - tail);
return LS.result();
}
@@ -196,8 +196,8 @@ LuaDefine(queue_nth, "c") {
LuaStack LS(L, queue, n, elt);
nth = LS.ckinteger(n) - 1;
LS.getfield(head, queue, "head");
LS.getfield(tail, queue, "tail");
LS.rawget(head, queue, "head");
LS.rawget(tail, queue, "tail");
if ((nth < 0) || (nth + tail >= head)) {
luaL_error(L, "index out of range");
}