MyGUI 3.4.1
MyGUI_Version.h
Go to the documentation of this file.
1/*
2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3 * Distributed under the MIT License
4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5 */
6
7#ifndef MYGUI_VERSION_H_
8#define MYGUI_VERSION_H_
9
10#include "MyGUI_Prerequest.h"
11#include "MyGUI_Types.h"
12#include "MyGUI_StringUtility.h"
13
14namespace MyGUI
15{
16
18 {
19 public:
20
21 Version(unsigned int _major = 0, unsigned int _minor = 0, unsigned int _patch = 0) :
22 mMajor(_major),
23 mMinor(_minor),
24 mPatch(_patch)
25 {
26 }
27
28 friend bool operator < (Version const& a, Version const& b)
29 {
30 return (a.mMajor < b.mMajor) ? true : (a.mMinor < b.mMinor);
31 }
32
33 friend bool operator >= (Version const& a, Version const& b)
34 {
35 return !(a < b);
36 }
37
38 friend bool operator > (Version const& a, Version const& b)
39 {
40 return (b < a);
41 }
42
43 friend bool operator <= (Version const& a, Version const& b)
44 {
45 return !(a > b);
46 }
47
48 friend bool operator == (Version const& a, Version const& b)
49 {
50 return !(a < b) && !(a > b);
51 }
52
53 friend bool operator != (Version const& a, Version const& b)
54 {
55 return !(a == b);
56 }
57
58 friend std::ostream& operator << (std::ostream& _stream, const Version& _value)
59 {
60 _stream << _value.print();
61 return _stream;
62 }
63
64 friend std::istream& operator >> (std::istream& _stream, Version& _value)
65 {
66 std::string value;
67 _stream >> value;
68 _value = parse(value);
69 return _stream;
70 }
71
72 unsigned int getMajor() const
73 {
74 return mMajor;
75 }
76
77 unsigned int getMinor() const
78 {
79 return mMinor;
80 }
81
82 unsigned int getPatch() const
83 {
84 return mPatch;
85 }
86
87 std::string print() const
88 {
89 if (mPatch == 0)
90 return utility::toString(mMajor, ".", mMinor);
91 return utility::toString(mMajor, ".", mMinor, ".", mPatch);
92 }
93
94 static Version parse(const std::string& _value)
95 {
96 const std::vector<std::string>& vec = utility::split(_value, ".");
97 if (vec.empty())
98 return Version();
99
100 unsigned int major = utility::parseValue<unsigned int>(vec[0]);
101 unsigned int minor = vec.size() > 1 ? utility::parseValue<unsigned int>(vec[1]) : 0;
102 unsigned int patch = vec.size() > 2 ? utility::parseValue<unsigned int>(vec[2]) : 0;
103
104 return Version(major, minor, patch);
105 }
106
107 private:
108 unsigned mMajor : 8;
109 unsigned mMinor : 8;
110 unsigned mPatch : 16;
111 };
112
113} // namespace MyGUI
114
115#endif // MYGUI_VERSION_H_
#define MYGUI_EXPORT
unsigned int getMinor() const
Definition: MyGUI_Version.h:77
static Version parse(const std::string &_value)
Definition: MyGUI_Version.h:94
unsigned int getMajor() const
Definition: MyGUI_Version.h:72
std::string print() const
Definition: MyGUI_Version.h:87
Version(unsigned int _major=0, unsigned int _minor=0, unsigned int _patch=0)
Definition: MyGUI_Version.h:21
unsigned int getPatch() const
Definition: MyGUI_Version.h:82
std::vector< std::string > split(const std::string &_source, const std::string &_delims="\t\n ")
std::string toString(T p)
bool operator<=(const UString::_const_fwd_iterator &left, const UString::_const_fwd_iterator &right)
bool operator==(const UString::_const_fwd_iterator &left, const UString::_const_fwd_iterator &right)
bool operator>=(const UString::_const_fwd_iterator &left, const UString::_const_fwd_iterator &right)
bool operator>(const UString::_const_fwd_iterator &left, const UString::_const_fwd_iterator &right)
bool operator!=(const UString::_const_fwd_iterator &left, const UString::_const_fwd_iterator &right)
bool operator<(const UString::_const_fwd_iterator &left, const UString::_const_fwd_iterator &right)