Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- exports.allocate = function(size, fillFunc)
- {
- var
- data = new Array(size)
- , pushPtr = 0
- , full = false
- var obj = {
- push : function (item)
- {
- data[pushPtr] = item
- pushPtr += 1
- // console.log("Pushing: size = " + data.length + " pushPtr = " + pushPtr + "Memory: " + logMemory() + "\n")
- if (pushPtr >= data.length)
- {
- full = true
- pushPtr = 0
- }
- }
- , all : function ()
- {
- if (full)
- {
- return data.slice(pushPtr).concat(data.slice(0, pushPtr))
- }
- else
- {
- return data.slice(0, pushPtr)
- }
- }
- , get : function (index)
- {
- var pushedCount = full ? data.length : pushPtr
- if (index < 0 || index >= pushedCount)
- {
- return null
- }
- var i = pushPtr - 1 - index
- if (full)
- {
- if (i >= 0)
- {
- return data[i]
- }
- else
- {
- return data[i + data.length]
- }
- }
- else
- {
- if (i >= 0)
- {
- return data[i]
- }
- else
- {
- return null
- }
- }
- }
- }
- if (fillFunc !== undefined)
- {
- for (i = 0; i < size; i++)
- {
- obj.push(fillFunc(i))
- }
- }
- return obj
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement