A pool object allows you to manually allocate and free objects from a memory pool. More...
| Constructors: |
|
| Methods: |
A pool can be used instead of New in situations where you want to minimize garbage collection.
Import brl.poolClass Actor Function Create:Actor( x:Float,y:Float ) Return _pool.Allocate().Init( x,y ) End Method Destroy:Void() _pool.Free( Self ) End Method IsDead:Bool() Return _t=0 'timeout? End Method Update:Void() If _t>0 _t-=1 'update timeout End Private Field _x:Float Field _y:Float Field _t:Int Global _pool:=New Pool<Actor>( 1000 ) Method Init:Actor( x:Float,y:Float ) _x=x _y=y _t=Rnd(20,100) 'random timeout Return Self End EndFunction UpdateActors:Void( actors:Stack<Actor> ) 'Update all actors For Local i:=0 Until actors.Length actors.Get(i).Update() Next 'Flush dead actors, compacting stack as we go... Local alive:=0 For Local i:=0 Until actors.Length Local actor:=actors.Get( i ) If actor.IsDead() Print "Dead!" actor.Destroy() Continue Endif actors.Set alive,actor alive+=1 End actors.Length=alive 'v70 only...EndFunction Main() Local actors:=New Stack<Actor> For Local i:=0 Until 100 actors.Push Actor.Create( Rnd(100),Rnd(100) ) End While actors.Length UpdateActors actors Wend Print "Done!"EndAllocates an object from the pool.
If the pool is empty, an object created using New is returned instead.
Adds an object to the pool. This object is then available for future use by Allocate.