00001 #ifndef OBTPluginInformation_H 00002 #define OBTPluginInformation_H 00003 00004 #include <string> 00005 #include <sstream> 00006 00007 #include "OBT.h" 00008 00009 namespace OBT 00010 { 00019 class OBT_API PluginInformation 00020 { 00021 public: 00022 00026 PluginInformation( const char* pluginName, 00027 const char* description, 00028 unsigned int majorVersion, 00029 unsigned int minorVersion, 00030 const char* versionLabel, 00031 const char* releaseDate ) ; 00032 00036 virtual ~PluginInformation() ; 00037 00038 00043 const char* getPluginName() const ; 00044 00049 const char* getDescription() const ; 00050 00055 unsigned int getMajorVersion() const ; 00056 00061 unsigned int getMinorVersion() const ; 00062 00067 const char* getVersionLabel() const ; 00068 00073 const char* getReleaseDate() const ; 00074 00080 bool operator < ( const PluginInformation& pluginInformation ) const ; 00081 00087 bool operator == ( const PluginInformation& pluginInformation ) const ; 00088 00094 bool operator != ( const PluginInformation& pluginInformation ) const ; 00095 00100 const char* getCString() const ; 00101 00103 static const PluginInformation Unknown ; 00104 00105 private: 00106 00108 std::string _pluginName ; 00109 00111 std::string _description ; 00112 00114 unsigned int _majorVersion ; 00115 00117 unsigned int _minorVersion ; 00118 00120 std::string _versionLabel ; 00121 00123 std::string _releaseDate ; 00124 } ; 00125 00126 //------------------------------------------------------------------------- 00127 // getPluginName 00128 //------------------------------------------------------------------------- 00129 inline const char* 00130 PluginInformation::getPluginName() const 00131 { 00132 return _pluginName.c_str(); 00133 } 00134 00135 //------------------------------------------------------------------------- 00136 // getDescription 00137 //------------------------------------------------------------------------- 00138 inline const char* 00139 PluginInformation::getDescription() const 00140 { 00141 return _description.c_str() ; 00142 } 00143 00144 //------------------------------------------------------------------------- 00145 // GetVersionMajor 00146 //------------------------------------------------------------------------- 00147 inline unsigned int 00148 PluginInformation::getMajorVersion() const 00149 { 00150 return _majorVersion ; 00151 } 00152 00153 //------------------------------------------------------------------------- 00154 // GetVersionMinor 00155 //------------------------------------------------------------------------- 00156 inline unsigned int 00157 PluginInformation::getMinorVersion() const 00158 { 00159 return _minorVersion ; 00160 } 00161 00162 //------------------------------------------------------------------------- 00163 // getVersionLabel 00164 //------------------------------------------------------------------------- 00165 inline const char* 00166 PluginInformation::getVersionLabel() const 00167 { 00168 return _versionLabel.c_str(); 00169 } 00170 00171 //------------------------------------------------------------------------- 00172 // getReleaseDate 00173 //------------------------------------------------------------------------- 00174 inline const char* 00175 PluginInformation::getReleaseDate() const 00176 { 00177 return _releaseDate.c_str(); 00178 } 00179 00180 //------------------------------------------------------------------------- 00181 // operator const char* 00182 //------------------------------------------------------------------------- 00183 inline const char* 00184 PluginInformation::getCString() const 00185 { 00186 // WARNING : not thread-safe 00187 std::string information ; 00188 std::stringstream stream ; 00189 00190 information = _pluginName ; 00191 information += " - " ; 00192 stream << getMajorVersion() ; 00193 information += stream.str() ; 00194 information += "." ; 00195 stream.clear() ; 00196 stream << getMinorVersion() ; 00197 information += stream.str() ; 00198 information += " - " ; 00199 information += _versionLabel ; 00200 information += " - " ; 00201 information += _releaseDate ; 00202 if ( !_description.empty() ) 00203 { 00204 information += " - " ; 00205 information += _description ; 00206 } 00207 return information.c_str() ; 00208 } 00209 //------------------------------------------------------------------------- 00210 // operator < 00211 //------------------------------------------------------------------------- 00212 inline bool 00213 PluginInformation::operator < ( const PluginInformation& pluginInformation ) const 00214 { 00215 if ( _majorVersion < pluginInformation.getMajorVersion() ) 00216 { 00217 return true; 00218 } 00219 else if ( _majorVersion == pluginInformation.getMajorVersion() ) 00220 { 00221 return ( _minorVersion < pluginInformation.getMinorVersion() ) ; 00222 } 00223 else 00224 { 00225 return false ; 00226 } 00227 } 00228 00229 //------------------------------------------------------------------------- 00230 // operator == 00231 //------------------------------------------------------------------------- 00232 inline bool 00233 PluginInformation::operator == ( const PluginInformation& pluginInformation ) const 00234 { 00235 return( ( _majorVersion == pluginInformation.getMajorVersion() ) && 00236 ( _minorVersion == pluginInformation.getMinorVersion() ) && 00237 ( _versionLabel == pluginInformation._versionLabel ) ) ; 00238 } 00239 00240 //------------------------------------------------------------------------- 00241 // operator != 00242 //------------------------------------------------------------------------- 00243 inline bool 00244 PluginInformation::operator != ( const PluginInformation& pluginInformation ) const 00245 { 00246 return( ( _majorVersion != pluginInformation.getMajorVersion() ) || 00247 ( _minorVersion != pluginInformation.getMinorVersion() ) || 00248 ( _versionLabel != pluginInformation._versionLabel ) ) ; 00249 } 00250 } 00251 #endif //OBTPluginInformation_H