comp.lang.ada
 help / color / mirror / Atom feed
From: Joh Harbaugh <john.s.harbaugh2@boeing.com>
Subject: Re: Tasks with discriminants
Date: 1997/12/11
Date: 1997-12-11T00:00:00+00:00	[thread overview]
Message-ID: <34905735.13A8@boeing.com> (raw)
In-Reply-To: 3483C38C.1FF2@home.com


Larry Coon wrote:
> 
> I've been playing with discriminants for tasks and I
> can't get something to work.  I can declare a task
> such as the following:
> 
>      task type t (task_no: integer);
> 
> And later create actual tasks:
> 
>      t1: t (1);
>      t2: t (2);
>      t3: t (3);   -- etc...
> 
> But if I want to declare an array of tasks, I
> can't figure out how to supply values for the
> discriminants:
> 
>      type task_array is array (1..3) of t;
>      my_tasks: task_array;   -- ????
> 
> Can anybody tell me how the discriminants are
> supplied in this case?  Thanks in advance.
> 
> Larry Coon
> University of California
> larry@assist.org
> and lmcoom@home.com

A possibility is to create an array of dynamically allocated task:

   Task_Count : constant := 3;
   type Task_Ptrs is access all ADC;
   
-- Raises Program_Error with OA 7.1.105
--   Task_List : array(1..Task_Count) of Task_Ptrs :=
--	   (new T(25), new T(20), new T(T15));

Another approach is to use aliased objects:
    
   A : aliased T(25);
   B : aliased T(20);
   C : aliased T(15);
   
   Task_List : array(1..Task_Count) of T_Ptrs :=
      (A'access, B'access, C'access);

In any case, I have not found a way to create an array of static task
objects with discriminants.  Perhaps someone else has found a way.

Best regards,

	- John




      parent reply	other threads:[~1997-12-11  0:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-12-02  0:00 Tasks with discriminants Larry Coon
1997-12-02  0:00 ` Mats Weber
1997-12-02  0:00 ` Gerald Kasner
1997-12-11  0:00 ` Joh Harbaugh [this message]
replies disabled

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