Fixed orders in XmlSchemaObjectTable and got some S.R.Serialization tests working.
[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 ListDictionary table;
37
38                 internal XmlSchemaObjectTable ()
39                 {
40                         table = new ListDictionary (); 
41                 }
42                 public int Count 
43                 {
44                         get{ return table.Count; }
45                 }
46                 public XmlSchemaObject this [XmlQualifiedName name] 
47                 {
48                         get{ return (XmlSchemaObject) table [name]; }
49                 }
50                 public ICollection Names 
51                 {
52                         get{ return table.Keys; }
53                 }
54                 public ICollection Values 
55                 {
56                         get{ return table.Values; }
57                 }
58
59                 public bool Contains (XmlQualifiedName name)
60                 {
61                         return table.Contains (name);
62                 }
63                 public IDictionaryEnumerator GetEnumerator ()
64                 {
65                         return new XmlSchemaObjectTableEnumerator (this);
66                 }
67
68                 internal void Add (XmlQualifiedName name, XmlSchemaObject value)
69                 {
70                         table [name] = value;
71                 }
72
73                 internal void Clear ()
74                 {
75                         table.Clear ();
76                 }
77
78                 internal void Set (XmlQualifiedName name, XmlSchemaObject value)
79                 {
80                         table [name] = value;
81                 }
82
83                 internal class XmlSchemaObjectTableEnumerator : IDictionaryEnumerator
84                 {
85                         private IDictionaryEnumerator xenum;
86                         IEnumerable tmp;
87                         internal XmlSchemaObjectTableEnumerator (XmlSchemaObjectTable table)
88                         {
89                                 tmp = (IEnumerable) table.table;
90                                 xenum = (IDictionaryEnumerator) tmp.GetEnumerator ();
91                         }
92                         // Properties
93                         public XmlSchemaObject Current { 
94                                 get {
95                                         return (XmlSchemaObject) xenum.Value; 
96                                 }
97                         }
98                         public DictionaryEntry Entry {
99                                 get { return xenum.Entry; }
100                         }
101                         public XmlQualifiedName Key {
102                                 get { return (XmlQualifiedName) xenum.Key; }
103                         }
104                         public XmlSchemaObject Value {
105                                 get { return (XmlSchemaObject) xenum.Value; }
106                         }
107                         // Methods
108                         public bool MoveNext()
109                         {
110                                 return xenum.MoveNext();
111                         }
112
113                         //Explicit Interface implementation
114                         bool IEnumerator.MoveNext()
115                         {
116                                 return xenum.MoveNext();
117                         }
118                         void IEnumerator.Reset()
119                         {
120                                 xenum.Reset();
121                         }
122                         object IEnumerator.Current
123                         {
124                                 get { return xenum.Entry; }
125                         }
126                         DictionaryEntry IDictionaryEnumerator.Entry {
127                                 get { return xenum.Entry; }
128                         }
129                         object IDictionaryEnumerator.Key {
130                                 get { return (XmlQualifiedName) xenum.Key; }
131                         }
132                         object IDictionaryEnumerator.Value {
133                                 get { return (XmlSchemaObject) xenum.Value; }
134                         }
135                 }
136         }
137 }