feat: Lua-style array append support in Bytearray

This commit is contained in:
MihailRis 2025-04-12 12:32:31 +03:00
parent 303e861fbb
commit d8feff56c0
2 changed files with 27 additions and 15 deletions

8
dev/tests/bytearray.lua Normal file
View File

@ -0,0 +1,8 @@
local arr = Bytearray()
assert(#arr == 0)
for i=1,10 do
arr[i] = 10 - i
assert(#arr == i)
assert(arr[i] == 10 - i)
end

View File

@ -32,8 +32,7 @@ local function count_elements(b)
return elems
end
local bytearray_methods = {
append=function(self, b)
local function append(self, b)
local elems = count_elements(b)
if self.size + elems > self.capacity then
grow_buffer(self, elems)
@ -46,7 +45,10 @@ local bytearray_methods = {
end
end
self.size = self.size + elems
end,
end
local bytearray_methods = {
append=append,
insert=function(self, index, b)
local elems = count_elements(b)
if self.size + elems >= self.capacity then
@ -102,7 +104,9 @@ local bytearray_mt = {
return self.bytes[key - 1]
end,
__newindex = function(self, key, value)
if key <= 0 or key > self.size then
if key == self.size + 1 then
return append(self, value)
elseif key <= 0 or key > self.size then
return
end
self.bytes[key - 1] = value