1 //------------------------------------------------------------------------------
2 // <copyright file="XmlSchemaObjectCollection.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 // <owner current="true" primary="true">Microsoft</owner>
6 //------------------------------------------------------------------------------
7 
8 namespace System.Xml.Schema {
9 
10     using System.Collections;
11     using System.ComponentModel;
12     using System.Xml.Serialization;
13 
14     /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection"]/*' />
15     /// <devdoc>
16     ///    <para>[To be supplied.]</para>
17     /// </devdoc>
18     public class XmlSchemaObjectCollection : CollectionBase {
19         XmlSchemaObject parent;
20 
21         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.XmlSchemaObjectCollection"]/*' />
22         /// <devdoc>
23         ///    <para>[To be supplied.]</para>
24         /// </devdoc>
XmlSchemaObjectCollection()25         public XmlSchemaObjectCollection() {
26         }
27 
28         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.XmlSchemaObjectCollection1"]/*' />
29         /// <devdoc>
30         ///    <para>[To be supplied.]</para>
31         /// </devdoc>
XmlSchemaObjectCollection(XmlSchemaObject parent)32         public XmlSchemaObjectCollection(XmlSchemaObject parent) {
33             this.parent = parent;
34         }
35 
36         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.this"]/*' />
37         /// <devdoc>
38         ///    <para>[To be supplied.]</para>
39         /// </devdoc>
40         public virtual XmlSchemaObject this[int index] {
41             get { return (XmlSchemaObject)List[index]; }
42             set { List[index] = value; }
43         }
44 
45         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.GetEnumerator"]/*' />
46         /// <devdoc>
47         ///    <para>[To be supplied.]</para>
48         /// </devdoc>
GetEnumerator()49         public new XmlSchemaObjectEnumerator GetEnumerator() {
50             return new XmlSchemaObjectEnumerator(InnerList.GetEnumerator());
51         }
52 
53         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.Add"]/*' />
54         /// <devdoc>
55         ///    <para>[To be supplied.]</para>
56         /// </devdoc>
Add(XmlSchemaObject item)57         public int Add(XmlSchemaObject item) {
58             return List.Add(item);
59         }
60 
61         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.Insert"]/*' />
62         /// <devdoc>
63         ///    <para>[To be supplied.]</para>
64         /// </devdoc>
Insert(int index, XmlSchemaObject item)65         public void Insert(int index, XmlSchemaObject item) {
66             List.Insert(index, item);
67         }
68 
69         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.IndexOf"]/*' />
70         /// <devdoc>
71         ///    <para>[To be supplied.]</para>
72         /// </devdoc>
IndexOf(XmlSchemaObject item)73         public int IndexOf(XmlSchemaObject item) {
74             return List.IndexOf(item);
75         }
76 
77         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.Contains"]/*' />
78         /// <devdoc>
79         ///    <para>[To be supplied.]</para>
80         /// </devdoc>
Contains(XmlSchemaObject item)81         public bool Contains(XmlSchemaObject item) {
82             return List.Contains(item);
83         }
84 
85         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.Remove"]/*' />
86         /// <devdoc>
87         ///    <para>[To be supplied.]</para>
88         /// </devdoc>
Remove(XmlSchemaObject item)89         public void Remove(XmlSchemaObject item) {
90             List.Remove(item);
91         }
92 
93         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.CopyTo"]/*' />
94         /// <devdoc>
95         ///    <para>[To be supplied.]</para>
96         /// </devdoc>
CopyTo(XmlSchemaObject[] array, int index)97         public void CopyTo(XmlSchemaObject[] array, int index) {
98             List.CopyTo(array, index);
99         }
100 
101         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.OnInsert"]/*' />
102         /// <devdoc>
103         ///    <para>[To be supplied.]</para>
104         /// </devdoc>
OnInsert(int index, object item)105         protected override void OnInsert(int index, object item) {
106             if (parent != null) {
107                 parent.OnAdd(this, item);
108             }
109         }
110 
111         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.OnSet"]/*' />
112         /// <devdoc>
113         ///    <para>[To be supplied.]</para>
114         /// </devdoc>
OnSet(int index, object oldValue, object newValue)115         protected override void OnSet(int index, object oldValue, object newValue) {
116             if (parent != null) {
117                 parent.OnRemove(this, oldValue);
118                 parent.OnAdd(this, newValue);
119             }
120         }
121 
122         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.OnClear"]/*' />
123         /// <devdoc>
124         ///    <para>[To be supplied.]</para>
125         /// </devdoc>
OnClear()126         protected override void OnClear() {
127             if (parent != null) {
128                 parent.OnClear(this);
129             }
130         }
131 
132         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectCollection.OnRemove"]/*' />
133         /// <devdoc>
134         ///    <para>[To be supplied.]</para>
135         /// </devdoc>
OnRemove(int index, object item)136         protected override void OnRemove(int index, object item) {
137             if (parent != null) {
138                 parent.OnRemove(this, item);
139             }
140         }
141 
Clone()142         internal XmlSchemaObjectCollection Clone() {
143             XmlSchemaObjectCollection coll = new XmlSchemaObjectCollection();
144             coll.Add(this);
145             return coll;
146         }
147 
Add(XmlSchemaObjectCollection collToAdd)148         private void Add(XmlSchemaObjectCollection collToAdd) {
149             this.InnerList.InsertRange(0, collToAdd);
150         }
151     }
152 
153     /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectEnumerator"]/*' />
154     /// <devdoc>
155     ///    <para>[To be supplied.]</para>
156     /// </devdoc>
157     public class XmlSchemaObjectEnumerator: IEnumerator {
158         IEnumerator enumerator;
159 
XmlSchemaObjectEnumerator( IEnumerator enumerator )160         internal XmlSchemaObjectEnumerator( IEnumerator enumerator ) {
161             this.enumerator = enumerator;
162         }
163 
164         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectEnumerator.Reset"]/*' />
165         /// <devdoc>
166         ///    <para>[To be supplied.]</para>
167         /// </devdoc>
Reset()168         public void Reset() {
169             enumerator.Reset();
170         }
171 
172         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectEnumerator.MoveNext"]/*' />
173         /// <devdoc>
174         ///    <para>[To be supplied.]</para>
175         /// </devdoc>
MoveNext()176         public bool MoveNext() {
177             return enumerator.MoveNext();
178         }
179 
180         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectEnumerator.Current"]/*' />
181         /// <devdoc>
182         ///    <para>[To be supplied.]</para>
183         /// </devdoc>
184         public XmlSchemaObject Current {
185             get { return (XmlSchemaObject)enumerator.Current; }
186         }
187 
188         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectEnumerator.IEnumerator.Reset"]/*' />
189         /// <internalonly/>
IEnumerator.Reset()190         void IEnumerator.Reset() {
191             enumerator.Reset();
192         }
193 
194         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectEnumerator.IEnumerator.MoveNext"]/*' />
195         /// <internalonly/>
IEnumerator.MoveNext()196         bool IEnumerator.MoveNext() {
197             return enumerator.MoveNext();
198         }
199 
200         /// <include file='doc\XmlSchemaObjectCollection.uex' path='docs/doc[@for="XmlSchemaObjectEnumerator.IEnumerator.Current"]/*' />
201         /// <internalonly/>
202         object IEnumerator.Current {
203             get { return enumerator.Current; }
204         }
205     }
206 
207 }
208