Utilities/ListSet.cs
author moel.mich
Tue, 25 May 2010 18:57:28 +0000
changeset 127 76aaf45a01c7
parent 109 70d0c3102424
permissions -rw-r--r--
Added a workaround for the "You must keep the stream open for the lifetime of the Image." problem of the Image.FromStream method. This also reduced the overall memory usage (private working set).
moel@109
     1
/*
moel@109
     2
  
moel@109
     3
  Version: MPL 1.1/GPL 2.0/LGPL 2.1
moel@109
     4
moel@109
     5
  The contents of this file are subject to the Mozilla Public License Version
moel@109
     6
  1.1 (the "License"); you may not use this file except in compliance with
moel@109
     7
  the License. You may obtain a copy of the License at
moel@109
     8
 
moel@109
     9
  http://www.mozilla.org/MPL/
moel@109
    10
moel@109
    11
  Software distributed under the License is distributed on an "AS IS" basis,
moel@109
    12
  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
moel@109
    13
  for the specific language governing rights and limitations under the License.
moel@109
    14
moel@109
    15
  The Original Code is the Open Hardware Monitor code.
moel@109
    16
moel@109
    17
  The Initial Developer of the Original Code is 
moel@109
    18
  Michael Möller <m.moeller@gmx.ch>.
moel@109
    19
  Portions created by the Initial Developer are Copyright (C) 2009-2010
moel@109
    20
  the Initial Developer. All Rights Reserved.
moel@109
    21
moel@109
    22
  Contributor(s):
moel@109
    23
moel@109
    24
  Alternatively, the contents of this file may be used under the terms of
moel@109
    25
  either the GNU General Public License Version 2 or later (the "GPL"), or
moel@109
    26
  the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
moel@109
    27
  in which case the provisions of the GPL or the LGPL are applicable instead
moel@109
    28
  of those above. If you wish to allow use of your version of this file only
moel@109
    29
  under the terms of either the GPL or the LGPL, and not to allow others to
moel@109
    30
  use your version of this file under the terms of the MPL, indicate your
moel@109
    31
  decision by deleting the provisions above and replace them with the notice
moel@109
    32
  and other provisions required by the GPL or the LGPL. If you do not delete
moel@109
    33
  the provisions above, a recipient may use your version of this file under
moel@109
    34
  the terms of any one of the MPL, the GPL or the LGPL.
moel@109
    35
 
moel@109
    36
*/
moel@109
    37
moel@109
    38
using System;
moel@110
    39
using System.Collections;
moel@109
    40
using System.Collections.Generic;
moel@109
    41
using System.Text;
moel@109
    42
moel@109
    43
namespace OpenHardwareMonitor.Utilities {
moel@110
    44
  public class ListSet<T> : IEnumerable<T> {
moel@109
    45
moel@109
    46
    private List<T> list = new List<T>();
moel@109
    47
moel@109
    48
    public ListSet() { }
moel@109
    49
moel@109
    50
    public bool Add(T item) {
moel@109
    51
      if (list.Contains(item))
moel@109
    52
        return false;
moel@109
    53
moel@109
    54
      list.Add(item);
moel@109
    55
      return true;
moel@109
    56
    }
moel@109
    57
moel@109
    58
    public bool Remove(T item) {
moel@109
    59
      if (!list.Contains(item))
moel@109
    60
        return false;
moel@109
    61
moel@109
    62
      list.Remove(item);
moel@109
    63
      return true;
moel@109
    64
    }
moel@109
    65
moel@109
    66
    public bool Contains(T item) {
moel@109
    67
      return list.Contains(item);
moel@109
    68
    }
moel@110
    69
moel@110
    70
    public T[] ToArray() {
moel@110
    71
      return list.ToArray();
moel@110
    72
    }
moel@110
    73
moel@110
    74
    public IEnumerator<T> GetEnumerator() {
moel@110
    75
      return list.GetEnumerator();
moel@110
    76
    }
moel@110
    77
moel@110
    78
    IEnumerator IEnumerable.GetEnumerator() {
moel@110
    79
      return list.GetEnumerator();
moel@110
    80
    }
moel@109
    81
  }
moel@109
    82
}