diff options
author | nat-goodspeed <nat@lindenlab.com> | 2024-03-01 08:55:32 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-01 08:55:32 -0500 |
commit | de71c6378e60c0f0ea0c5537729f052da8513b19 (patch) | |
tree | b92852f9c9b790fbae1b199c2dd835852ccb79cd /indra/newview/scripts/lua | |
parent | 777586a1865b496f8bfea9651afbd481ea23b4f7 (diff) | |
parent | 80c157661b694b0e38716b34dd8015cbf646186e (diff) |
Merge pull request #905 from secondlife/require-tweaks
Refactor `require()` to make it easier to reason about Lua stack usage.
Diffstat (limited to 'indra/newview/scripts/lua')
-rw-r--r-- | indra/newview/scripts/lua/Queue.lua | 40 | ||||
-rw-r--r-- | indra/newview/scripts/lua/testmod.lua | 2 |
2 files changed, 42 insertions, 0 deletions
diff --git a/indra/newview/scripts/lua/Queue.lua b/indra/newview/scripts/lua/Queue.lua new file mode 100644 index 0000000000..e178ad9969 --- /dev/null +++ b/indra/newview/scripts/lua/Queue.lua @@ -0,0 +1,40 @@ +-- from https://create.roblox.com/docs/luau/queues#implementing-queues + +local Queue = {} +Queue.__index = Queue + +function Queue.new() + local self = setmetatable({}, Queue) + + self._first = 0 + self._last = -1 + self._queue = {} + + return self +end + +-- Check if the queue is empty +function Queue:IsEmpty() + return self._first > self._last +end + +-- Add a value to the queue +function Queue:Enqueue(value) + local last = self._last + 1 + self._last = last + self._queue[last] = value +end + +-- Remove a value from the queue +function Queue:Dequeue() + local first = self._first + if self:IsEmpty() then + return nil + end + local value = self._queue[first] + self._queue[first] = nil + self._first = first + 1 + return value +end + +return Queue diff --git a/indra/newview/scripts/lua/testmod.lua b/indra/newview/scripts/lua/testmod.lua new file mode 100644 index 0000000000..60f7f80db1 --- /dev/null +++ b/indra/newview/scripts/lua/testmod.lua @@ -0,0 +1,2 @@ +print('loaded scripts/lua/testmod.lua') +return function () return 'hello from scripts/lua/testmod.lua' end |