Collections/ReadOnlyArray.cs
author sl
Sun, 03 Feb 2013 18:01:50 +0100
changeset 391 ca4c0e7ae75d
parent 195 0ee888c485d5
permissions -rw-r--r--
Converted project to VisualStudio 2012.
Adding SoundGraphDisplay and SensorFrontView classes.
They were respectively based on SystemTray and SensorNotifyIcon.
SoundGraphDisplay is now able to load iMONDisplay.dll providing it lives on your PATH.
Adding option to sensor context menu for adding it into FrontView.
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
}