Collections/ReadOnlyArray.cs
author moel.mich
Sun, 23 Sep 2012 18:37:43 +0000
changeset 380 573f1fff48b2
parent 195 0ee888c485d5
permissions -rw-r--r--
Fixed Issue 387. The new implementation does not try to start a ring 0 driver that already exists, but could not be opened. It tries to delete the driver and install it new. The driver is now stored temporarily in the application folder. The driver is not correctly removed on system shutdown.
moel@165
     1
/*
moel@165
     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@165
     6
 
moel@344
     7
  Copyright (C) 2009-2010 Michael Möller <mmoeller@openhardwaremonitor.org>
moel@344
     8
	
moel@165
     9
*/
moel@165
    10
moel@165
    11
using System.Collections;
moel@165
    12
using System.Collections.Generic;
moel@165
    13
moel@165
    14
namespace OpenHardwareMonitor.Collections {
moel@165
    15
moel@165
    16
  public class ReadOnlyArray<T> : IReadOnlyArray<T> {
moel@165
    17
moel@195
    18
    private readonly T[] array;
moel@165
    19
moel@165
    20
    public ReadOnlyArray(T[] array) {
moel@165
    21
      this.array = array;
moel@165
    22
    }
moel@165
    23
moel@165
    24
    public T this[int index] {
moel@165
    25
      get { return array[index]; }
moel@165
    26
    }
moel@165
    27
moel@165
    28
    public int Length { get { return array.Length; } }
moel@165
    29
moel@165
    30
    public IEnumerator<T> GetEnumerator() {
moel@165
    31
      return ((IEnumerable<T>)array).GetEnumerator();
moel@165
    32
    }
moel@165
    33
moel@165
    34
    IEnumerator IEnumerable.GetEnumerator() {
moel@165
    35
      return array.GetEnumerator();
moel@165
    36
    }
moel@165
    37
moel@165
    38
    public static implicit operator ReadOnlyArray<T>(T[] array) {
moel@165
    39
      return new ReadOnlyArray<T>(array);
moel@165
    40
    }
moel@167
    41
moel@167
    42
    public T[] ToArray() {
moel@167
    43
      return (T[])array.Clone();
moel@167
    44
    }
moel@165
    45
  }
moel@165
    46
}