PCMDynLoad.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00027
00028 #ifndef __PCM_DYNLOAD_H__
00029 # define __PCM_DYNLOAD_H__
00030
00031
00032
00033
00034
00035 # include "PCMPremeditations.h"
00036
00037 # include "PCMException.h"
00038
00039 # include "PCMLogger.h"
00040
00041 # include "PCMPointer.h"
00042
00043 namespace ParCompMark
00044 {
00045
00050 class DynLoad
00051 {
00052
00053
00054
00055
00056 # ifdef PARCOMPMARK_TEST
00057 friend class ParCompMarkTest::TestDynLoad;
00058 # endif
00059
00060
00061
00062
00063
00064 public:
00065
00067 typedef Pointer < DynLoad,
00068 Mutex > Pointer;
00069
00070
00071
00072
00073
00075
00076
00077 protected:
00078
00084 void *mHandle;
00085
00091 std::string mLibraryName;
00092
00094
00095
00096
00097
00098
00100
00101
00102 public:
00103
00108 DynLoad(const std::string & libName);
00109
00113 virtual ~ DynLoad();
00114
00116
00117
00118
00119
00120
00122
00123
00124 public:
00125
00131 void *getHandle() const;
00132
00138 const std::string & getLibraryName() const;
00139
00141
00142
00143
00144
00145
00147
00148
00149 public:
00150
00156 virtual bool hasFunction(const std::string & funcName) const;
00157
00163 virtual void *getFunction(const std::string & funcName) const;
00164
00165 protected:
00166
00170 virtual void load();
00171
00175 virtual void unload();
00176
00178
00179 };
00180
00181
00182
00183
00184
00185 # include "PCMDynLoad_impl.h"
00186
00187 }
00188
00189 #endif