LSSTApplications  11.0-13-gbb96280,12.1.rc1,12.1.rc1+1,12.1.rc1+2,12.1.rc1+5,12.1.rc1+8,12.1.rc1-1-g06d7636+1,12.1.rc1-1-g253890b+5,12.1.rc1-1-g3d31b68+7,12.1.rc1-1-g3db6b75+1,12.1.rc1-1-g5c1385a+3,12.1.rc1-1-g83b2247,12.1.rc1-1-g90cb4cf+6,12.1.rc1-1-g91da24b+3,12.1.rc1-2-g3521f8a,12.1.rc1-2-g39433dd+4,12.1.rc1-2-g486411b+2,12.1.rc1-2-g4c2be76,12.1.rc1-2-gc9c0491,12.1.rc1-2-gda2cd4f+6,12.1.rc1-3-g3391c73+2,12.1.rc1-3-g8c1bd6c+1,12.1.rc1-3-gcf4b6cb+2,12.1.rc1-4-g057223e+1,12.1.rc1-4-g19ed13b+2,12.1.rc1-4-g30492a7
LSSTDataManagementBasePackage
library.cc
Go to the documentation of this file.
1 #include "lsst/base/library.h"
2 
3 namespace lsst {
4 namespace base {
5 
6 namespace {
7 
9 bool endsWith(std::string const& str, std::string const& end)
10 {
11  return str.size() >= end.size() && str.compare(str.size() - end.size(), end.size(), end) == 0;
12 }
13 
14 } // anonymous namespace
15 
16 
17 std::string libraryExtension()
18 {
19 #ifdef __APPLE__
20  return ".dylib";
21 #else
22  return ".so";
23 #endif
24 }
25 
26 
27 std::string getLibraryFilename(std::string const& name)
28 {
29  if (endsWith(name, ".so") || endsWith(name, ".dylib")) {
30  // User asked for a library with a certain extension, so give it to them
31  return name;
32  }
33  return name + libraryExtension();
34 }
35 
36 
37 bool canLoadLibrary(std::string const& libName)
38 {
39  return dlopen(getLibraryFilename(libName).c_str(), RTLD_LAZY | RTLD_GLOBAL);
40 }
41 
42 
43 }} // lsst::base
table::Key< std::string > name
Definition: ApCorrMap.cc:71
std::string getLibraryFilename(std::string const &name)
Definition: library.cc:27
std::string libraryExtension()
Definition: library.cc:17
bool canLoadLibrary(std::string const &libName)
Definition: library.cc:37