summaryrefslogtreecommitdiffstats
path: root/Source/cmDynamicLoader.h
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2002-08-21 15:58:01 (GMT)
committerKen Martin <ken.martin@kitware.com>2002-08-21 15:58:01 (GMT)
commit9184cac1ff69f3454d4f450e00becbcadce45aea (patch)
tree2282ba4862f86364deb8a9443f599ba1ebbbde4b /Source/cmDynamicLoader.h
parent34c7c1b78d347f30ecb5124db7f365ffb385b5a1 (diff)
downloadCMake-9184cac1ff69f3454d4f450e00becbcadce45aea.zip
CMake-9184cac1ff69f3454d4f450e00becbcadce45aea.tar.gz
CMake-9184cac1ff69f3454d4f450e00becbcadce45aea.tar.bz2
added plugin support
Diffstat (limited to 'Source/cmDynamicLoader.h')
-rw-r--r--Source/cmDynamicLoader.h80
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