diff options
author | Ken Martin <ken.martin@kitware.com> | 2002-08-21 15:58:01 (GMT) |
---|---|---|
committer | Ken Martin <ken.martin@kitware.com> | 2002-08-21 15:58:01 (GMT) |
commit | 9184cac1ff69f3454d4f450e00becbcadce45aea (patch) | |
tree | 2282ba4862f86364deb8a9443f599ba1ebbbde4b /Source/cmDynamicLoader.h | |
parent | 34c7c1b78d347f30ecb5124db7f365ffb385b5a1 (diff) | |
download | CMake-9184cac1ff69f3454d4f450e00becbcadce45aea.zip CMake-9184cac1ff69f3454d4f450e00becbcadce45aea.tar.gz CMake-9184cac1ff69f3454d4f450e00becbcadce45aea.tar.bz2 |
added plugin support
Diffstat (limited to 'Source/cmDynamicLoader.h')
-rw-r--r-- | Source/cmDynamicLoader.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Source/cmDynamicLoader.h b/Source/cmDynamicLoader.h new file mode 100644 index 0000000..d5cc612 --- /dev/null +++ b/Source/cmDynamicLoader.h @@ -0,0 +1,80 @@ +/*========================================================================= + + Program: Insight Segmentation & Registration Toolkit + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Insight Consortium. All rights reserved. + See ITKCopyright.txt or http://www.itk.org/HTML/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. + +=========================================================================*/ +// .NAME cmDynamicLoader - class interface to system dynamic libraries +// .SECTION Description +// cmDynamicLoader provides a portable interface to loading dynamic +// libraries into a process. + + +#ifndef __cmDynamicLoader_h +#define __cmDynamicLoader_h + +#include "cmStandardIncludes.h" + +// Ugly stuff for library handles +// They are different on several different OS's +#if defined(__hpux) +# include <dl.h> + typedef shl_t cmLibHandle; +#elif defined(_WIN32) + #include <windows.h> + typedef HMODULE cmLibHandle; +#else + typedef void* cmLibHandle; +#endif + +class cmDynamicLoader +{ +public: + // Description: + // Load a dynamic library into the current process. + // The returned cmLibHandle can be used to access the symbols in the + // library. + static cmLibHandle OpenLibrary(const char*); + + // Description: + // Attempt to detach a dynamic library from the + // process. A value of true is returned if it is successful. + static int CloseLibrary(cmLibHandle); + + // Description: + // Find the address of the symbol in the given library + static void* GetSymbolAddress(cmLibHandle, const char*); + + // Description: + // Return the library prefix for the given architecture + static const char* LibPrefix(); + + // Description: + // Return the library extension for the given architecture + static const char* LibExtension(); + + // Description: + // Return the last error produced from a calls made on this class. + static const char* LastError(); + +protected: + cmDynamicLoader() {}; + ~cmDynamicLoader() {}; + + +private: + cmDynamicLoader(const cmDynamicLoader&); // Not implemented. + void operator=(const cmDynamicLoader&); // Not implemented. +}; + +#endif |