diff options
author | Mathieu Malaterre <mathieu.malaterre@gmail.com> | 2006-03-06 19:02:55 (GMT) |
---|---|---|
committer | Mathieu Malaterre <mathieu.malaterre@gmail.com> | 2006-03-06 19:02:55 (GMT) |
commit | ffd4bcd02bab3aa9a06844a39077d2e6e646d5a2 (patch) | |
tree | 495ec13a3545f7b6ee0ea19d37b6560b1df96288 /Source/kwsys/DynamicLoader.hxx.in | |
parent | eee281c3a660785e4d4d82d467bb1eed000d8163 (diff) | |
download | CMake-ffd4bcd02bab3aa9a06844a39077d2e6e646d5a2.zip CMake-ffd4bcd02bab3aa9a06844a39077d2e6e646d5a2.tar.gz CMake-ffd4bcd02bab3aa9a06844a39077d2e6e646d5a2.tar.bz2 |
ENH: Adding kwsys implementation for a DynamicLoader class. Copy from itkDynamicLoader, with patch from cmDynamicLoader
Diffstat (limited to 'Source/kwsys/DynamicLoader.hxx.in')
-rw-r--r-- | Source/kwsys/DynamicLoader.hxx.in | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/Source/kwsys/DynamicLoader.hxx.in b/Source/kwsys/DynamicLoader.hxx.in new file mode 100644 index 0000000..dc5a1d3 --- /dev/null +++ b/Source/kwsys/DynamicLoader.hxx.in @@ -0,0 +1,87 @@ +/*========================================================================= + + Program: KWSys - Kitware System Library + Module: $RCSfile$ + + Copyright (c) Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.kitware.com/Copyright.htm for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef @KWSYS_NAMESPACE@_DynamicLoader_hxx +#define @KWSYS_NAMESPACE@_DynamicLoader_hxx + +#include <@KWSYS_NAMESPACE@/Configure.h> + +namespace @KWSYS_NAMESPACE@ +{ +// Ugly stuff for library handles +// They are different on several different OS's +#if defined(__hpux) + #include <dl.h> + typedef shl_t LibHandle; +#elif defined(_WIN32) + #include <windows.h> + typedef HMODULE LibHandle; +#elif defined(__APPLE__) + #include <AvailabilityMacros.h> + #if MAC_OS_X_VERSION_MIN_REQUIRED < 1030 + #include <mach-o/dyld.h> + typedef NSModule LibHandle; + #else + typedef void* LibHandle; + #endif +#else + typedef void* LibHandle; +#endif +} // namespace @KWSYS_NAMESPACE@ + +namespace @KWSYS_NAMESPACE@ +{ +// Return type from DynamicLoader::GetSymbolAddress. +typedef void (*DynamicLoaderFunction)(); + +/** \class DynamicLoader + * \brief Portable loading of dynamic libraries or dll's. + * + * DynamicLoader provides a portable interface to loading dynamic + * libraries or dll's into a process. + * + * Directory currently works with Windows, Apple, HP-UX and Unix (POSIX) + * operating systems + */ + +class @KWSYS_NAMESPACE@_EXPORT DynamicLoader +{ +public: + DynamicLoader(); + ~DynamicLoader(); + + /** Load a dynamic library into the current process. + * The returned LibHandle can be used to access the symbols in the + * library. */ + static LibHandle OpenLibrary(const char*); + + /** Attempt to detach a dynamic library from the + * process. A value of true is returned if it is sucessful. */ + static int CloseLibrary(LibHandle); + + /** Find the address of the symbol in the given library. */ + static DynamicLoaderFunction GetSymbolAddress(LibHandle, const char*); + + /** Return the library prefix for the given architecture */ + static const char* LibPrefix(); + + /** Return the library extension for the given architecture. */ + static const char* LibExtension(); + + /** Return the last error produced from a calls made on this class. */ + static const char* LastError(); +}; // End Class: DynamicLoader + +} // namespace @KWSYS_NAMESPACE@ + +#endif |