00001 /* 00002 * This file contains class that helps you load working unit from DLL. 00003 * 00004 * Author: 00005 * Tomas Mrkvicka 00006 * xmrkvi03@stud.fit.vutbr.cz 00007 * 00008 */ 00009 00010 #include <windows.h> 00011 00012 //FORWARD DECLARATIONS 00013 namespace NSPipeline 00014 { 00015 class TUnitLoader; 00016 }; 00017 00018 #ifndef _PIPELINE_UNITLOADER_HH_ 00019 #define _PIPELINE_UNITLOADER_HH_ 00020 00021 #include "pipeline/Unit.h" 00022 00023 namespace NSPipeline 00024 { 00025 00026 //////////////////////////////////////////////////////////////////////////////// 00027 //////////////////////////////////////////////////////////////////////////////// 00028 //////////////////////////////////////////////////////////////////////////////// 00029 // TUnitLoader 00030 00031 /** Tato trida nacte pracovni jednotku ze zadane DLL. 00032 * 00033 * Vytvoreny objekt v sobe udrzuje nactenou DLL. 00034 * 00035 * Jakmile objekt vrati jednotku pak je tato ulozena a je vracena vzdy. 00036 * 00037 * Pred znicenim tohoto objektu musi byt jednotka jim vytvorena take znicena. 00038 */ 00039 class TUnitLoader 00040 { 00041 //PUBLIC METHODS 00042 public: 00043 TUnitLoader(void); 00044 ~TUnitLoader(void); 00045 00046 TUnitInterface* GetUnit_BASIC( const char * dllName, TDispatcherInterface * dispatcher ); 00047 TUnitInterface* GetUnit_STRING( const char * dllName, TDispatcherInterface * dispatcher, const char * str ); 00048 00049 //PROTECTED FAKE METHODS 00050 protected: 00051 TUnitLoader( const TUnitLoader & orig ); ///< falesny kopirovaci konstruktor 00052 void operator=( const TUnitLoader & orig ); ///< falesny prirazovaci operator 00053 00054 00055 //PRIVATE COMPONENTS 00056 private: 00057 TUnitInterface* m_unit; ///< vracena jednotka z DLL 00058 HMODULE m_library; ///< pouzita knihovna 00059 }; 00060 //OK 2007-08-25 18:22:45 B04-315B\Tom 00061 00062 // TUnitLoader 00063 //////////////////////////////////////////////////////////////////////////////// 00064 //////////////////////////////////////////////////////////////////////////////// 00065 //////////////////////////////////////////////////////////////////////////////// 00066 00067 }; //END of NSPipeline 00068 using namespace NSPipeline; 00069 00070 #endif