comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Custom model in gtkada?
Date: Fri, 23 Jun 2006 15:58:16 +0200
Date: 2006-06-23T15:58:16+02:00	[thread overview]
Message-ID: <10aj6ifazzw9q$.1ks15eefzi4kn.dlg@40tude.net> (raw)
In-Reply-To: usllwjbma.fsf@acm.org

On Fri, 23 Jun 2006 08:32:45 -0400, Stephen Leake wrote:

> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
> 
>> On Thu, 22 Jun 2006 09:16:22 +0200, Emmanuel Briot wrote:
>>
>>> Dmitry A. Kazakov wrote:
>>>> I would expect callbacks be primitive operations of a tagged type rather
>>>> than pointers.
>>> 
>>> This is of course a design choice, and you can easily implement a small
>>> layer on top of GtkAda to do just that.
>>> The advantage with pointers is that you can add or remove callbacks during
>>> the life of a widget, which is harder to do with primitive operations where
>>> you need flags to know whether to react to the event or not. Also you can
>>> have multiple callbacks on the same signal, which, again, is harder to do
>>> with primitive operations.
>>
>> Maybe, though I doubt that events were a right design decision (as a
>> notification mechanism).
> 
> How many GUI programs have you written? With how many different toolkits?
> 
> I've used Visual Basic (essentially tagged, I think :), Borland's C++
> framework (tagged/dispatching), Windex (Ada tagged), GWindows (mixed
> tagged/pointers), and Gtk (pointers).

I used MACRO-11/Asynchronous System Traps + full-duplex terminal driver, (I
guess, it should be classified as callbacks (:-)), FORTRAN/FMS,
Ada83/C/TPU, C curses, Borland Turbo Pascal and later Delphi, C/C++
X11/Open Look, ANSI C LabVindows/CVI, Ada/C++ Windows API, LabView, Diadem
(graphical languages), now GtkAda.

> I think Gtk is the best model, although the C underpinnings make
> things difficult sometimes. In particular, it is difficult to detect
> some errors at compile time, that the fully Ada systems can detect. At
> root, the C pointers are not strongly typed.

I don't see how Ada could help there. An event is either handled or not.
"Event" is not an Ada term, so the compiler cannot check anything. An
abstract primitive subprogram is.

BTW, Gtk_Tree_Model is a clear candidate to become an interface. Thanks to
Maxim Reznik, I made an abstract tagged type from his code. It works fine
by now.

Anyway,

1. There are many communication / synchronization / notification
mechanisms. Among them events are not necessarily the best.

2. I don't see how events may influence the choice between pointers to
subprograms and primitive operations.

3. I designed soft-real time GUI libraries for Windows, where control over
resources and multitasking was essential. Especially because the data rates
(1-10ms) were sufficiently higher than the visualization rates (100ms). I
don't think that event/callback mindset is any good for such things. At
least it would require a lot of acrobatics.

>> Another point, a list of pointers to subprograms is in no way better than a
>> list of tagged objects (with primitive subprograms).
> 
> Why?
> 
> I would find a list of tagged objects confusing.

As I understood it, the point was made that procedures are good to chain a
list of event handlers. I see no difference between maintaining a list of
procedures vs. a list of handlers (objects). They are equivalent.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2006-06-23 13:58 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-13 18:01 Custom model in gtkada? Dmitry A. Kazakov
2006-06-13 19:53 ` M E Leypold
2006-06-14  7:17   ` Dmitry A. Kazakov
2006-06-14 21:00 ` Maxim Reznik
2006-06-15  7:38   ` Dmitry A. Kazakov
2006-06-15 15:31     ` Georg Bauhaus
2006-06-15 16:24       ` Ed Falis
2006-06-15 18:44         ` M E Leypold
2006-06-15 16:25       ` Dmitry A. Kazakov
2006-06-17 15:13         ` Georg Bauhaus
2006-06-17 16:44           ` Dmitry A. Kazakov
2006-06-22  7:16             ` Emmanuel Briot
2006-06-22  8:31               ` Dmitry A. Kazakov
2006-06-22 12:08                 ` Emmanuel Briot
2006-06-23 12:32                 ` Stephen Leake
2006-06-23 13:58                   ` Dmitry A. Kazakov [this message]
2006-06-29 17:11                     ` Stephen Leake
2006-06-30 12:29                       ` Dmitry A. Kazakov
2006-07-02 15:17                         ` Stephen Leake
2006-07-03 18:23                           ` Dmitry A. Kazakov
2006-07-04 13:51                             ` Stephen Leake
2006-07-05 13:06                               ` Dmitry A. Kazakov
2006-07-06  7:10                                 ` Stephen Leake
2006-06-23 16:59                   ` Jeffrey R. Carter
2006-06-23 17:37                     ` Ed Falis
2006-06-23 18:11                     ` Dmitry A. Kazakov
2006-06-29 17:20                     ` Stephen Leake
2006-06-29 20:08                       ` Jeffrey R. Carter
2006-06-30 10:28                         ` Alex R. Mosteo
2006-06-30 16:07                         ` Stephen Leake
2006-06-30 19:45                           ` Jeffrey R. Carter
2006-06-30 22:41                             ` Randy Brukardt
2006-07-01  5:11                               ` Jeffrey R. Carter
replies disabled

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