00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkDynamicLoader_h
00018
#define __itkDynamicLoader_h
00019
00020
#include "itkMacro.h"
00021
00022
00023
00024
#if defined(__hpux)
00025
# include <dl.h>
00026
namespace itk
00027 {
00028
typedef shl_t
LibHandle;
00029 }
00030
#elif defined(_WIN32)
00031
#include "itkWindows.h"
00032
00033
namespace itk
00034 {
00035
typedef HMODULE
LibHandle;
00036 }
00037
#elif defined(__powerpc)
00038
namespace itk
00039 {
00040
typedef ConnectionID
LibHandle;
00041 }
00042
#else
00043
namespace itk
00044 {
00045 typedef void*
LibHandle;
00046 }
00047
#endif
00048
00049
#include "itkObject.h"
00050
#include "itkObjectFactory.h"
00051
00052
namespace itk
00053 {
00054
00065 class ITKCommon_EXPORT DynamicLoader :
public Object
00066 {
00067
public:
00069 typedef DynamicLoader
Self;
00070 typedef Object Superclass;
00071 typedef SmartPointer<Self> Pointer;
00072 typedef SmartPointer<const Self> ConstPointer;
00073
00075
itkNewMacro(
Self);
00076
00078
itkTypeMacro(DynamicLoader,
Object);
00079
00083
static LibHandle OpenLibrary(
const char*);
00084
00087
static int CloseLibrary(
LibHandle);
00088
00090
static void* GetSymbolAddress(
LibHandle,
const char*);
00091
00093
static const char* LibPrefix();
00094
00096
static const char* LibExtension();
00097
00099
static const char* LastError();
00100
00101
protected:
00102 DynamicLoader() {};
00103 ~DynamicLoader() {};
00104
00105
private:
00106 DynamicLoader(
const Self&);
00107
void operator=(
const Self&);
00108
00109 };
00110
00111 }
00112
00113
#endif