This is the mail archive of the gsl-discuss@sourceware.org mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]