comp.lang.ada
 help / color / mirror / Atom feed
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.



  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