|author||Jed Barber <email@example.com>||2018-05-18 16:50:19 +1000|
|committer||Jed Barber <firstname.lastname@example.org>||2018-05-18 16:50:19 +1000|
3 files changed, 74 insertions, 54 deletions
diff --git a/doc/index.html b/doc/index.html
index 057f763..e3c4f0a 100644
@@ -84,6 +84,7 @@
diff --git a/progress.txt b/progress.txt
index d8e62ea..2f87b25 100644
@@ -1,11 +1,19 @@
-Approximate Progress List (Incomplete)
+Approximate Progress List
-Overall estimate: ???%
+Overall estimate: 80%
+To move from 'Never' to 'To-Do' the class must be useful enough to bind.
+To move from 'To-Do' to 'Partially Done' the class binding must be usable from Ada to some extent.
+To move from 'Partially Done' to 'Done' the Ada API must be completed.
+To move from 'Done' to 'Polished' the implementation details must be double checked and binding docs written.
@@ -120,40 +128,49 @@ FLTK.Environment (incomplete API, otherwise polished)
-(all these have to be done to put something in the polished category)
-- mark all methods as inline
-- make sure all C++ reinterpret_cast for methods is to the Fl object, not the My object, because inheriting
-- check FLTK library internals to see which char* return values need dealloc
-- qualify all C++ virtual method calls with the class name to prevent dynamic dispatch on C++ side
-- provide documentation for how C++ methods map to Ada functions and procedures
-(delay this until figure out an easier way to expose protected methods)
-- make all protected methods available
@@ -170,37 +187,8 @@ GNAT bug with type_invariant combined with derived type and a begin section in a
-A note on callbacks and overriding:
-As part of its normal operation, FLTK calls a Widget's Draw and Handle methods from its
-main loop to deal with draw and input events. Since it's another part of the program
-that is invoking them, even if it's a part the programmer has no direct control over,
-this binding is set up so that if you override Draw or Handle, the behaviour will change.
-On the other hand, something like the Push method in tabbed groups is usually invoked
-from within that same tabbed group widget's Handle method. Therefore, keeping consistency
-with Ada semantics, overriding the Push method will NOT change the behaviour of the
-corresponding Handle method. You must also override Handle.
+Find an easy way to make protected methods available on the Ada side
@@ -1,9 +1,25 @@
+FLTK Binding for the Ada Programming Language
+This is a thick binding. In particular, dynamic allocation of FLTK objects is
+not necessary as in Ada they can be placed on the stack and automatically cleaned
+up. Ada 2012 iterators have also been made available for the Fl_Group and Fl_Menu
+For documentation on what C++ method or class corresponds to what Ada function,
+procedure, or package, see the /doc/index.html file.
@@ -28,3 +44,18 @@ For further information on the build tools, consult
+A technical note on callbacks and overriding:
+As part of its normal operation, FLTK calls a Widget's Draw and Handle methods from its
+main loop to deal with draw and input events. Since it's another part of the program
+that is invoking them, even if it's a part the programmer has no direct control over,
+this binding is set up so that if you override Draw or Handle, the behaviour will change.
+On the other hand, something like the Push method in tabbed groups is usually invoked
+from within that same tabbed group widget's Handle method. Therefore, keeping consistency
+with Ada semantics, overriding the Push method will NOT change the behaviour of the
+corresponding Handle method. You must also override Handle.