comp.lang.ada
 help / color / mirror / Atom feed
From: "Nick Roberts" <nick.roberts@acm.org>
Subject: Re: Task discriminants
Date: Sat, 5 Jun 2004 00:26:07 +0100
Date: 2004-06-05T00:26:07+01:00	[thread overview]
Message-ID: <2iceofFlgn4pU1@uni-berlin.de> (raw)
In-Reply-To: 40ACC50E.9040406@mail.usyd.edu.au

"Dave Levy" <dlevy@mail.usyd.edu.au> wrote in message
news:40ACC50E.9040406@mail.usyd.edu.au...

> Suppose one has a task type with a discriminant:
>
>     task type A_Task( Id : integer);
>
> and one wishes to declare a set of tasks with initialised discriminants:
>     t1 : A_Task(1);
>     t2 : A_Task(2);
>     t3 : A_Task(3);
>
> How could one declare them as an array of tasks with each one getting an
> initialised discriminant? Perhaps something like:
>
>     The_Tasks: array (1..3) of A_Task( Id => 1,2,3 );
>
> Except I tried this with Gnat and it won't compile.

It is a basic precept of Ada arrays that its components are all of the same
subtype. This means that they cannot have different discriminants. So this
approach, as such, is doomed.

You could use the 'old' technique:

   type A_Task_Number is range 1..3;

   task type A_Task is
      entry Init (Num: in A_Task_Number);
      ...
   end;

   The_Tasks: array (A_Task_Number) of A_Task;

   ...
      for i in A_Task_Number loop
         The_Tasks(i).Init(i);
      end loop;
   ...

   task body A_Task is
      My_Num: A_Task_Number;
      ...
   begin
      accept Init (Num: in A_Task_Number) do
         My_Num := Num;
      end;
      ...
   end A_Task;

It's always worked for me!

-- 
Nick Roberts





  parent reply	other threads:[~2004-06-04 23:26 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-20 14:47 Task discriminants Dave Levy
2004-05-20 17:17 ` David C. Hoos
2004-05-20 18:37   ` Martin Dowie
2004-05-21  0:39     ` Georg Bauhaus
2004-05-21  1:04       ` Jeffrey Carter
2004-05-21  9:43     ` Phil Slater
2004-05-21 12:43       ` Martin Dowie
2004-05-21 19:42         ` Randy Brukardt
2004-05-21 22:05           ` Martin Dowie
     [not found]           ` <c8luk4$29b$1@hercules.btinternet.com>
2004-05-21 23:16             ` Randy Brukardt
2004-05-22  7:55               ` Martin Dowie
2004-05-24 21:34                 ` Randy Brukardt
2004-05-25  5:48                   ` Martin Dowie
2004-05-25 20:25                     ` Randy Brukardt
2004-05-25 22:40                       ` Martin Dowie
2004-05-20 17:30 ` Martin Krischik
2004-05-21  7:57   ` Dmitry A. Kazakov
2004-06-04 12:59     ` Andersen Jacob Sparre
2004-05-21 16:46   ` Robert I. Eachus
2004-05-22  7:54     ` Martin Dowie
2004-05-22 16:18     ` Pascal Obry
2004-05-24 21:36       ` Randy Brukardt
2004-05-25 21:22       ` Robert I. Eachus
2004-06-04 23:26 ` Nick Roberts [this message]
2004-06-07 22:12   ` Karen
replies disabled

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