ENH: Cleanup DynamicLoader so that the symbols have more consistent names, start using dynamic loader from kwsys in CMake

This commit is contained in:
Andy Cedilnik
2006-03-16 11:01:05 -05:00
parent 4102949bf9
commit f483e48d2a
12 changed files with 134 additions and 375 deletions

View File

@@ -9,15 +9,15 @@
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
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.
// cmDynamicLoader provides a portable interface to loading dynamic
// libraries into a process.
#ifndef __cmDynamicLoader_h
@@ -25,46 +25,16 @@
#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;
#elif defined(__APPLE__)
#include <AvailabilityMacros.h>
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1030
#include <mach-o/dyld.h>
typedef NSModule cmLibHandle;
#else
typedef void* cmLibHandle;
#endif
#else
typedef void* cmLibHandle;
#endif
// Return type from cmDynamicLoader::GetSymbolAddress.
typedef void (*cmDynamicLoaderFunction)();
#include <cmsys/DynamicLoader.hxx>
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 cmDynamicLoaderFunction GetSymbolAddress(cmLibHandle, const char*);
// The returned cmsys::DynamicLoader::LibraryHandle can be used to access
// the symbols in the library.
static cmsys::DynamicLoader::LibraryHandle OpenLibrary(const char*);
// Description:
// Return the library prefix for the given architecture
@@ -74,19 +44,14 @@ public:
// 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();
// Description:
// Flush the cache of dynamic loader.
static void FlushCache();
protected:
cmDynamicLoader() {};
~cmDynamicLoader() {};
private:
cmDynamicLoader(const cmDynamicLoader&); // Not implemented.
void operator=(const cmDynamicLoader&); // Not implemented.