[m-rev.] for review: MR_DEFINE_ENUM_CONST
Tyson Dowd
trd at cs.mu.OZ.AU
Wed May 30 17:25:03 AEST 2001
On 30-May-2001, Fergus Henderson <fjh at cs.mu.OZ.AU> wrote:
> On 30-May-2001, David Jeffery <dgj at cs.mu.OZ.AU> wrote:
> > Index: runtime/mercury_tags.h
> > ===================================================================
> > RCS file: /home/staff/zs/imp/mercury/runtime/mercury_tags.h,v
> > retrieving revision 1.11
> > diff -u -t -r1.11 mercury_tags.h
> > --- runtime/mercury_tags.h 2001/03/18 23:10:13 1.11
> > +++ runtime/mercury_tags.h 2001/05/30 05:28:03
> > @@ -137,4 +137,23 @@
> >
> > #endif
> >
> > +/*
> > +** Convert an enumeration declaration into one which assigns the same
> > +** values to the enumeration constants as Mercury's tag allocation scheme
> > +** assigns. (This is necessary because in .rt grades Mercury enumerations are
> > +** not assigned the same values as 'normal' C enumerations).
> > +**
> > +*/
> > +#ifdef MR_RESERVE_TAG
> > + #define MR_CONVERT_C_ENUM_CONSTANT(x) \
> > + MR_mkword(MR_mktag(MR_FIRST_UNRESERVED_RAW_TAG), MR_mkbody(x))
> > +#else
> > + #define MR_CONVERT_C_ENUM_CONSTANT(x) (x)
> > +#endif
> > +
> > +#define MR_DEFINE_ENUM_CONST(x) \
> > + MR_PASTE2(x, _val), \
> > + x = MR_CONVERT_C_ENUM_CONSTANT(MR_PASTE2(x, _val)), \
> > + MR_PASTE2(x, _dummy) = MR_PASTE2(x, _val)
>
> I think you might as well put the MR_DEFINE_ENUM_CONST() inside the
> #ifdef too, for the same reason that MR_CONVERT_C_ENUM_CONSTANT is
> inside the #ifdef: making it easier to understand what happens in the
> usual case. In the #else case it can be just
>
> #define MR_DEFINE_ENUM_CONST(x) (x)
>
> can't it?
>
> I think it might be slightly clearer to name MR_DEFINE_ENUM_CONST
> as MR_DEFINE_MERCURY_ENUM_CONST.
>
> Otherwise that change looks fine -- thanks.
A line of explanation at what the _val and _dummy do would be good too.
--
Tyson Dowd #
# Surreal humour isn't everyone's cup of fur.
trd at cs.mu.oz.au #
http://www.cs.mu.oz.au/~trd #
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list