[m-rev.] diff: implement typeinfo_is_variable in C#

Fergus Henderson fjh at cs.mu.OZ.AU
Fri Nov 14 00:51:16 AEDT 2003


On 13-Nov-2003, Peter Ross <pro at missioncriticalit.com> wrote:
> -:- pragma foreign_proc("MC++",
> +:- pragma foreign_proc("C#",
>  	typeinfo_is_variable(TypeInfo::in, VarNum::out), [promise_pure], "
> -	SUCCESS_INDICATOR = (dynamic_cast<MR_Word>(TypeInfo) == NULL);
> -	if (SUCCESS_INDICATOR) {
> -		VarNum = System::Convert::ToInt32(TypeInfo);
> +	try {
> +		SUCCESS_INDICATOR = true;
> +		VarNum = System.Convert.ToInt32(TypeInfo);

It would make more sense to swap the order of those two lines,
so that the line SUCCESS_INDICATOR = true is only executed in the
case where the cast succeeds, not in the case where it fails.
(The efficiency difference is minor, but I think it would be
easier to read this way.)

-- 
Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.
--------------------------------------------------------------------------
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