[Ccgsl-announce] New version of CCGSL
Use Gnu Scientific Library as if it were writtem in C++.
Brought to you by:
jdl3
From: John D L. <J.D...@jo...> - 2020-04-08 17:47:30
|
I’ve just released a new version of CCGSL covering version 2.6 of the Gnu Scientific Library. There is quite a bit of new code here. As usual, it wraps GSL functions using only C++ header files. There is no library and code built with CCGSL should compile except with much older C++ compilers. The code can still be improved quite a bit. Here are some of the things that have been done. 1. The code allows you to create anything that requires a GSL alloc() function to be created as a reference class (a bit like a std::shared_ptr) so we don’t ever have to remember to free and object: free() is called when there are no more references to an object. 2. Most functions are embedded in namespaces, allowing you to use shorter names. The naming convention is consistent with GSL except in a few cases where that would create a conflict. 3. Most functions have at least minimal documentation, though a few are not even documented in the current GSL manual. 4. Where a GSL function expects a pointer to a GSL struct, you can nearly always pass an object constructed as in 1 above. Here are some things that could be done (feel free to volunteer to help). 1. Several GSL functions expect pointers to C functions. But in C++ we want to be to pass function objects instead. In only a few cases have I managed to implement this. 2. There are some inconsistencies in how CCGSL translates GSL functions to either namespace functions, static class functions (for practical purposes nearly indistinguishable from namespace functions) and member functions. Generally I have tried to use member functions only when they are essential or the most obvious place to implement the GSL equivalent. Sometimes CCGSL has both a member function and a static class function. But improvements and additions would help. 3. There are some inconsistencies in handling of pointers to non-class types. Typically CCGSL does this by reference so that the user can see the difference between where, for example, a double is wanted rather than an array of doubles. Here are things that CCGSL does not currently plan to do (but feel free to say otherwise and help do them if it makes sense). 1. CCGSL avoids operator overloading for adding and multiplying matrices, vectors and the like. 2. CCGSL does not include any code that needs to be compiled and installed as a library. -- John D Lamb |