2006-02-29 Carlos Alberto Cortez <calberto.cortez@gmail.com>
[mono.git] / mcs / class / ByteFX.Data / Common / Version.cs
1 // ByteFX.Data data access components for .Net\r
2 // Copyright (C) 2002-2004  ByteFX, Inc.\r
3 //\r
4 // This library is free software; you can redistribute it and/or\r
5 // modify it under the terms of the GNU Lesser General Public\r
6 // License as published by the Free Software Foundation; either\r
7 // version 2.1 of the License, or (at your option) any later version.\r
8 // \r
9 // This library is distributed in the hope that it will be useful,\r
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
12 // Lesser General Public License for more details.\r
13 // \r
14 // You should have received a copy of the GNU Lesser General Public\r
15 // License along with this library; if not, write to the Free Software\r
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
17 \r
18 using System;\r
19 \r
20 namespace ByteFX.Data.Common\r
21 {\r
22         /// <summary>\r
23         /// Summary description for Version.\r
24         /// </summary>\r
25         internal struct DBVersion\r
26         {\r
27                 private int     major;\r
28                 private int minor;\r
29                 private int build;\r
30 \r
31                 public DBVersion( int major, int minor, int build)\r
32                 {\r
33                         this.major = major;\r
34                         this.minor = minor;\r
35                         this.build = build;\r
36                 }\r
37 \r
38                 public static DBVersion Parse( string versionString )\r
39                 {\r
40                         int start = 0;\r
41                         int index = versionString.IndexOf('.', start);\r
42                         if (index == -1) throw new Exception("Version string not in acceptable format");\r
43                         int major = Convert.ToInt32( versionString.Substring(start, index-start).Trim());\r
44 \r
45                         start = index+1;\r
46                         index = versionString.IndexOf('.', start);\r
47                         if (index == -1) throw new Exception("Version string not in acceptable format");\r
48                         int minor = Convert.ToInt32( versionString.Substring(start, index-start).Trim());\r
49 \r
50                         start = index+1;\r
51                         int i = start;\r
52                         while (i < versionString.Length && Char.IsDigit( versionString, i ))\r
53                                 i++;\r
54                         int build = Convert.ToInt32( versionString.Substring(start, i-start).Trim());\r
55 \r
56                         return new DBVersion( major, minor, build );\r
57                 }\r
58 \r
59                 public bool isAtLeast(int major, int minor, int build)\r
60                 {\r
61                         if (this.major > major) return true;\r
62                         if (this.major == major && this.minor > minor) return true;\r
63                         if (this.major == major && this.minor == minor && this.build >= build) return true;\r
64                         return false;\r
65                 }\r
66 \r
67         }\r
68 }\r