From: tmoran@acm.org
Subject: Re: new revision ada
Date: Tue, 22 Jun 2004 22:06:42 GMT
Date: 2004-06-22T22:06:42+00:00 [thread overview]
Message-ID: <S32Cc.161269$Ly.38478@attbi_s01> (raw)
In-Reply-To: sa4hdt4o59y.fsf@snoopy.apana.org.au
> tmoran> I don't understand why this is considered a problem. Why not make:
> tmoran> type data_to_pass is record ...
> tmoran> function enstring(x : data_to_pass) return string;
> tmoran> function destring(s : string) return data_to_pass;
>
> That seems like a very ugly hack.
Would you prefer something like:
package ER is new Exception_With_Record(Record_Type => Data_To_Pass);
Problem : exception;
...
ER.Raise_Exception(Problem'Identity,
Data_To_Pass'(Number=>1, RPM=>4000,
Occurred=>After_Switching_Tanks));
...
exception
when oops:Problem =>
declare
Failure_Data : constant Data_To_Pass := ER.Exception_Message(oops);
...
The hidden string should contain a pointer to the data to pass, so there's
no problem about 200 character truncation. It should also contain an
authentication watermark so ER.Exception_Message can avoid trying to
read data from an Ada.Exceptions.Exception_Message string (in case
"raise Problem" was erroneously used instead of ER.Raise_Exception).
ER.Exception_Message would also do the deallocation so the only way
a memory leak could happen is if you don't properly handle the exception,
in which case a memory leak is probably the least of your problems.
> Isn't the philosophy behind Ada that you specify what you want to
> happen, not how it happens?
I don't understand: all code is a statement of "how it happens",
more or less hidden inside some convenient syntactic form. Perhaps
Ada.Exceptions.Raise_Exception(Problem'Identity,
Enstring(Data_To_Pass'(Number=>1, RPM=>4000,
Occurred=>After_Switching_Tanks)));
is insufficiently opaque. The above
ER.Raise_Exception(Problem'Identity,
Data_To_Pass'(Number=>1, RPM=>4000,
Occurred=>After_Switching_Tanks));
doesn't expose any internals.
> Thats also a lot of overhead just to pass variables from one part of
> the program to another part of the same program, too.
I suspect it compares quite well with a call to Ada.Text_IO.Put_Line.
You shouldn't be raising/handling thousands of exceptions/second anyway.
next prev parent reply other threads:[~2004-06-22 22:06 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-31 13:32 Typing in Ada Empit
2004-05-31 14:04 ` Poul-Erik Andreasen
2004-05-31 17:01 ` Jeffrey Carter
2004-05-31 20:03 ` Peter C. Chapin
2004-05-31 22:56 ` tmoran
2004-06-01 1:09 ` Peter C. Chapin
2004-06-01 4:40 ` tmoran
2004-06-01 11:26 ` Peter C. Chapin
2004-06-10 3:01 ` Dave Thompson
2004-06-10 3:00 ` Dave Thompson
2004-05-31 23:22 ` Nick Roberts
2004-06-01 1:04 ` Peter C. Chapin
2004-06-01 2:29 ` Nick Roberts
2004-06-02 4:39 ` Robert I. Eachus
2004-06-02 15:17 ` Hyman Rosen
2004-06-01 2:36 ` Hyman Rosen
2004-06-01 4:27 ` Larry Kilgallen
2004-06-01 4:05 ` Hyman Rosen
[not found] ` <d4vnb0tepd4togdrvdrbqpok1ne6n9i2vp@4ax.com>
2004-06-01 14:36 ` Wes Groleau
2004-06-01 20:24 ` Niklas Holsti
2004-06-02 4:43 ` Wes Groleau
2004-06-02 5:28 ` Robert I. Eachus
2004-06-02 8:19 ` tmoran
2004-06-02 14:47 ` Wes Groleau
2004-06-02 11:26 ` Marin David Condic
2004-06-02 14:54 ` gratuitous restrictions (was:Typing in Ada) Wes Groleau
2004-06-02 5:04 ` Typing in Ada Robert I. Eachus
2004-06-01 2:14 ` David C. Hoos
2004-06-02 1:30 ` Jeffrey Carter
2004-06-02 10:53 ` Peter C. Chapin
2004-06-02 11:38 ` Marin David Condic
2004-06-17 2:50 ` Dave Thompson
2004-06-17 4:24 ` James Rogers
2004-06-17 12:28 ` Hyman Rosen
2004-06-17 23:42 ` James Rogers
2004-06-20 11:27 ` Nick Roberts
2004-06-20 23:29 ` new revision ada Brian May
2004-06-21 2:16 ` tmoran
2004-06-21 2:34 ` James Rogers
2004-06-22 2:16 ` Roland Illig
2004-06-22 3:41 ` James Rogers
2004-06-22 6:53 ` Martin Krischik
2004-06-21 23:33 ` Brian May
2004-06-22 20:26 ` Simon Wright
2004-06-23 0:50 ` Larry Elmore
2004-06-22 22:06 ` tmoran [this message]
2004-06-21 5:31 ` Wes Groleau
2004-06-21 12:27 ` new revision ada (limited with, excpetion handling) Nick Roberts
2004-06-21 13:04 ` Martin Dowie
2004-06-22 10:38 ` new revision ada Georg Bauhaus
2004-06-22 12:45 ` James Rogers
2004-06-22 15:17 ` Martin Krischik
2004-06-22 16:09 ` new revision ada (exception handling) Nick Roberts
2004-06-23 7:55 ` Pascal Obry
2004-06-23 8:40 ` Martin Krischik
2004-06-23 19:33 ` Randy Brukardt
2004-06-24 6:57 ` Martin Krischik
2004-06-24 21:13 ` Randy Brukardt
2004-06-25 8:05 ` Dmitry A. Kazakov
2004-06-25 17:28 ` Randy Brukardt
2004-06-23 4:31 ` new revision ada Brian May
2004-06-23 19:47 ` Randy Brukardt
2004-06-22 16:37 ` Georg Bauhaus
2004-06-26 14:57 ` Robert I. Eachus
2004-06-01 1:02 ` Typing in Ada Alexander E. Kopilovich
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox