[MINC-development] [kteich@nmr.mgh.harvard.edu: [Fsdev] Mac OS X, MNI, and Point]

Robert VINCENT minc-development@bic.mni.mcgill.ca
Thu, 31 Mar 2005 10:37:10 -0500


Hi Steve,

That's a fine suggestion.  I'll change it before the "real" release.

Thanks,

	-bert

On Thu, 31 Mar 2005, Steve M. Robbins wrote:

> On Wed, Mar 16, 2005 at 11:27:04AM -0500, Robert VINCENT wrote:
> > Hi,
> >
> > I will be releasing MINC 1.4 within a few days, which will hopefully
> > provide a solution.  I tried to prefix all typedefs and #defines
> > with "VIO_",
>
> Yay!!!
>
> > but then in each header there is a block that says:
> >
> > #ifndef MINC_PLAY_NICE
> > typedef VIO_<type> <type>
> > #define VIO_<const> <const>
> > #endif
> >
> > This should be backward compatible, but if you include <volume_io.h> with
> > the new magic "MINC_PLAY_NICE" macro defined, you won't get your namespace
> > polluted with Point, X, Y, Z, etc.
>
> I think the idea of providing a backwards compatibility mode is a good
> one.  However, if I may nitpick, MINC_PLAY_NICE doesn't strike me as
> an intuitive name for this mode.  What about something like
> VIO_USE_NAMESPACE?
>
> Incidentally, many folks prefer to test that a symbol is set to
> "true" rather than just set; i.e. use
>
>     #if !VIO_USE_NAMESPACE
>     typedef ...
>     #endif
>
> Then the user can compile with -DVIO_USE_NAMESPACE=0
> or -DVIO_USE_NAMESPACE=1.  Symbols not defined evaluate to "false",
> so the default behaviour is the backwards-compatible mode of
> NOT using the VIO namespace.
>
> When you want to switch the out-of-the-box behaviour, you
> could put
>
>     #ifndef VIO_USE_NAMESPACE
>     #define VIO_USE_NAMESPACE 1
>     #endif
>
> into volume_io.h while still allowing the programmer to
> explicitly choose the mode.
>
>
> Regards,
> -Steve
> _______________________________________________
> MINC-development mailing list
> MINC-development@bic.mni.mcgill.ca
> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-development
>