I'd like to raise a possibility about a better way to handle the Ada
bindings. Here's the deal.
There has been a recent new standard for the Ada language, known
frequently as Ada 2005, Ada 05, Ada 2007 or Ada 07. (The most
frequent is Ada 2005 although the standard was not officially
approved until 2007, as I understand it. The first Ada is known as
Ada 83.) Ada 2007 has added a numerics capability described in the
Ada Reference Manual in Annex G.3. It provides, among other things,
"official" declarations for vectors and matrices.
I want to let the PLplot bindings use those declarations if the user
is using an Ada 2007 compiler; otherwise, I declare them myself in
the bindings. There are only two lines of declarations but the the
"with" clauses need to be adjusted in several files. ("with" is a
little like "include" in C.) I could just leave my own declarations
in, even for Ada 2007 compilers, but I really want to take advantage
of the language to the maximum extent possible, and to reduce the
likelihood of there being confusion (in the Ada 2007 case) of whether
the user needs to use my declarations or the Annex G.3 declarations.
The way that I have handled this so far is to comment lines in or out
as necessary. The bindings as included in PLplot so far have been for
Ada 95. For my own use (non-PLplot development), I edit the source
code to be compatible with Ada 2007. I don't think this is a good
solution.
I asked the comp.lang.ada list about this. There were several
solutions offered and several of them depended on using GNAT
functionality that lies outside the compiler proper. (GNAT is gnu
Ada.) For example, a GNAT preprocessor was mentioned as was a GNAT
project file which would select different source files depending on
the compiler type. In writing the bindings, I have not made them GNAt-
dependent except for one little spot which should be easy to fix--I
would prefer to not add more GNAT dependency by requiring a GNAt
preprocessor or GNAT project file but rather keep the bindings so
that they work for any Ada compiler.
Since the c.l.a. list strongly suggested, in any case, multiple
source files, it seems to me that we could take one of two routes.
One is for me to supply two sets of files, one that compiles with Ada
95 and one that compiles with Ada 2007. Since there are already a
number of files (three bindings of two files each and two auxiliary
files), I would do this by a bit of sed trickery, I suppose--sort of
a little non-GNAT preprocessor. This would require some kludgey file
naming but should work.
The other way, very similar, would for me to keep the same number of
binding files and let the build system take care of the sed stuff and
create derived files with standardized names.
These two approaches also have the advantage that nobody has to
bother themselves with any extra-compiler GNAT stuff. The differences
in the sources for the two scenarios is really quite small. I could
figure out how to write the source files to make the sed easy, and
create the sed myself, but someone else would need to incorporate it
into the build system.
I suppose, if necessary, we could just supply Ada 95 bindings since
there probably aren't very many people using Ada 2007 yet.
I haven't thought through this very much mainly because I don't know
what is necessary or possible with the build system or how much work
this would require. However, I want to bring this up because I
realized that I think that I have been inadvertently (and ignorantly)
ignoring this problem.
Sorry for making a fuss this close to a release. I wouldn't mind if
this issue slipped past the pending release, but would prefer to see
it resolved.
Jerry
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Plplot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/plplot-devel