Doomhammer
Bob Kotick - Gamers' corporate spoilsport No. 1
- Reaction score
- 67
I'm in need of a way to group a large amount of structs, so I can handle them like a unit group. Precise solutions are highly appreciated
or you use an integer array, which stores the ids of used structs, and when a struct pops free, it moves the last id to the position of the destroyed struct in the array... so always the first elements are used, and you only need a loop and check, if there is a struct saved behind the id...
that's pretty much what I want to go for. The only question here is: how to make that as smooth as possible, so to avoid "defragmentation" inside the struct array due to gaps of structs popping free in an uncoordinated manner (e.g. structs 110-200 become free, a few cycles later it's structs 900-990). How check that efficiently?
struct node
sometype value
node next=0
static method create takes sometype s, node nx returns node
local node r=node.allocate()
set r.next=nx
set r.value=s
return s
endmethod
endstruct
globals
node mylinkedlist=0
endglobals
function add takes sometype x returns nothing
set mylinkedlist = node.create(x,mylinkedlist)
endfunction
function iterationproof takes nothing returns nothing
local node p=mylinkedlist
local node q=0
loop
exitwhen (p==0)
if process(p.v) then //process takes a look to the value and if returns false, removes it from the list...
set q=p
else
if(q!=0) q.next=p.next
endif
set p=p.next
endloop
endfunction
Well first of all you can't have more than 8190 active structs
you are supposed to implement your own process... the code was a sample not something that works out of the boxThanks a lot.
I think I get the idea.
like that the code causes some compile errors; e.g.
undeclared function process