Version.h

Go to the documentation of this file.
00001 /*
00002 
00003 Copyright (C) 2005-2007 by Peter Dimov.
00004 
00005 This file is part of Calitko (http://www.calitko.org).
00006 
00007 Calitko is free software; you can redistribute it and/or modify
00008 it under the terms of the GNU General Public License as published by
00009 the Free Software Foundation; either version 2 of the License, or
00010 (at your option) any later version.
00011 
00012 Calitko is distributed in the hope that it will be useful,
00013 but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Calitko; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020 
00021 */
00022 
00023 #ifndef UTILS_VERSION_H
00024 #define UTILS_VERSION_H
00025 
00026 // Open containing namespaces:
00027 namespace Utils {
00029 
00031 
00038 class Version
00039 {
00040 public:
00041                         Version (quint16 major = 0, quint16 minor = 0,
00042                                  quint16 revision = 0, quint16 build = 0);
00043                         Version (const QString &stringVersion);
00044                         ~Version();
00045 
00046     inline quint16      majorVersion() const;
00047     inline quint16      minorVersion() const;
00048     inline quint16      revision() const;
00049     inline quint16      build() const;
00050 
00051     inline void         setMajorVersion (quint16 major);
00052     inline void         setMinorVersion (quint16 minor);
00053     inline void         setRevision (quint16 revision);
00054     inline void         setBuild (quint16 build);
00055 
00056     QString             toString (bool shortForm = true) const;
00057 
00058 private:
00059 
00060     struct Private
00061     {
00062         quint16         major_;
00063         quint16         minor_;
00064         quint16         revision_;
00065         quint16         build_;
00066 
00067         Private() : major_ (0), minor_ (0), revision_ (0), build_ (0) {}
00068     } p;
00069 
00070     friend QDataStream & operator<< (QDataStream &stream, const Version &version);
00071     friend QDataStream & operator>> (QDataStream &stream, Version &version);
00072 };
00073 
00074 QDataStream & operator<< (QDataStream &stream, const Version &version);
00075 QDataStream & operator>> (QDataStream &stream, Version &version);
00076 
00078 // inline functions
00080 
00081 inline quint16 Version::majorVersion() const
00082 { return p.major_; }
00083 
00084 inline quint16 Version::minorVersion() const
00085 { return p.minor_; }
00086 
00087 inline quint16 Version::revision() const
00088 { return p.revision_; }
00089 
00090 inline quint16 Version::build() const
00091 { return p.build_; }
00092 
00093 inline void Version::setMajorVersion (quint16 major_)
00094 { p.major_ = major_; }
00095 
00096 inline void Version::setMinorVersion (quint16 minor_)
00097 { p.minor_ = minor_; }
00098 
00099 inline void Version::setRevision (quint16 revision_)
00100 { p.revision_ = revision_; }
00101 
00102 inline void Version::setBuild (quint16 build_)
00103 { p.build_ = build_; }
00104 
00105 inline QString Version::toString (bool shortForm) const
00106 { QString res = QString ("%1.%2").arg (p.major_). arg (p.minor_);
00107   if (!shortForm) res += QString (".%3.%4").arg (p.revision_).arg (p.build_);
00108   return res; }
00109 
00110 // Close containing namespaces:
00111 } // namespace Utils
00113 
00114 #endif // UTILS_VERSION_H