comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm-host.bauhaus@maps.futureapps.de>
Subject: Re: Ada is getting more popular!
Date: Thu, 14 Oct 2010 02:57:40 +0200
Date: 2010-10-14T02:57:41+02:00	[thread overview]
Message-ID: <4cb65584$0$6972$9b4e6d93@newsspool4.arcor-online.net> (raw)
In-Reply-To: <0fd5e839-a2b6-41c9-b6d4-9bd4f09c044b@h7g2000yqn.googlegroups.com>

On 10/14/10 1:00 AM, ramon_garcia wrote:
> It is simply that I need to perform low level tasks, such as accessing
> a memory mapped file.

Since you can't get a pointer to unconstrained from a constrained
object(*), but you can bring data and processing subprograms
together. The different solution will remove GNAT dependences.

(Yes, copying might happen if an out parameter is initialized
by assigning components from another array. But the scenario
is different below.)

Use case:
If a pointer to unconstrained would be intended for obtaining
access to the data array (with correct bounds), this access
determines the use case, what is to be done with what.

Then instead of asking for a pointer at the "client" side,
invert control.

Have the client provide a callback procedure that takes an
unconstrained array, to be passed to the "server" side (where
the data record is defined now). Either use generics or
use access subprogram types (similar to updating subprograms
of Ada.Containers.*).

Example:

   -- client side:
   procedure Want_Bytes (Data : in out Buffer);
    -- perform some action on the bytes in Data
    -- Note: Data needs *not* be copied

   -- server side:
   generic
      with procedure do_something (data : in out Buffer);
   procedure process;
    -- instances will invoke do_something with a data buffer


   -- client side:
   procedure step is new Process (do_something => Want_Bytes);


   -- server side, body:
   procedure process is
   begin
      do_something (a_t.data);
   end process;

   -- client side:
   step;


This is plain Ada and will very likely avoid copying.
No pointers or aliases are needed.  It's efficient, too.

Extending, so as to have a container record from just anywhere,

   -- server side:
   generic
      with procedure do_something (data : in out Buffer);
   procedure Process (Info : in out Container);
    -- instances will invoke do_something, passing Info.data

    ...
   step (my_container_object);
__
(*) http://www.adapower.com/index.php?Command=Class&ClassID=Advanced&CID=213

>> I get the impression that Mr ramon_garcia is trying to use Ada as C.
>>
>> Better to use Ada as Ada, makes life simpler :)
>>
>> --Nasser
>




  parent reply	other threads:[~2010-10-14  0:57 UTC|newest]

Thread overview: 128+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-13  7:15 Ada is getting more popular! Nasser M. Abbasi
2010-10-13 12:07 ` ramon_garcia
2010-10-13 14:51   ` Georg Bauhaus
2010-10-13 17:00     ` Dmitry A. Kazakov
2010-10-14 22:10       ` Robert A Duff
2010-10-15  7:27         ` Dmitry A. Kazakov
2010-10-13 15:04   ` Mark Lorenzen
2010-10-13 18:01   ` Jeffrey Carter
2010-10-13 18:50     ` mockturtle
2010-10-13 21:53     ` ramon_garcia
2010-10-13 22:34       ` Vinzent Hoefler
2010-10-13 22:49         ` Nasser M. Abbasi
2010-10-13 23:00           ` ramon_garcia
2010-10-13 23:21             ` Jeffrey Carter
2010-10-14  0:57             ` Georg Bauhaus [this message]
2010-10-15 12:12             ` Jacob Sparre Andersen
2010-10-24 22:10               ` Yannick Duchêne (Hibou57)
2010-10-13 22:49         ` ramon_garcia
2010-10-13 23:05           ` Vinzent Hoefler
2010-10-14  4:59             ` Simon Wright
2010-10-14 18:45               ` Vinzent Hoefler
2010-10-14 18:48                 ` Vinzent Hoefler
     [not found]       ` <i95f0n$j61$1@tornado.tornevall.net>
