[PD] outputting arbitrary size list

Martin Peach via Pd-list pd-list at lists.iem.at
Fri Jun 6 23:49:31 CEST 2014


On 2014-06-06 15:53, Jonathan Wilkes via Pd-list wrote:
> Martin,
> Thanks for the link.  It looks like you are setting a default size which can be overridden by an argument from the user.  But for what I want, the user needs to be shielded completely from that implementation detail.
>
> For example, let's say I make a method where the user queries the objects contained within a bounding box (though I haven't implemented it yet):
>
> [selection 0 0 500 500(
> |
> [canvasinfo]
> |
> [print]  <-arbitrary length list of object indices for objects contained within the bbox (0 0 500 500)
>
> I don't know ahead of time how many objects may be in the canvas, so I have no way to judge what the size of the list should be.  I could just set a default size of 500 or 1000 and reallocate as necessary, but that gets kind of ugly.
>

Well you probably won't have millions of objects in a patch and memory 
is cheap. It's a tradeoff between wasting memory and wasting time. In my 
experience, reallocating memory can sometimes take a long time, causing 
glitches in the audio and other undesirable effects.
A compromise would be to allocate say 65kB by default and then add that 
much each time the list overflows. Then you have to release the unused 
memory after a while. But definitely, allocating one atom at a time is 
going to slow Pd right down and maybe even crash it.
You could also load the patch the object is instantiated into and count 
the number of objects in the .pd file and use that as the maximum, but 
of course that doesn't work if it hasn't been saved yet.
Also the number of pixels in the selection rectangle will be more than 
the number of objects by some ratio unless you're recursively counting 
subpatches as well.

Martin



> -Jonathan
>
> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
>




More information about the Pd-list mailing list