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