author | sl |
Sun, 03 Feb 2013 19:06:01 +0100 | |
changeset 392 | 8af90fa0940f |
parent 195 | 0ee888c485d5 |
permissions | -rw-r--r-- |
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 |
} |