Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkDynamicLoader.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkDynamicLoader.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00026 #ifndef __vtkDynamicLoader_h
00027 #define __vtkDynamicLoader_h
00028 #include "vtkObject.h"
00029 
00030 //BTX
00031 // Ugly stuff for library handles
00032 // They are different on several different OS's
00033 #if defined(__hpux)
00034 # include <dl.h> // Needed for special dynamic loading on hp
00035   typedef shl_t vtkLibHandle;
00036 #elif defined(_WIN32)
00037   typedef HMODULE vtkLibHandle;
00038 #else
00039   typedef void* vtkLibHandle;
00040 #endif
00041 //ETX
00042 
00043 
00044 
00045 class VTK_COMMON_EXPORT vtkDynamicLoader : public vtkObject
00046 {
00047 public:
00048   static vtkDynamicLoader* New();
00049   vtkTypeRevisionMacro(vtkDynamicLoader,vtkObject);
00050 
00051   //BTX
00054   static vtkLibHandle OpenLibrary(const char*);
00055 
00057 
00059   static int CloseLibrary(vtkLibHandle);
00060   //ETX
00062   
00064   static void* GetSymbolAddress(vtkLibHandle, const char*);
00065 
00067   static const char* LibPrefix();
00068 
00070   static const char* LibExtension();
00071 
00073   static const char* LastError();
00074   
00075 protected:
00076   vtkDynamicLoader() {};
00077   ~vtkDynamicLoader() {};
00078 
00079   
00080 private:
00081   vtkDynamicLoader(const vtkDynamicLoader&);  // Not implemented.
00082   void operator=(const vtkDynamicLoader&);  // Not implemented.
00083 };
00084 
00085 #endif