00001 #if !defined(__MCLIBRARY_H_)
00002 #define __MCLIBRARY_H_
00003
00004 #ident "@(#)$Id: MCLibrary.h,v 1.4 2004/12/02 07:05:20 mike Exp $"
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "mcllib/MCBase.h"
00026 #include "mcllib/MCTypes.h"
00027 #include "mcllib/MCString.h"
00028
00029 namespace mclpriv
00030 {
00031 class LibraryImpl;
00032 };
00033
00034 namespace mcllib
00035 {
00046 class MCLibrarySym : public MCBase
00047 {
00048 public:
00053 typedef void (*MCFuncSym)();
00058 typedef void* MCAnySym;
00059
00064 const MCString& getName() const;
00069 bool isFunction() const;
00080 operator MCFuncSym() const;
00091 operator MCAnySym() const;
00092
00093 private:
00094 friend class mclpriv::LibraryImpl;
00095
00096 MCLibrarySym(void* impl);
00097 };
00098
00119 class MCLibrary : public MCBase
00120 {
00121 public:
00127 MCLibrary();
00134 MCLibrary(const MCString& libName);
00152 MCLibrarySym find(const MCString& symbol, bool isFunction);
00157 const MCString& getName() const;
00158 };
00159 };
00160
00161 extern "C" {
00168 #if defined(WIN32)
00169 #define MCL_EXPORT extern _declspec(dllexport)
00170 #else
00171 #define MCL_EXPORT extern
00172 #endif
00173 MCL_EXPORT void MCLibMain(bool load);
00174
00175 };
00176
00177
00178 #endif