INTRODUCTION Overview Download and Install Quick Start Documentation Publications NONFRAMEWORK CODE Driver Interfaces Drivers Libraries Utilities FRAMEWORK CODE Interfaces Components Libraries Utilities Full Software Listings DEVELOPER Tutorials Examples Dev Guide Dashboard PEOPLE Contributors Users Project Download Mailing lists
|
multiimplementation.h00001 #ifndef HYDRO_DLLTEST_MULTI_IMPLEMENTATION_H 00002 #define HYDRO_DLLTEST_MULTI_IMPLEMENTATION_H 00003 00004 #include "interface.h" 00005 #include <string> 00006 #include <hydroportability/sharedlib.h> 00007 00008 namespace dlltest { 00009 00010 class SOEXPORT TwoImplementation : public Interface 00011 { 00012 public: 00013 TwoImplementation() : number_(2) {}; 00014 virtual int number() const; 00015 00016 private: 00017 int number_; 00018 }; 00019 00020 class SOEXPORT ThreeImplementation : public Interface 00021 { 00022 public: 00023 ThreeImplementation() : number_(3) {}; 00024 virtual int number() const; 00025 00026 private: 00027 int number_; 00028 }; 00029 00030 // Helper class to instantiate drivers 00031 class SOEXPORT MyFactory : public Factory 00032 { 00033 public: 00034 virtual Interface* create( int number ) const 00035 { 00036 switch ( number ) 00037 { 00038 case 2 : 00039 return new TwoImplementation; 00040 case 3 : 00041 return new ThreeImplementation; 00042 default : 00043 throw std::string("Unsupported implementation type"); 00044 } 00045 } 00046 }; 00047 00048 } // namespace 00049 00050 // Used for dynamically loading driver 00051 extern "C" { 00052 SOEXPORT dlltest::Factory *createFactory(); 00053 } 00054 00055 #endif |
Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)