You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by di...@apache.org on 2011/05/17 18:10:08 UTC
[Lucene.Net] svn commit: r1104372 -
/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Support/WeakDictionary.cs
Author: digy
Date: Tue May 17 16:10:08 2011
New Revision: 1104372
URL: http://svn.apache.org/viewvc?rev=1104372&view=rev
Log:
[LUCENENET-412]
Added:
incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Support/WeakDictionary.cs
Added: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Support/WeakDictionary.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Support/WeakDictionary.cs?rev=1104372&view=auto
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Support/WeakDictionary.cs (added)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Support/WeakDictionary.cs Tue May 17 16:10:08 2011
@@ -0,0 +1,157 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Lucene.Net.Support
+{
+ /// <summary>
+ /// Just a wrapper for WeakHashtable
+ /// </summary>
+ public class WeakDictionary<K, V> : IDictionary<K, V>
+ {
+ Lucene.Net.Support.WeakHashTable _WeakHashtable = new Lucene.Net.Support.WeakHashTable();
+
+ public void Add(K key, V value)
+ {
+ _WeakHashtable.Add(key, value);
+ }
+
+ public bool ContainsKey(K key)
+ {
+ return _WeakHashtable.ContainsKey(key);
+ }
+
+ public ICollection<K> Keys
+ {
+ get
+ {
+ System.Collections.ArrayList list = (System.Collections.ArrayList)_WeakHashtable.Keys;
+ K[] keys = new K[list.Count];
+ _WeakHashtable.Keys.CopyTo(keys, 0);
+ return keys;
+ }
+ }
+
+ public bool Remove(K key)
+ {
+ bool b = _WeakHashtable.ContainsKey(key);
+ if(b) _WeakHashtable.Remove(key);
+ return b;
+ }
+
+ public bool TryGetValue(K key, out V value)
+ {
+ throw new NotImplementedException();
+ }
+
+ public ICollection<V> Values
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public V this[K key]
+ {
+ get
+ {
+ return (V)_WeakHashtable[key];
+ }
+ set
+ {
+ _WeakHashtable[key] = value;
+ }
+ }
+
+ public void Add(KeyValuePair<K, V> item)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Clear()
+ {
+ _WeakHashtable.Clear();
+ }
+
+ public bool Contains(KeyValuePair<K, V> item)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void CopyTo(KeyValuePair<K, V>[] array, int arrayIndex)
+ {
+ throw new NotImplementedException();
+ }
+
+ public int Count
+ {
+ get { return _WeakHashtable.Count; }
+ }
+
+ public bool IsReadOnly
+ {
+ get { return _WeakHashtable.IsReadOnly; }
+ }
+
+ public bool Remove(KeyValuePair<K, V> item)
+ {
+ throw new NotImplementedException();
+ }
+
+ public IEnumerator<KeyValuePair<K, V>> GetEnumerator()
+ {
+ return new WeakDictioanaryEnumerator<K, V>(this);
+ }
+
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ throw new NotImplementedException();
+ }
+
+ class WeakDictioanaryEnumerator<K, V> : IEnumerator<KeyValuePair<K, V>>
+ {
+ K[] _Keys;
+ int _Index = -1;
+
+ WeakDictionary<K, V> _Dict;
+
+ public WeakDictioanaryEnumerator(WeakDictionary<K,V> dict)
+ {
+ _Dict = dict;
+ _Keys = (K[])dict.Keys;
+ }
+
+ public KeyValuePair<K, V> Current
+ {
+ get
+ {
+ return new KeyValuePair<K,V>(_Keys[_Index], _Dict[_Keys[_Index]]);
+ }
+ }
+
+ public void Dispose()
+ {
+
+ }
+
+ object System.Collections.IEnumerator.Current
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public bool MoveNext()
+ {
+ if (_Index < _Keys.Length - 1)
+ {
+ _Index++;
+ return true;
+ }
+ return false;
+ }
+
+ public void Reset()
+ {
+ throw new NotImplementedException();
+ }
+ }
+ }
+}