1 /*
2 Copyright (C) 2005-2007 Feeling Software Inc.
3 Portions of the code are:
4 Copyright (C) 2005-2007 Sony Computer Entertainment America
5
6 MIT License: http://www.opensource.org/licenses/mit-license.php
7 */
8
9 #include "StdAfx.h"
10 #include "FCDocument/FCDVersion.h"
11
12 //
13 // FCDVersion
14 //
FCDVersion()15 FCDVersion::FCDVersion()
16 : major(0), minor(0), revision(0)
17 {
18 }
19
FCDVersion(const fm::string & v)20 FCDVersion::FCDVersion(const fm::string& v)
21 {
22 ParseVersionNumbers(v);
23 }
24
FCDVersion(uint32 _major,uint32 _minor,uint32 _revision)25 FCDVersion::FCDVersion(uint32 _major, uint32 _minor, uint32 _revision)
26 : major(_major), minor(_minor), revision(_revision)
27 {
28 }
29
ParseVersionNumbers(const fm::string & _v)30 void FCDVersion::ParseVersionNumbers(const fm::string& _v)
31 {
32 const char* v = _v.c_str();
33 major = FUStringConversion::ToUInt32(v);
34 while (*v != 0 && *v != '.') { ++v; } if (*v != 0) ++v; // skip the '.'
35 minor = FUStringConversion::ToUInt32(v);
36 while (*v != 0 && *v != '.') { ++v; } if (*v != 0) ++v; // skip the '.'
37 revision = FUStringConversion::ToUInt32(v);
38 }
39
IsEquivalent(const FCDVersion & a,const FCDVersion & b)40 bool IsEquivalent(const FCDVersion& a, const FCDVersion& b)
41 {
42 return a.major == b.major && a.minor == b.minor && a.revision == b.revision;
43 }
44
operator <(const FCDVersion & b) const45 bool FCDVersion::operator< (const FCDVersion& b) const
46 {
47 if (major < b.major) return true;
48 if (major > b.major) return false;
49 if (minor < b.minor) return true;
50 if (minor > b.minor) return false;
51 return revision < b.revision;
52 }
53
operator <=(const FCDVersion & b) const54 bool FCDVersion::operator<= (const FCDVersion& b) const
55 {
56 if (major < b.major) return true;
57 if (major > b.major) return false;
58 if (minor < b.minor) return true;
59 if (minor > b.minor) return false;
60 return revision <= b.revision;
61 }
62