| author | moel.mich | 
| Sun, 21 Jul 2013 14:17:11 +0000 | |
| changeset 413 | 362c5e77197d | 
| 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 | } |