New test.
[mono.git] / mcs / class / System.Runtime.Serialization / System.Xml / XmlDictionaryReader.cs
1 #if NET_2_0
2 using System;
3 using System.IO;
4 using System.Xml;
5
6 namespace System.Xml
7 {
8         public abstract class XmlDictionaryReader : XmlReader
9         {
10                 protected XmlDictionaryReader ()
11                 {
12                 }
13
14                 public virtual bool CanCanonicalize {
15                         get { return false; }
16                 }
17
18                 public virtual bool CanGetContext {
19                         get { return false; }
20                 }
21
22                 [MonoTODO]
23                 public virtual void EndCanonicalization ()
24                 {
25                         throw new NotSupportedException ();
26                 }
27
28                 public virtual string GetAttribute (
29                         XmlDictionaryString localName,
30                         XmlDictionaryString namespaceUri)
31                 {
32                         if (localName == null)
33                                 throw new ArgumentNullException ("localName");
34                         if (namespaceUri == null)
35                                 throw new ArgumentNullException ("namespaceUri");
36                         return GetAttribute (localName.Value, namespaceUri.Value);
37                 }
38
39                 [MonoTODO]
40                 public XmlParserContext GetContext ()
41                 {
42                         throw new NotSupportedException ();
43                 }
44
45                 public virtual int IndexOfLocalName (
46                         string [] localNames, string namespaceUri)
47                 {
48                         if (localNames == null)
49                                 throw new ArgumentNullException ("localNames");
50                         if (namespaceUri == null)
51                                 throw new ArgumentNullException ("namespaceUri");
52                         if (NamespaceURI != namespaceUri)
53                                 return -1;
54                         for (int i = 0; i < localNames.Length; i++)
55                                 if (localNames [i] == LocalName)
56                                         return i;
57                         return -1;
58                 }
59
60                 public virtual int IndexOfLocalName (
61                         XmlDictionaryString [] localNames,
62                         XmlDictionaryString namespaceUri)
63                 {
64                         if (localNames == null)
65                                 throw new ArgumentNullException ("localNames");
66                         if (namespaceUri == null)
67                                 throw new ArgumentNullException ("namespaceUri");
68                         if (NamespaceURI != namespaceUri.Value)
69                                 return -1;
70                         XmlDictionaryString localName;
71                         if (!TryGetLocalNameAsDictionaryString (out localName))
72                                 return -1;
73                         IXmlDictionary dict = localName.Dictionary;
74                         XmlDictionaryString iter;
75                         for (int i = 0; i < localNames.Length; i++)
76                                 if (dict.TryLookup (localNames [i], out iter) && object.ReferenceEquals (iter, localName))
77                                         return i;
78                         return -1;
79                 }
80
81                 public virtual bool IsLocalName (string localName)
82                 {
83                         return LocalName == localName;
84                 }
85
86                 public virtual bool IsLocalName (XmlDictionaryString localName)
87                 {
88                         if (localName == null)
89                                 throw new ArgumentNullException ("localName");
90                         XmlDictionaryString name;
91                         return TryGetLocalNameAsDictionaryString (out name) && object.ReferenceEquals (name, localName);
92                 }
93
94                 public virtual bool IsNamespaceUri (string namespaceUri)
95                 {
96                         return NamespaceURI == namespaceUri;
97                 }
98
99                 public virtual bool IsNamespaceUri (XmlDictionaryString namespaceUri)
100                 {
101                         if (namespaceUri == null)
102                                 throw new ArgumentNullException ("namespaceUri");
103                         XmlDictionaryString name;
104                         return TryGetNamespaceUriAsDictionaryString (out name) && object.ReferenceEquals (name, namespaceUri);
105                 }
106
107                 [MonoTODO]
108                 public bool IsStartArray (out Type type)
109                 {
110                         throw new NotImplementedException ();
111                 }
112
113                 public virtual bool IsStartElement (
114                         XmlDictionaryString localName,
115                         XmlDictionaryString namespaceUri)
116                 {
117                         if (localName == null)
118                                 throw new ArgumentNullException ("localName");
119                         if (namespaceUri == null)
120                                 throw new ArgumentNullException ("namespaceUri");
121                         return IsStartElement (localName.Value, namespaceUri.Value);
122                 }
123
124                 [MonoTODO]
125                 public virtual void MoveToStartElement ()
126                 {
127                         throw new NotImplementedException ();
128                 }
129
130                 [MonoTODO]
131                 public virtual void MoveToStartElement (string name)
132                 {
133                         throw new NotImplementedException ();
134                 }
135
136                 [MonoTODO]
137                 public virtual void MoveToStartElement (
138                         string localName, string namespaceUri)
139                 {
140                         throw new NotImplementedException ();
141                 }
142
143                 [MonoTODO]
144                 public virtual void MoveToStartElement (
145                         XmlDictionaryString localName,
146                         XmlDictionaryString namespaceUri)
147                 {
148                         throw new NotImplementedException ();
149                 }
150
151                 [MonoTODO]
152                 public virtual void StartCanonicalization (
153                         XmlCanonicalWriter writer)
154                 {
155                         throw new NotSupportedException ();
156                 }
157
158                 [MonoTODO]
159                 public virtual bool TryGetArrayLength (out int count)
160                 {
161                         throw new NotImplementedException ();
162                 }
163
164                 [MonoTODO]
165                 public virtual bool TryGetBase64ContentLength (out int count)
166                 {
167                         throw new NotImplementedException ();
168                 }
169
170                 [MonoTODO]
171                 public virtual bool TryGetLocalNameAsDictionaryString (
172                         out XmlDictionaryString localName)
173                 {
174                         throw new NotImplementedException ();
175                 }
176
177                 [MonoTODO]
178                 public virtual bool TryGetNamespaceUriAsDictionaryString (
179                         out XmlDictionaryString localName)
180                 {
181                         throw new NotImplementedException ();
182                 }
183
184                 // FIXME: add Read*Array() overloads
185
186
187                 #region Factory Methods
188
189                 public static XmlDictionaryReader CreateBinaryReader (
190                         byte [] buffer)
191                 {
192                         return CreateBinaryReader (buffer, 0, buffer.Length);
193                 }
194
195                 public static XmlDictionaryReader CreateBinaryReader (
196                         byte [] buffer, int offset, int count)
197                 {
198                         return CreateBinaryReader (buffer, offset, count, new XmlDictionary ());
199                 }
200
201                 public static XmlDictionaryReader CreateBinaryReader (
202                         byte [] buffer, int offset, int count,
203                         IXmlDictionary dictionary)
204                 {
205                         return CreateBinaryReader (buffer, offset, count,
206                         dictionary, XmlDictionaryReaderQuotas .Default,
207                         new XmlBinaryReaderSession (), null, null);
208                 }
209
210                 public static XmlDictionaryReader CreateBinaryReader (
211                         byte [] buffer, int offset, int count,
212                         IXmlDictionary dictionary,
213                         XmlDictionaryReaderQuotas quotas,
214                         XmlBinaryReaderSession session,
215                         OnXmlDictionaryReaderClose onClose,
216                         XmlParserContext context)
217                 {
218                         return CreateBinaryReader (new MemoryStream (
219                                 buffer, offset, count), dictionary,
220                                 quotas, session, onClose, context);
221                 }
222
223                 public static XmlDictionaryReader CreateBinaryReader (
224                         Stream stream)
225                 {
226                         return CreateBinaryReader (stream, new XmlDictionary ());
227                 }
228
229                 public static XmlDictionaryReader CreateBinaryReader (
230                         Stream stream, IXmlDictionary dictionary)
231                 {
232                         return CreateBinaryReader (stream, dictionary,
233                                 XmlDictionaryReaderQuotas .Default,
234                                 new XmlBinaryReaderSession (), null, null);
235                 }
236
237                 [MonoTODO]
238                 public static XmlDictionaryReader CreateBinaryReader (
239                         Stream stream, IXmlDictionary dictionary,
240                         XmlDictionaryReaderQuotas quotas,
241                         XmlBinaryReaderSession session,
242                         OnXmlDictionaryReaderClose onClose,
243                         XmlParserContext context)
244                 {
245                         throw new NotImplementedException ();
246                 }
247
248                 [MonoTODO]
249                 public XmlDictionaryReader CreateDictionaryReader (
250                         XmlReader reader)
251                 {
252                         throw new NotImplementedException ();
253                 }
254
255                 [MonoTODO]
256                 public XmlDictionaryReader CreateDictionaryReader (
257                         XmlReader reader, bool isSoapCompliant)
258                 {
259                         throw new NotImplementedException ();
260                 }
261
262                 public XmlDictionaryReader CreateUTF8Reader (byte [] buffer)
263                 {
264                         return CreateUTF8Reader (buffer, 0, buffer.Length);
265                 }
266
267                 public static XmlDictionaryReader CreateUTF8Reader (
268                         byte [] buffer, int offset, int count)
269                 {
270                         return CreateUTF8Reader (buffer, offset, count, 
271                                 XmlDictionaryReaderQuotas.Default,
272                                 null, null);
273                 }
274
275                 [MonoTODO]
276                 public static XmlDictionaryReader CreateUTF8Reader (
277                         byte [] buffer, int offset, int count,
278                         XmlDictionaryReaderQuotas quotas,
279                         OnXmlDictionaryReaderClose onClose,
280                         XmlParserContext context)
281                 {
282                         throw new NotImplementedException ();
283                 }
284
285                 // FIXME: several factory methods here.
286
287                 #endregion
288         }
289 }
290 #endif