From: "Dr. Michael Paus" <paus@ib-paus.com>
Subject: Re: Difficult to describe problem
Date: Thu, 20 Jun 2002 16:04:42 +0200
Date: 2002-06-20T14:04:43+00:00 [thread overview]
Message-ID: <3D11E0FA.2070702@ib-paus.com> (raw)
In-Reply-To: 3D11C7BA.8040504@uk.thalesgroup.com
Nige wrote:
> Hi - Sorry about the ambiguous title of this post, but it's hard to sum
> up the problem.
>
> What I have is a simple Ada interface to the Xlib function which
> contains functions for creating windows, and drawing in them, etc.
>
> The package is a generic, with a procedure passed as a parameter to
> handle events generated by X. Inside the package is a task which
> examines the X event list and calls the procedure as required.
>
> I also have another generic package which provides a menu by
> instantiating it with an enumeration type and another procedure. This
> menu package uses the above window package to create a window and fill
> it with the elements of the enumeration type. When one of the items is
> clicked on, the procedure is called.
>
> The problem is that if I instantiate the windows package and the menu
> package within the same executable, I end up with two tasks, each
> processing the X events. This works OK, most of the time, but sometimes
> one of the task fails during elaboration.
>
> I have used a protected type declared externally to both packages to
> single thread the whole thing, but this still doesn't prevent the problem.
>
> Ideally, I'd like to integrate the menu package into the window package
> so that they both use the same event loop (task) which I think will cure
> the problem.
>
> The final problem I have is how to integrate it. If the menu package
> remains generic, it can't be called by the task. If I make it non
> generic, I can't specify an enumeration for the menu when it is created.
>
> What I'd really like to do is to make the menu package a non generic and
> somehow pass an enumeration type to it. If not I'll have to pass a list
> of pointers to strings or something.
>
> Sorry for the long post - any ideas welcommed.
>
> Nige.
>
In Ada95 it is possible to pass an instance of a generic package to another
generic package in order to avoid multiple instantiations. Have a look at
chapter 12.7 of the Ada95 RM. If I understood your problem description correctly
this should help you to avoid the task duplication.
Michael
next prev parent reply other threads:[~2002-06-20 14:04 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-20 12:16 Difficult to describe problem Nige
2002-06-20 14:04 ` Dr. Michael Paus [this message]
2002-06-20 14:56 ` Stephen Leake
2002-06-21 15:09 ` Ted Dennison
2002-06-22 18:17 ` Simon Wright
2002-07-08 7:37 ` Nige
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox