lsst.base 23.0.0-2-gc17f1a8+f3d053c481
LSST Data Management Base Package
versions.cc
Go to the documentation of this file.
1#include <cstddef>
2#include <cstdlib>
3
4#include <sstream>
5
6#include "lsst/base/library.h"
8
9namespace lsst {
10namespace base {
11
12namespace {
13
14typedef std::string (*VersionGetter)(void);
15
16// List of packages and how to determine the version
18 {"cfitsio", getCfitsioVersion},
19 {"fftw", getFftwVersion},
20 {"wcslib", getWcslibVersion},
21 {"gsl", getGslVersion},
22};
23
24} // anonymous namespace
25
27{
28 typedef float (GetVersion)(float*);
29 float version;
30 loadSymbol<GetVersion>("libcfitsio", "ffvers")(&version);
31
32 std::stringstream ss(std::stringstream::in | std::stringstream::out);
33 ss << version;
34 return ss.str();
35}
36
38{
39 return std::string(loadSymbol<char const>("libfftw3", "fftw_version"));
40}
41
43{
44 typedef char const* (GetVersion)(int[]);
45 return std::string(loadSymbol<GetVersion>("libwcs", "wcslib_version")(NULL));
46}
47
49{
50 return std::string(*loadSymbol<char const*>("libgsl", "gsl_version"));
51}
52
53
55{
57 for (auto&& pkg : packages) {
58 try {
59 versions[pkg.first] = pkg.second();
60 } catch (LibraryException const&) {
61 // Can't find the module, so ignore it
62 }
63 }
64 return versions;
65}
66
67
68}} // namespace lsst::base
Unable to load library.
Definition: library.h:16
std::string getCfitsioVersion()
Definition: versions.cc:26
std::map< std::string, std::string > getRuntimeVersions()
Return version strings for dependencies.
Definition: versions.cc:54
std::string getFftwVersion()
Definition: versions.cc:37
std::string getWcslibVersion()
Definition: versions.cc:42
std::string getGslVersion()
Definition: versions.cc:48
Definition: mainpage.dox:1
T str(T... args)