Added two new stack disciplines to LuaStack
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user