[m-rev.] for review: pragma foreign_export_enum

Peter Wang wangp at students.csse.unimelb.edu.au
Wed Jul 25 11:03:07 AEST 2007


On 2007-07-25, Julien Fischer <juliensf at csse.unimelb.edu.au> wrote:
> 
>  On Tue, 24 Jul 2007, Peter Wang wrote:

> >>  +:- pred build_overrides_map(sym_name::in, prog_context::in,
> >>  +    format_components::in, assoc_list(sym_name, string)::in,
> >>  +    maybe(map(sym_name, string))::out,
> >>  +    list(error_spec)::in, list(error_spec)::out) is det.
> >
> > I suggest renaming that.
> 
>  Which?  And what do you suggest calling it?

build_export_enum_overrides_map?

> >>  + +:- pred build_export_enum_name_map(format_components::in,
> >>  +    foreign_language::in, sym_name::in, arity::in, prog_context::in,
> >>  +    string::in, map(sym_name, string)::in, list(constructor)::in,
> >>  +    maybe(map(sym_name, string))::out,
> >>  +    list(error_spec)::in, list(error_spec)::out) is det.
> >>  +
> 
>  ...
> 
> >>  Index: compiler/mlds.m
> >>  ===================================================================
> >>  RCS file: /home/mercury1/repository/mercury/compiler/mlds.m,v
> >>  retrieving revision 1.150
> >>  diff -u -r1.150 mlds.m
> >>  --- compiler/mlds.m	15 Jun 2007 12:12:30 -0000	1.150
> >>  +++ compiler/mlds.m	12 Jul 2007 05:25:04 -0000
> >
> >>  @@ -381,7 +382,8 @@
> >>                   % XXX These only work for the C backend because
> >>  initialisers
> >>                   % and finalisers do not (yet) work for the other 
> >> backends.
> >>                   init_preds          :: list(string),
> >>  -                final_preds         :: list(string)
> >>  +                final_preds         :: list(string),
> >>  +                exported_enums      :: list(mlds_exported_enum)
> >
> > Mention that these are in reverse order (if they are).
> 
>  The list of initise and finalise preds are the correct way around at
>  this point.  For exported enumerations the order is not important - although 
>  they too are around the "right", i.e the order in which they
>  occured in the source file, way here too.
> 

Ok, I thought that I saw a list.reverse on the exported enums somewhere.

> 
> >>  +The body of each of these macros expands to a value that is identical
> >>  +to that of the constructor to which the symbolic name corresponds in
> >>  +the mapping established by the @samp{pragma foreign_export_enum}
> >>  +declaration.
> >>  +
> >>  +As noted in the @pxref{C data passing conventions}, the type of these
> >>  +values is @samp{MR_Word}.
> >>  +
> >>  +The default mapping used by @samp{pragma foreign_export_enum}
> >>  +declarations for  C is to use the Mercury constructor name as the
> >>  +base of the symbolic name.
> >
> > Add an example here.
> 
>  Ok.
> 
>  	For example, the base of the the symbolic name for the
>  	Mercury constructor @samp{foo} would be @code{foo}.

It wasn't clear to me where the "base" fits in.  It comes after the
prefix, and there's no other components in the name.

> > The rest is probably fine.
> 
>  Probably?

Surely fine :-)

Peter
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list