00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef CEYLAN_VERSION_H_
00028 #define CEYLAN_VERSION_H_
00029
00030
00031 #include "CeylanTextDisplayable.h"
00032 #include "CeylanTypes.h"
00033 #include "CeylanException.h"
00034
00035
00036 #include <string>
00037
00038
00039 namespace Ceylan
00040 {
00041
00042
00043
00044 class CEYLAN_DLL VersionException : public Ceylan::Exception
00045 {
00046
00047 public:
00048
00049 VersionException( const std::string & message ) ;
00050 virtual ~VersionException() throw() ;
00051
00052 } ;
00053
00054
00055
00064 class CEYLAN_DLL Version : public TextDisplayable
00065 {
00066
00067
00068 public:
00069
00070
00076 typedef Ceylan::Uint8 VersionNumber ;
00077
00078
00089 explicit Version( VersionNumber major = 0, VersionNumber minor = 0,
00090 VersionNumber release = 0 ) ;
00091
00092
00105 explicit Version( const std::string & versionText ) ;
00106
00107
00108
00110 virtual ~Version() throw() ;
00111
00112
00113
00115 virtual VersionNumber getMajorNumber() const ;
00116
00118 virtual void setMajorNumber( VersionNumber newNumber ) ;
00119
00120
00121
00123 virtual VersionNumber getMinorNumber() const ;
00124
00126 virtual void setMinorNumber( VersionNumber newNumber ) ;
00127
00128
00129
00135 virtual VersionNumber getReleaseNumber() const ;
00136
00142 virtual void setReleaseNumber( VersionNumber newNumber ) ;
00143
00144
00168 virtual bool isCompatibleWith( const Version & expectedVersion )
00169 const ;
00170
00171
00182 virtual bool canBeComparedWith( const Version & version )
00183 const ;
00184
00185
00196 virtual const std::string toString( VerbosityLevels level = high )
00197 const ;
00198
00199
00200
00201 protected:
00202
00203
00214 virtual bool isUsualVersionSchemeCompliant() const ;
00215
00216
00217
00219 VersionNumber _major ;
00220
00221
00223 VersionNumber _minor ;
00224
00225
00231 VersionNumber _release ;
00232
00233
00234
00235 private:
00236
00237
00245 Version( const Version & source ) ;
00246
00247
00255 Version & operator = ( const Version & source ) ;
00256
00257
00258 } ;
00259
00260 }
00261
00262
00263
00273 CEYLAN_DLL bool operator < ( const Ceylan::Version & vfirst,
00274 const Ceylan::Version & vsecond ) ;
00275
00276
00286 CEYLAN_DLL bool operator == ( const Ceylan::Version & vFirst,
00287 const Ceylan::Version & vSecond ) ;
00288
00289
00290
00291 #endif // CEYLAN_VERSION_H_
00292