... oops, and to belatedly respond to some other questions raiesd below - t_int is much overused in m_pd.h - I'm windering if I can just change them to 'int' without causing any damage?
cheers Miller On Mon, Jun 02, 2014 at 12:03:13PM +0200, IOhannes m zmoelnig via Pd-dev wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > recently, i received a bug-report for the "puredata" Debian-package, > that warned of conflicting declarations of the glist_scalar() function. > > the problem seems to be, that glist_scalar() uses "int argc" for it's > A_GIMME argument in the declaration in g_canvas.c, but uses "t_int > argc" in the function definition in g_scalar.c. > now "t_int" is defined as a "pointer-sized integer", which is a "long > int" on amd64, thus incompatible with the 32bit "int". > > it is often tempting to use "t_int" whenever possible, as it is the > Pd-native integer type. > unfortunately this can (and will) break binary compatibility in some > cases. > > i think it should be *well documented* which types to use. > e.g. the only way to find out how to use A_GIMME is reading the source > code (where we have at least 4 occurences that use "t_int" > (glist_scalar(), curve_new(), plot_new() and drawnumber_new()) and a > lot more (>200) uses of "int". > > also t_listmethod and t_anymethod in m_imp.h seem to suggest that > "int" is the correct type (though "m_imp.h" was historically > considered a "private" header, not meant for documentation). > > i think it's necessary to fix all uses of "t_int argc" to "int argc". > > additionally i think it would be good to: > - - clearly document the function-signature for (A_GIMME) callbacks (and > while doing so, move the various callback-typedefs from m_imp.h to m_pd.h) > > - - split the generic "t_int" type into multiple names, that suggest > their usage. > afaict, the original use of "t_int" is for the dsp process function > (t_perfroutine) , though the name does not suggest anything like this. > probably we should move to a new (probably even more pointer-like) type > typedef t_perfarg void*; > and replace all other uses of t_int (e.g. the return value of > "atom_getint()" or the struct-member "t_resample.upsample") by other > types, e.g. "int", > for compatibility reasons, we might need to keep the two (or more) > types the same size, but they should be separated on a semantic level. > > > msdr > IOhannes > > PS: it's pure coincidence that we had this recent conversation on > pd-list, where argc was declared "short". > > [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=750168 > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1 > Comment: Using GnuPG with Icedove - http://www.enigmail.net/ > > iQIcBAEBCAAGBQJTjEvdAAoJELZQGcR/ejb43zYQAItRxoL1PTtTVOGZsbP8ZPqs > prt/bGDQRF9LbyNGGAvLjlQEVIgNTaVf51m/pIoFngif3b9LuBRSPWjjpWirwQeC > Xu9wRMzNucuWmxCTAlxqUYFZn30Yl5aqw2KE7nDdo372lY8S130wbhopwRT/i/jX > fEQpQqbo3Ub6kRRbHmKbCXAZhbS8APgJiJxZPRYHetkDzqnksHDEi0PrQi+R/5Ko > UkoefV7QsTl9uZAEw22HUlmShdSaigh7EMqezWHfXomqu2qU/T6/ho8fF8y65V45 > PeE8aXqEOvFW4tKsdQ4i8cIBu+SNxEWNMtTW3ETBxUsBQnmJCvS7/GS4E4anCWzf > eA9FmzB7OEyn3LGaZJaON/hAzuL67ICdQJXQvmYkSmr/M1HA5yUj98HTtidLQo/6 > LvxvJa0n+EzK4Xrnr7Janna2Un8ySa94L36DV9DpgXS+7NvwUEAfVIBMMfrm8x+i > YS7AKjQABN0FukpdeXFTIr4D+eSr0C2Xsk6CcUoAlFa79i1MY2p0EkS7Lj6pXBuv > Oo7UMR1ZDCubE+I1xTvGqs0+SkHwuq/ohAFDcA9ZskD5jtNfM1DwAEEOHMvyJiHT > 8Q1xJ646ZrSGM12RceRJUEzv2ROexYHXAkm/bfWo883DjGnMlQgaHUQC3/MEdk3p > GFrPBNIK5wgf7wned5N7 > =whxF > -----END PGP SIGNATURE----- > > _______________________________________________ > Pd-dev mailing list > [email protected] > http://lists.puredata.info/listinfo/pd-dev _______________________________________________ Pd-dev mailing list [email protected] http://lists.puredata.info/listinfo/pd-dev
