New test.
[mono.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaObjectTable.cs
1 // Author: Dwivedi, Ajay kumar
2 //            Adwiv@Yahoo.com
3
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining
6 // a copy of this software and associated documentation files (the
7 // "Software"), to deal in the Software without restriction, including
8 // without limitation the rights to use, copy, modify, merge, publish,
9 // distribute, sublicense, and/or sell copies of the Software, and to
10 // permit persons to whom the Software is furnished to do so, subject to
11 // the following conditions:
12 // 
13 // The above copyright notice and this permission notice shall be
14 // included in all copies or substantial portions of the Software.
15 // 
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 //
24 using System;
25 using System.Collections;
26 using System.Collections.Specialized;
27 using System.Xml;
28
29 namespace System.Xml.Schema
30 {
31         /// <summary>
32         /// Summary description for XmlSchemaObjectTable.
33         /// </summary>
34         public class XmlSchemaObjectTable
35         {
36 //              private Hashtable table;
37                 private HybridDictionary table;
38
39                 internal XmlSchemaObjectTable ()
40                 {
41 //                      table = new Hashtable(); 
42                         table = new HybridDictionary (); 
43                 }
44                 public int Count 
45                 {
46                         get{ return table.Count; }
47                 }
48                 public XmlSchemaObject this [XmlQualifiedName name] 
49                 {
50                         get{ return (XmlSchemaObject) table [name]; }
51                 }
52                 public ICollection Names 
53                 {
54                         get{ return table.Keys; }
55                 }
56                 public ICollection Values 
57                 {
58                         get{ return table.Values; }
59                 }
60
61                 public bool Contains (XmlQualifiedName name)
62                 {
63                         return table.Contains (name);
64                 }
65                 public IDictionaryEnumerator GetEnumerator ()
66                 {
67                         return new XmlSchemaObjectTableEnumerator (this);
68                 }
69
70                 internal void Add (XmlQualifiedName name, XmlSchemaObject value)
71                 {
72                         table [name] = value;
73                 }
74
75                 internal void Clear ()
76                 {
77                         table.Clear ();
78                 }
79
80                 internal void Set (XmlQualifiedName name, XmlSchemaObject value)
81                 {
82                         table [name] = value;
83                 }
84
85                 internal class XmlSchemaObjectTableEnumerator : IDictionaryEnumerator
86                 {
87                         private IDictionaryEnumerator xenum;
88                         IEnumerable tmp;
89                         internal XmlSchemaObjectTableEnumerator (XmlSchemaObjectTable table)
90                         {
91                                 tmp = (IEnumerable) table.table;
92                                 xenum = (IDictionaryEnumerator) tmp.GetEnumerator ();
93                         }
94                         // Properties
95                         public XmlSchemaObject Current { 
96                                 get {
97                                         return (XmlSchemaObject) xenum.Value; 
98                                 }
99                         }
100                         public DictionaryEntry Entry {
101                                 get { return xenum.Entry; }
102                         }
103                         public XmlQualifiedName Key {
104                                 get { return (XmlQualifiedName) xenum.Key; }
105                         }
106                         public XmlSchemaObject Value {
107                                 get { return (XmlSchemaObject) xenum.Value; }
108                         }
109                         // Methods
110                         public bool MoveNext()
111                         {
112                                 return xenum.MoveNext();
113                         }
114
115                         //Explicit Interface implementation
116                         bool IEnumerator.MoveNext()
117                         {
118                                 return xenum.MoveNext();
119                         }
120                         void IEnumerator.Reset()
121                         {
122                                 xenum.Reset();
123                         }
124                         object IEnumerator.Current
125                         {
126                                 get { return xenum.Entry; }
127                         }
128                         DictionaryEntry IDictionaryEnumerator.Entry {
129                                 get { return xenum.Entry; }
130                         }
131                         object IDictionaryEnumerator.Key {
132                                 get { return (XmlQualifiedName) xenum.Key; }
133                         }
134                         object IDictionaryEnumerator.Value {
135                                 get { return (XmlSchemaObject) xenum.Value; }
136                         }
137                 }
138         }
139 }