[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