3 using System.Collections;
4 using System.Collections.Generic;
8 public class XmlDictionary : IXmlDictionary
10 internal class EmptyDictionary : XmlDictionary
12 public static readonly EmptyDictionary Instance =
13 new EmptyDictionary ();
15 public EmptyDictionary ()
21 static XmlDictionary empty = new XmlDictionary (true);
23 public static XmlDictionary Empty {
27 readonly bool is_readonly;
28 Dictionary<string, XmlDictionaryString> dict;
29 List<XmlDictionaryString> list;
31 public XmlDictionary ()
33 dict = new Dictionary<string, XmlDictionaryString> ();
34 list = new List<XmlDictionaryString> ();
37 public XmlDictionary (int capacity)
39 dict = new Dictionary<string, XmlDictionaryString> (capacity);
40 list = new List<XmlDictionaryString> (capacity);
44 private XmlDictionary (bool isReadOnly)
47 is_readonly = isReadOnly;
50 public virtual XmlDictionaryString Add (string value)
53 throw new InvalidOperationException ();
54 XmlDictionaryString ret;
55 if (dict.TryGetValue (value, out ret))
57 ret = new XmlDictionaryString (this, value, dict.Count);
58 dict.Add (value, ret);
63 public bool TryLookup (int key, out XmlDictionaryString result)
65 if (key < 0 || dict.Count >= key) {
73 public bool TryLookup (string value, out XmlDictionaryString result)
76 throw new ArgumentNullException ();
77 result = dict [value];
78 return result != null;
81 public bool TryLookup (XmlDictionaryString value,
82 out XmlDictionaryString result)
85 throw new ArgumentNullException ();
86 if (value.Dictionary != this) {
90 for (int i = 0; i < list.Count; i++) {
91 if (object.ReferenceEquals (list [i], value)) {