On Fri, May 2, 2014 at 4:19 PM, Ludovic Courtès <l...@gnu.org> wrote: > Doug Evans <xdj...@gmail.com> skribis: > >> On Fri, May 2, 2014 at 4:44 AM, Ludovic Courtès <l...@gnu.org> wrote: >>> Doug Evans <xdj...@gmail.com> skribis: >>> >>>> While function declarations are markable as being internal/external in >>>> published headers (SCM_INTERNAL vs SCM_API), macros are not. >>> >>> Internal macros are marked by a naming convention: they are prefixed by >>> ‘SCM_I’. >> >> Hi. Sorry, catching up on mail. >> >> So this means that struct.h:SCM_STRUCT_* are ok to use by apps, right? > > You got me. ;-) > > These ones are not documented, and some of them are clearly too > low-level and expose too many implementation details (flags, indexes, > etc.) > > ‘SCM_STRUCTP’, ‘SCM_STRUCT_SLOT_REF’, and a few others may be OK, but > there are equivalent public functions anyway, so it’s better to use > them.
Thing is, the public functions (scm_struct_ref/set_x) are not equivalent (to SCM_STRUCT_SLOT_*). Plus the public "slot accessing" functions use the SCM_STRUCT_DATA interface. :-) SCM_STRUCT_SLOT_* isn't used at all in struct.c. $ grep SCM_STRUCT_SLOT struct.c | wc 0 0 0 > > I’m not sure what to do for this particular header. > > Ludo’.