comp.lang.ada
 help / color / mirror / Atom feed
From: "Beard, Frank" <beardf@spawar.navy.mil>
To: "'comp.lang.ada@ada.eu.org'" <comp.lang.ada@ada.eu.org>
Subject: RE: Generic Formal Parameter for a Task Type
Date: Thu, 8 Mar 2001 23:20:12 -0500
Date: 2001-03-08T23:20:12-05:00	[thread overview]
Message-ID: <mailman.984111732.21137.comp.lang.ada@ada.eu.org> (raw)

Why can't you have something like the following:

   generic

      type Item is limited private;
      with function Terminated(the_Item : Item) return boolean;

   package Xyz is

      procedure Monitor(the_Item : Item);
      ...

   end Xyz;

You instantiate the package with the task type and supply the
Terminated function, which would look something like:

   function Terminated(the_Task : Task_Type) return boolean is
   begin
      return the_Task'terminated;
   end Terminated;

So, inside your generic where you are monitoring the task, you
call the supplied function.  Of course, you would have to supply
a function for every task attribute you wanted to check.  I know
it's not as clean as using the attribute directly, but it's not
that bad.

I haven't tried to test this but the spec part compiles and it
seems like it should work, but I might be missing something.

Frank

-----Original Message-----
From: James Rogers [mailto:jimmaureenrogers@worldnet.att.net]
Sent: Thursday, March 08, 2001 10:35 PM
To: comp.lang.ada@ada.eu.org
Subject: Re: Generic Formal Parameter for a Task Type


The problem with using a formal limited private type is in the
need to determine if one of the tasks being monitored has terminated.

The 'Terminated attribute only applies to Task objects, either
directly, or implicitly through an access to the task object.

A limited private type is too general. It is not viewed within the
generic as a task type. I know. I tried this first.

The only way to make such a system work is to creat a limited record
type containing an access to task type. You could then create a
function taking a parameter of the record type, returning the proper
response from the 'Terminated attribute.

Although this is easily done, it is not what I wanted. I had hoped
to be able to create a generic package directly usable with most
any task type.

This appears to be one problem not solvable in Ada, yet easily
solved in Java. 

I would like to add a generic task type formal parameter to the
list of improvements for the next version of Ada.

Jim Rogers
Colorado Springs, Colorado USA

Pat Rogers wrote:
> 
> "James Rogers" <jimmaureenrogers@worldnet.att.net> wrote in message
> news:3AA80A68.A2C8B042@worldnet.att.net...
> > I have looked through "Ada as a Second Language" and the Ada Reference
> > manual. I cannot find any proper form to pass a task type as a
> > generic formal parameter.
> >
> > Is there a generic formal parameter form for this purpose?
> >
> > I wanted to create a generic package I call Task_Governor. This
> > package would control the number of tasks one could create at once.
> > The idea is that task resources may be limited. This package would
> > allow someone to limit the number of tasks to a maximum specified.
> > An instantiation of the package would monitor the tasks it started
> > and allow another to be started when one of the tasks terminated.
> >
> > My problem is that I cannot figure out how to specify a task type
> > as a generic formal parameter.
> 
> There is no generic formal task type; you have to use a limited private
> formal.
> 
> ---
> Patrick Rogers                       Consulting and Training in:
> http://www.classwide.com        Real-Time/OO Languages
> progers@classwide.com          Hard Deadline Schedulability Analysis
> (281)648-3165                          Software Fault Tolerance
_______________________________________________
comp.lang.ada mailing list
comp.lang.ada@ada.eu.org
http://ada.eu.org/mailman/listinfo/comp.lang.ada




             reply	other threads:[~2001-03-09  4:20 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-09  4:20 Beard, Frank [this message]
2001-03-09  5:24 ` Generic Formal Parameter for a Task Type James Rogers
2001-03-09 21:50   ` Tucker Taft
2001-03-10  0:14     ` Robert C. Leif, Ph.D.
2001-03-12 16:14       ` Tucker Taft
2001-03-10  3:25     ` James Rogers
2001-03-12 15:33       ` Stephen Leake
2001-03-12 16:11       ` Tucker Taft
  -- strict thread matches above, loose matches on Subject: below --
2001-03-09 22:53 Beard, Frank
2001-03-08 22:38 James Rogers
2001-03-08 23:27 ` Marin David Condic
2001-03-09  0:00 ` Robert A Duff
2001-03-09  0:16 ` Pat Rogers
2001-03-09  3:34   ` James Rogers
2001-03-09  4:26     ` Pat Rogers
2001-03-09  4:58       ` James Rogers
2001-03-09 15:50     ` Stephen Leake
2001-03-10  3:15       ` James Rogers
replies disabled

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