use Bytearray in lua::pushvalue for byte arrays

This commit is contained in:
MihailRis 2025-01-28 13:03:38 +03:00
parent e3c86cd1da
commit 79f6dcb171
3 changed files with 5 additions and 7 deletions

View File

@ -23,6 +23,7 @@ namespace lua {
public:
LuaBytearray(size_t capacity);
LuaBytearray(std::vector<ubyte> buffer);
LuaBytearray(const ubyte* data, size_t size);
virtual ~LuaBytearray();
const std::string& getTypeName() const override {

View File

@ -60,13 +60,7 @@ int lua::pushvalue(State* L, const dv::value& value) {
break;
case value_type::bytes: {
const auto& bytes = value.asBytes();
createtable(L, 0, bytes.size());
size_t size = bytes.size();
for (size_t i = 0; i < size;) {
pushinteger(L, bytes[i]);
i++;
rawseti(L, i);
}
newuserdata<LuaBytearray>(L, bytes.data(), bytes.size());
break;
}
}

View File

@ -14,6 +14,9 @@ LuaBytearray::LuaBytearray(size_t capacity) : buffer(capacity) {
LuaBytearray::LuaBytearray(std::vector<ubyte> buffer) : buffer(std::move(buffer)) {
}
LuaBytearray::LuaBytearray(const ubyte* data, size_t size) : buffer(data, data + size) {
}
LuaBytearray::~LuaBytearray() {
}