This is the mail archive of the
gsl-discuss@sourceware.org
mailing list for the GSL project.
some general questions
Mainly directed at Brian...
** Random questions which touch on GSL as a whole.
Q1. Regarding header files: Why are the struct declarations inside
__BEGIN__DECLS / __END_DECLS pairs? I think they could be outside.
I have in mind some ideas for better interaction with C++, which
we can discuss later. In any case, if they can go outside (and
I'm pretty sure they can), then they should. There's nothing
"extern C" about a struct declaration. POD is POD.
Language lawyers should correct me if I'm wrong. But I don't
think it has anything to do with languages, so much as the
assumptions of binary compatibility inherent in linking
across the C / C++ barrier.
Q2. How is the global variable gsl_check_range supposed to work?
It doesn't seem to be used in any way. Is it just cruft?
Q3. Why do we still have the 'const' qualifiers on by-value parameters
in some header files? I remember it had something to do with the
behaviour of a brain-damaged compiler (microsoft?) ten years ago.
But that was ten years ago. Let's clean that up. What does
the standard say?
Q4. Why are the dependencies for including "source" files in the
templatized world broken? Updating a "templatized" source
file does not force a recompile; obviously it should.
Q5. Can we extend the "templatizing" scheme to generate
declarations too? Of course, if it obscures the
header files, then it is not acceptable.
Q6. More a statement than a question: We should be more explicit
about the levelization of the design. This means expressing
the dependence of components clearly. For example, matrix
depends on vector, yet there is nothing in the build or in
the structure of the library which makes this clear.
Everything depends on error handling. Some things depend on
ieee. Some things are almost standing alone. We currently
have no meaningful notion of sub-libraries or component
dependency.
Simple observations, for people who don't get it:
* There are too many "things" in the root directory,
both files and directories.
* There are loose header files in the root directory.
Their role cannot be drawn from context when they
are floating in the open sea.
* There are actual source files
(gsl-histogram.c, gsl-randist.c, version.c)
in the root directory. Blechhh.
Let's clean house.