2010-10-14  5:03         ` Simon Wright
2010-10-13 20:17   ` Vinzent Hoefler
2010-10-13 22:05   ` Simon Wright
2010-10-14  2:20   ` tmoran
2010-10-24 22:15     ` Yannick Duchêne (Hibou57)
2010-10-25  0:14       ` Georg Bauhaus
2010-10-24 21:21   ` Yannick Duchêne (Hibou57)
2010-10-25  0:12     ` Georg Bauhaus
2010-10-25  7:43       ` Yannick Duchêne (Hibou57)
2010-10-25  7:52       ` Dmitry A. Kazakov
2010-10-25  8:07         ` Georg Bauhaus
2010-10-25  9:21           ` Dmitry A. Kazakov
2010-10-25  9:47         ` Ludovic Brenta
2010-10-25 10:33           ` Dmitry A. Kazakov
2010-10-25 11:00             ` Ludovic Brenta
2010-10-25 13:24               ` Dmitry A. Kazakov
2010-10-31 19:59                 ` Yannick Duchêne (Hibou57)
2010-10-25 19:06               ` Yannick Duchêne (Hibou57)
2010-10-25 22:39                 ` Thomas Løcke
2010-10-25 23:29                   ` Yannick Duchêne (Hibou57)
2010-10-26  6:29                     ` Thomas Løcke
2010-10-26 14:33                       ` Colin Paul Gloster
2010-10-26 13:59                         ` Dmitry A. Kazakov
2010-10-27 11:59                           ` Colin Paul Gloster
2010-10-27 13:07                             ` Dmitry A. Kazakov
2010-10-27 17:51                               ` Laziness (Was: Re: Ada is getting more popular!) Jeffrey Carter
2010-10-27 20:51                                 ` Yannick Duchêne (Hibou57)
2010-11-03 18:02                               ` Ada is getting more popular! Colin Paul Gloster
2010-11-03 20:52                                 ` Dmitry A. Kazakov
2010-11-04  1:27                                   ` Yannick Duchêne (Hibou57)
2010-11-04  1:30                                 ` Yannick Duchêne (Hibou57)
2010-10-26 18:29                         ` Thomas Løcke
2010-10-27 11:32                           ` Colin Paul Gloster
2010-10-27 19:28                             ` Thomas Løcke
2010-10-27 19:38                               ` Thomas Løcke
2010-10-27 20:46                               ` Yannick Duchêne (Hibou57)
2010-10-28  6:06                                 ` Thomas Løcke
2010-10-28  8:19                                   ` Dmitry A. Kazakov
2010-10-28  9:41                                     ` Thomas Løcke
2010-10-28 13:01                                       ` Dmitry A. Kazakov
2010-10-28 18:21                                         ` Thomas Løcke
2010-10-28 20:18                                           ` Dmitry A. Kazakov
2010-10-28 20:33                                             ` Ludovic Brenta
2010-10-28 21:19                                               ` Dmitry A. Kazakov
2010-10-28 23:37                                                 ` Georg Bauhaus
2010-10-29  8:00                                                   ` Dmitry A. Kazakov
2010-10-29  9:19                                                     ` Georg Bauhaus
2010-10-29 10:03                                                       ` Dmitry A. Kazakov
2010-10-29 16:55                                                       ` Yannick Duchêne (Hibou57)
2010-10-30  9:50                                                       ` Florian Weimer
2010-10-30 12:58                                                         ` Georg Bauhaus
2010-10-30 17:48                                                           ` Florian Weimer
2010-10-30 18:50                                                             ` Yannick Duchêne (Hibou57)
2010-10-30 19:02                                                             ` Georg Bauhaus
2010-10-30 19:26                                                               ` Dmitry A. Kazakov
2010-10-30 20:57                                                                 ` Georg Bauhaus
2010-10-31  7:48                                                                   ` Dmitry A. Kazakov
2010-10-31 10:59                                                                     ` Georg Bauhaus
2010-10-31 12:36                                                                       ` Dmitry A. Kazakov
2010-10-30 18:17                                                           ` Yannick Duchêne (Hibou57)
2010-10-29 16:51                                                     ` Yannick Duchêne (Hibou57)
2010-10-28 21:02                                             ` Thomas Løcke
2010-10-28 21:31                                               ` Dmitry A. Kazakov
2010-10-28 21:28                                           ` Brian Drummond
2010-10-29  5:13                                             ` Thomas Løcke
2010-10-29 14:04                                               ` Brian Drummond
2010-10-29 14:03                                                 ` Thomas Løcke
2010-10-30  6:23                                                   ` Brian Drummond
2010-10-29  0:31                                       ` Chad  R. Meiners
2010-10-29 11:47                                       ` stefan-lucks
2010-10-28 17:25                                     ` Warren
2010-10-28  9:12                                   ` J-P. Rosen
2010-10-28 17:02                                     ` Yannick Duchêne (Hibou57)
2010-10-28 17:58                                     ` Nicholas Collin Paul Gloster
2010-10-28 18:17                                       ` J-P. Rosen
2010-10-29 18:59                                         ` Vinzent Hoefler
2010-10-29 19:56                                           ` Yannick Duchêne (Hibou57)
2010-10-29 20:28                                             ` J-P. Rosen
2010-10-29 21:51                                               ` Yannick Duchêne (Hibou57)
2010-10-31  1:35                                               ` Yannick Duchêne (Hibou57)
2010-10-31  5:02                                                 ` Yannick Duchêne (Hibou57)
2010-10-31  6:42                                                   ` Yannick Duchêne (Hibou57)
2010-10-31 10:38                                                   ` J-P. Rosen
2010-10-31 10:54                                                     ` Dmitry A. Kazakov
2010-10-31 12:54                                                       ` J-P. Rosen
2010-10-31 14:57                                                         ` Dmitry A. Kazakov
2010-10-31 13:57                                                       ` Niklas Holsti
2010-10-31 21:02                                                         ` Niklas Holsti
2010-11-02  9:15                                                           ` J-P. Rosen
2010-10-31 14:39                                                       ` Yannick Duchêne (Hibou57)
2010-10-31 17:21                                                       ` Jeffrey Carter
2010-10-31 18:04                                                       ` Jeffrey Carter
2010-10-31 20:00                                                         ` Dmitry A. Kazakov
2010-10-31 18:06                                                     ` Jeffrey Carter
2010-10-30  0:01                                             ` Vinzent Hoefler
2010-10-30  0:30                                               ` Yannick Duchêne (Hibou57)
2010-10-30 17:00                                                 ` Vinzent Hoefler
2010-10-26  0:10                   ` Yannick Duchêne (Hibou57)
2010-10-25 12:06             ` Georg Bauhaus
2010-10-25 13:41               ` Dmitry A. Kazakov
2010-10-25 14:55                 ` Georg Bauhaus
2010-10-25 19:33             ` Yannick Duchêne (Hibou57)
2010-10-26 20:37             ` Shark8
2010-10-25 11:49           ` J-P. Rosen
2010-10-25 19:58             ` Yannick Duchêne (Hibou57)
2010-10-25 19:17           ` Yannick Duchêne (Hibou57)
replies disabled

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