Added two new stack disciplines to LuaStack

This commit is contained in:
2023-04-06 20:12:03 -04:00
parent b8df2bbc89
commit 7f000bc0fd
26 changed files with 401 additions and 271 deletions

View File

@@ -12,14 +12,14 @@ class DeserializeError {
class Deserializer {
LuaVar id_to_value_;
LuaStack LS_;
LuaOldStack LS_;
eng::string &error_;
StreamBuffer *sb_;
int next_id_;
void deserialize_table_r(LuaSlot target) {
LuaVar key, val;
LuaStack LS(LS_.state(), key, val);
LuaOldStack LS(LS_.state(), key, val);
LS.newtable(target);
LS.rawset(id_to_value_, next_id_++, target);
bool hasmeta = sb_->read_bool();
@@ -104,7 +104,7 @@ class Deserializer {
}
public:
Deserializer(LuaStack &LS0, LuaSlot val, StreamBuffer *sb, eng::string &error) :
Deserializer(LuaCoreStack &LS0, LuaSlot val, StreamBuffer *sb, eng::string &error) :
LS_(LS0.state(), id_to_value_), error_(error), sb_(sb), next_id_(1) {
LS_.newtable(id_to_value_);
int top = lua_gettop(LS_.state());
@@ -137,14 +137,14 @@ public:
class Serializer {
LuaVar lookup_;
LuaVar value_to_id_;
LuaStack LS_;
LuaOldStack LS_;
eng::string &error_;
StreamBuffer *sb_;
int next_id_;
void serialize_table_r(LuaSlot tab) {
LuaVar key, val;
LuaStack SLS(LS_.state(), key, val);
LuaOldStack SLS(LS_.state(), key, val);
sb_->write_uint8(LUA_TT_GENERAL);
SLS.getmetatable(val, tab);
if (SLS.isnil(val)) {
@@ -265,7 +265,7 @@ class Serializer {
}
public:
Serializer(LuaStack &LS0, LuaSlot val, StreamBuffer *sb, eng::string &error) :
Serializer(LuaCoreStack &LS0, LuaSlot val, StreamBuffer *sb, eng::string &error) :
LS_(LS0.state(), lookup_, value_to_id_), error_(error), sb_(sb), next_id_(1) {
LS_.newtable(value_to_id_);
sb_->write_uint16(0xD096);
@@ -274,13 +274,13 @@ public:
}
};
eng::string serialize_lua(LuaStack &LS0, LuaSlot val, StreamBuffer *sb) {
eng::string serialize_lua(LuaCoreStack &LS0, LuaSlot val, StreamBuffer *sb) {
eng::string error;
Serializer sz(LS0, val, sb, error);
return error;
};
eng::string deserialize_lua(LuaStack &LS0, LuaSlot val, StreamBuffer *sb) {
eng::string deserialize_lua(LuaCoreStack &LS0, LuaSlot val, StreamBuffer *sb) {
eng::string error;
Deserializer dsz(LS0, val, sb, error);
if (!error.empty()) {
@@ -328,7 +328,7 @@ LuaDefine(table_serialize, "value",
"|") {
LuaArg value;
LuaRet str;
LuaStack LS(L, value, str);
LuaOldStack LS(L, value, str);
StreamBuffer sb;
eng::string error = serialize_lua(LS, value, &sb);
if (!error.empty()) {
@@ -347,7 +347,7 @@ LuaDefine(table_deserialize, "binary",
"|") {
LuaArg str;
LuaRet value;
LuaStack LS(L, value, str);
LuaOldStack LS(L, value, str);
std::string_view s = LS.ckstringview(str);
StreamBuffer sb(s);
eng::string error = deserialize_lua(LS, value, &sb);