comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <spam@spam.com>
Subject: Re: How to Emulate C++ Macro with Static Local Variable?
Date: Tue, 30 Sep 2003 01:32:55 GMT
Date: 2003-09-30T01:32:55+00:00	[thread overview]
Message-ID: <b35eb.8293$RW4.197@newsread4.news.pas.earthlink.net> (raw)
In-Reply-To: <u8yo7v36h.fsf@sandia.gov>

taashlo@sandia.gov wrote:

> Jeffrey Carter <spam@spam.com> writes:
> 
>>>1) Use a unique ID for each call.  But this turns into a maintenance
>>>nightmare when you get a few hundred calls or more.
>>>2) Use the return address of the call.  But there was a short
>>>discussion
>>>about how Ada doesn't currently have a way of accessing the return
>>>address of a subprogram.
>>
>>3. Use a unique instantiation of a generic package for each call. The
>>instantiations of the package must be at a nesting level that ensures
>>that they will exist for the entire lifetime of the executable region
>>in which they are used.
> 
> Won't a unique instantiation require a unique name?  This is the same
> problem with item 1) above.  A single unique instantiation is no
> problem, but try a thousand instantiations whose associated function
> calls are scattered across fifty files.  Where using the wrong
> instantiation can lead to subtle and difficult-to-reproduce errors.
> This is not a solution that I'd voluntarily aim for.

We've gone from hundreds to thousands now? I can play that game, too. If 
you use millions of identical calls in your code, no one can maintain 
it, no matter what language or technique you use.

There are significant differences between using a unique ID and a unique 
instantiation name. With IDs you have to add new IDs and modify the code 
that interprets the ID as well as insert the new call for a new 
location. With an instantiation you add the new instantiation and the 
new call. You need never touch the existing code except to delete a 
call, and that, of course, is true regardless of the technique used. 
With a good process for choosing the next instantiation name, you'll 
never create a problem.

All this is sort of irrelevant, though. We don't know what you're trying 
to accomplish, just a technique you're trying to use. Without that 
knowledge, we can't really tell how to advise you.

-- 
Jeff Carter
"You've got the brain of a four-year-old boy,
and I bet he was glad to get rid of it."
Horse Feathers
47




  reply	other threads:[~2003-09-30  1:32 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-24 22:06 How to Emulate C++ Macro with Static Local Variable? taashlo
2003-09-24 23:44 ` Robert I. Eachus
2003-09-25  3:27   ` Hyman Rosen
2003-09-25  4:53     ` tmoran
2003-09-25 15:57       ` Robert I. Eachus
2003-09-25 19:09         ` tmoran
2003-09-29 14:57           ` taashlo
2003-09-29 18:12             ` Jeffrey Carter
2003-09-29 18:51               ` taashlo
2003-09-30  1:32                 ` Jeffrey Carter [this message]
2003-09-30  1:54                   ` tmoran
2003-09-30 13:02                   ` taashlo
2003-09-30 20:25                     ` Jeffrey Carter
2003-09-30  2:45             ` Robert I. Eachus
2003-09-30  3:24               ` tmoran
2003-09-25 13:43     ` Stephen Leake
2003-09-25 12:59   ` Tad Ashlock
2003-09-25 16:11     ` Robert I. Eachus
2003-09-25 18:13       ` Randy Brukardt
2003-09-25 23:40         ` Robert I. Eachus
2003-09-25 11:54 ` Gautier
2003-09-25 16:14   ` Robert I. Eachus
2003-09-25 18:06   ` Tad Ashlock
2003-09-28  8:42     ` Gautier Write-only
2003-09-28 20:06       ` Jeffrey Carter
2003-09-29  2:13         ` Gautier Write-only
2003-09-25 13:41 ` Stephen Leake
2003-09-25 17:23   ` Tad Ashlock
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox