| author | StephaneLenclud |
| Sun, 03 Feb 2013 18:01:50 +0100 | |
| branch | MiniDisplay |
| changeset 433 | 090259cfd699 |
| parent 195 | 0ee888c485d5 |
| permissions | -rw-r--r-- |
| moel@109 | 1 |
/* |
| moel@109 | 2 |
|
| moel@344 | 3 |
This Source Code Form is subject to the terms of the Mozilla Public |
| moel@344 | 4 |
License, v. 2.0. If a copy of the MPL was not distributed with this |
| moel@344 | 5 |
file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| moel@109 | 6 |
|
| moel@344 | 7 |
Copyright (C) 2009-2010 Michael Möller <mmoeller@openhardwaremonitor.org> |
| moel@344 | 8 |
|
| moel@109 | 9 |
*/ |
| moel@109 | 10 |
|
| moel@109 | 11 |
using System; |
| moel@195 | 12 |
using System.Collections.Generic; |
| moel@109 | 13 |
using System.Text; |
| moel@109 | 14 |
|
| moel@109 | 15 |
namespace OpenHardwareMonitor.Hardware {
|
| moel@176 | 16 |
public class Identifier : IComparable<Identifier> {
|
| moel@195 | 17 |
private readonly string identifier; |
| moel@109 | 18 |
|
| moel@195 | 19 |
private const char Separator = '/'; |
| moel@109 | 20 |
|
| moel@195 | 21 |
private static void CheckIdentifiers(IEnumerable<string> identifiers) {
|
| moel@109 | 22 |
foreach (string s in identifiers) |
| moel@195 | 23 |
if (s.Contains(" ") || s.Contains(Separator.ToString()))
|
| moel@109 | 24 |
throw new ArgumentException("Invalid identifier");
|
| moel@109 | 25 |
} |
| moel@109 | 26 |
|
| moel@109 | 27 |
public Identifier(params string[] identifiers) {
|
| moel@109 | 28 |
CheckIdentifiers(identifiers); |
| moel@109 | 29 |
|
| moel@109 | 30 |
StringBuilder s = new StringBuilder(); |
| moel@109 | 31 |
for (int i = 0; i < identifiers.Length; i++) {
|
| moel@195 | 32 |
s.Append(Separator); |
| moel@109 | 33 |
s.Append(identifiers[i]); |
| moel@109 | 34 |
} |
| moel@109 | 35 |
this.identifier = s.ToString(); |
| moel@109 | 36 |
} |
| moel@109 | 37 |
|
| moel@109 | 38 |
public Identifier(Identifier identifier, params string[] extensions) {
|
| moel@109 | 39 |
CheckIdentifiers(extensions); |
| moel@109 | 40 |
|
| moel@109 | 41 |
StringBuilder s = new StringBuilder(); |
| moel@109 | 42 |
s.Append(identifier.ToString()); |
| moel@109 | 43 |
for (int i = 0; i < extensions.Length; i++) {
|
| moel@195 | 44 |
s.Append(Separator); |
| moel@109 | 45 |
s.Append(extensions[i]); |
| moel@109 | 46 |
} |
| moel@109 | 47 |
this.identifier = s.ToString(); |
| moel@109 | 48 |
} |
| moel@109 | 49 |
|
| moel@109 | 50 |
public override string ToString() {
|
| moel@109 | 51 |
return identifier; |
| moel@109 | 52 |
} |
| moel@109 | 53 |
|
| moel@195 | 54 |
public override bool Equals(Object obj) {
|
| moel@109 | 55 |
if (obj == null) |
| moel@109 | 56 |
return false; |
| moel@109 | 57 |
|
| moel@109 | 58 |
Identifier id = obj as Identifier; |
| moel@109 | 59 |
if (id == null) |
| moel@109 | 60 |
return false; |
| moel@109 | 61 |
|
| moel@109 | 62 |
return (identifier == id.identifier); |
| moel@109 | 63 |
} |
| moel@109 | 64 |
|
| moel@109 | 65 |
public override int GetHashCode() {
|
| moel@109 | 66 |
return identifier.GetHashCode(); |
| moel@109 | 67 |
} |
| moel@176 | 68 |
|
| moel@176 | 69 |
public int CompareTo(Identifier other) {
|
| moel@176 | 70 |
if (other == null) |
| moel@176 | 71 |
return 1; |
| moel@176 | 72 |
else |
| moel@182 | 73 |
return string.Compare(this.identifier, other.identifier, |
| moel@182 | 74 |
StringComparison.Ordinal); |
| moel@176 | 75 |
} |
| moel@182 | 76 |
|
| moel@182 | 77 |
public static bool operator ==(Identifier id1, Identifier id2) {
|
| moel@184 | 78 |
if (id1.Equals(null)) |
| moel@184 | 79 |
return id2.Equals(null); |
| moel@182 | 80 |
else |
| moel@182 | 81 |
return id1.Equals(id2); |
| moel@182 | 82 |
} |
| moel@182 | 83 |
|
| moel@182 | 84 |
public static bool operator !=(Identifier id1, Identifier id2) {
|
| moel@182 | 85 |
return !(id1 == id2); |
| moel@182 | 86 |
} |
| moel@182 | 87 |
|
| moel@182 | 88 |
public static bool operator <(Identifier id1, Identifier id2) {
|
| moel@182 | 89 |
if (id1 == null) |
| moel@182 | 90 |
return id2 != null; |
| moel@182 | 91 |
else |
| moel@182 | 92 |
return (id1.CompareTo(id2) < 0); |
| moel@182 | 93 |
} |
| moel@182 | 94 |
|
| moel@182 | 95 |
public static bool operator >(Identifier id1, Identifier id2) {
|
| moel@182 | 96 |
if (id1 == null) |
| moel@182 | 97 |
return false; |
| moel@182 | 98 |
else |
| moel@182 | 99 |
return (id1.CompareTo(id2) > 0); |
| moel@182 | 100 |
} |
| moel@182 | 101 |
|
| moel@109 | 102 |
} |
| moel@109 | 103 |
} |