FLTK logo

[master] 32b6c04 - Documentation: clarify header inclusion requirements

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] 32b6c04 - Documentation: clarify header inclusion requirements "Albrecht Schlosser" Feb 02, 2023  
 
commit 32b6c04bcf4f9977b38a15e84739e8395f57e97b
Author:     Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Thu Feb 2 18:47:16 2023 +0100
Commit:     Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Thu Feb 2 19:05:43 2023 +0100

    Documentation: clarify header inclusion requirements
    
    Since FLTK 1.4.0 inclusion of FL/Fl.H is no longer a requirement
    unless class Fl is used (e.g. Fl::run()) or if it is used to include
    other headers like FL/Enumerations.H

 documentation/src/basics.dox        | 15 ++++++++++-----
 documentation/src/migration_1_4.dox | 31 +++++++++++++++++++------------
 2 files changed, 29 insertions(+), 17 deletions(-)

diff --git documentation/src/basics.dox documentation/src/basics.dox
index a29d710..e531c87 100644
--- documentation/src/basics.dox
+++ documentation/src/basics.dox
@@ -7,11 +7,16 @@ that use FLTK.
 
 \section basics_writing Writing Your First FLTK Program
 
-All programs must include the file <tt><FL/Fl.H></tt>. This file
-should be included as the first FLTK header file.
-In addition the program must include a header file for each
-FLTK class it uses. Listing 1 shows a simple "Hello,
-World!" program that uses FLTK to display the window.
+Up to FLTK 1.3.x all FLTK programs were required to include the file
+<tt><FL/Fl.H></tt> as the first FLTK header file.
+
+Since FLTK 1.4.0 this requirement was relaxed and <tt><FL/Fl.H></tt> needs
+only be included if the class \c Fl is used or if some other stuff like
+enumerations is used in the source code. Example code in this documentation
+may still include it "everywhere" even if it is no longer strictly required.
+
+In addition the program must include a header file for each FLTK class it uses.
+Listing 1 shows a simple "Hello, World!" program that uses FLTK to display the window.
 
 \par Listing 1 - "hello.cxx"
 \code
diff --git documentation/src/migration_1_4.dox documentation/src/migration_1_4.dox
index e549555..9d516aa 100644
--- documentation/src/migration_1_4.dox
+++ documentation/src/migration_1_4.dox
@@ -3,7 +3,9 @@
  \page  migration_1_4   Migrating Code from FLTK 1.3 to 1.4
 
 This appendix describes the differences between FLTK
-1.3.x and FLTK 1.4.x functions and classes.
+1.3.x and FLTK 1.4.x functions and classes and potential requirements
+to change source code. We also explain how code can be made compatible
+so it can be compiled by both FLTK 1.3.x and 1.4.x.
 
 If you need to migrate your code from prior FLTK versions to FLTK 1.4,
 then you should first consult the relevant appendices in the FLTK 1.3
@@ -20,7 +22,7 @@ of the FLTK library to reduce dependencies and hence compile times.
 We try to avoid including system header files as far as possible. Known
 exceptions are \<stdio.h> where file system structures and functions are
 visible in the public API, for instance \p FILE*, and sometimes essential
-header files like \<stdlib.h> and/or \<stddef.h>. Some required platform
+header files like \<stdlib.h> and/or \<stddef.h>. Some required system
 headers \b may be included in platform specific header files like
 \<FL/platform.H> or \<FL/platform_types.h>.
 
@@ -36,18 +38,23 @@ files or missing declarations when compiled with FLTK 1.4.
 This is not a fault of FLTK 1.4 but a fault of the source code that did
 not include all required headers.
 
+In FLTK 1.4 inclusion of \<FL/Fl.H> is no longer a strict requirement as
+it was required and documented in FLTK 1.3.x. In FLTK 1.4 you may still
+need to '\#include \<FL/Fl.H>' if you are using enumerations or methods
+of class \c Fl like Fl::run() but there are exceptions where this header
+is included by other FLTK headers, like Fl_Window.H and other subclasses.
+
 Suggested solution: include all FLTK and system header files your source
 code requires explicitly and don't rely on FLTK headers to include a
-particular header file.
-
-The same applies to FLTK headers. The rule is to \#include \<FL/Fl.H> as
-the first FLTK header as described in the documentation elsewhere and to
-include FLTK headers for all classes you are using explicitly. You don't
-need to include headers of base classes - this is done by all FLTK headers
-as required. Besides that you need to include some support headers if you
-are using FLTK functions like \p fl_choice() and others. This is described
-in the function's documentation (if a required header is missing in the
-docs this is a bug).
+particular header file. If you want your code to be as much as possible
+compatible with FLTK 1.3.x, then you should \c '\#include \<FL/Fl.H>'
+as required by 1.3.x.
+
+You don't need to include headers of base classes - this is done by all
+FLTK headers as required. Besides that you need to include some support
+headers if you use FLTK functions like \p fl_choice() and others.
+This is described in the function's documentation (if a required header
+is missing in the docs this is a bug).
 
 If you follow these rules your program will be compatible with both
 FLTK 1.3.x and FLTK 1.4.x as long as you use only functions and classes
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.