[PD] t_scalar member sc_vec
Miller Puckette
msp at ucsd.edu
Fri Feb 21 20:30:19 CET 2014
It's more efficient (especially in terms of memory) to keep the two
things contiguously in memory than to have to chase an additional pointer
to the array. In C it looks almost the same (arrays and their pointers are
both specified by naming the arraym but "sizeof" will act differently for
instance.
And yes, the "growable" part of a structure has to be the last thing for it to work.
I learned how to do this in 1981 but scalars only go back to around 1997.
cheers
M
On Fri, Feb 21, 2014 at 02:23:43PM -0500, Jonathan Wilkes wrote:
> On 02/21/2014 09:00 AM, Ivica Bukvic wrote:
> >
> >Because this way you can reference data points with sc_vec+n as
> >opposed to dealing with single or double linked lists (since
> >sc_vec can be an array).
> >
>
> If sc_vec is a pointer then you can access data points using the
> same technique, which is pointer math after all.
>
> For everyone's amusement, here's an exercise in my own rank
> speculation: something about a t_word array aligning on boundaries
> in a way that you wouldn't be able to guarantee with a pointer to a
> t_word. So if you can guarantee there won't be padding you save
> memory in 1981.
>
> Is it something like that, Miller?
>
> And do scalars actually go back to 1981, or that's just around the
> time you learned the technique?
>
> Also-- this technique means that for sc_vec[1] its position inside
> the struct suddenly become relevant. That is, if you put
> sc_template as the last member field you'd be indexing into the
> wrong place when you tried to read/write sc_vec data. Is that
> right?
>
> -Jonathan
>
> >On Feb 21, 2014 7:26 AM, "Charles Goyard" <cg at fsck.fr
> ><mailto:cg at fsck.fr>> wrote:
> >
> > Hi,
> >
> > Sorry for this question, but why isn't sc_vec a good old pointer ?
> >
> > > t_gobj sc_gobj; /* header for graphical object */
> > > t_symbol *sc_template; /* template name (LATER replace with
> > pointer) */
> > > t_word sc_vec[1]; /* indeterminate-length array of
> > words */
> > > } t_scalar;
> > >
> > > How is a static t_word array of size 1 an indeterminate-length
> > array? Is its placement as the last member of the struct required?
> >
> > _______________________________________________
> > Pd-list at iem.at <mailto:Pd-list at iem.at> mailing list
> > UNSUBSCRIBE and account-management ->
> > http://lists.puredata.info/listinfo/pd-list
> >
> >
> >
> >_______________________________________________
> >Pd-list at iem.at mailing list
> >UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
>
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
More information about the Pd-list
mailing list