2002-03-12 Duncan Mak <duncan@ximian.com>
[mono.git] / mcs / class / System.XML / System.Xml / NameTable.cs
1 //
2 // System.Xml.NameTable.cs
3 //
4 // Author: Duncan Mak (duncan@ximian.com)
5 //
6 // (C) Ximian, Inc.
7 //
8
9 using System;
10 using System.Collections;
11
12 namespace System.Xml
13 {
14         public class NameTable : XmlNameTable
15         {
16                 // Fields
17                 Hashtable table;
18                 
19                 // Constructor
20                 public NameTable ()
21                         : base ()
22                 {
23                         table = new Hashtable ();
24                 }
25           
26                 // Method
27                 public override string Add (string key)
28                 {
29                         if (table.Contains (key))
30                                 return (string) table [key];
31                         else {
32                                 table.Add (key, key);
33                                 return key;
34                         }
35                 }
36
37                 public override string Add (char[] key, int start, int len)
38                 {
39                         if (((0 > start) && (start >= key.Length))
40                             || ((0 > len) && (len >= key.Length - len)))
41                                 throw new IndexOutOfRangeException ("The Index is out of range.");
42                                         
43                         if (len == 0)
44                                 return String.Empty;
45
46                         string item = new string (key, start, len);
47
48                         return Add (item);
49                 }
50
51                 public override string Get (string key)
52                 {
53                         if (! (table.Contains (key)))
54                                 return null;
55                         else
56                                 return (string) table [key];
57
58                 }
59           
60                 public override string Get (char[] array, int offset, int length)
61                 {
62                         if (((0 > offset) && (offset >= array.Length))
63                             || ((0 > length) && (length >= array.Length - offset)))
64                                 throw new IndexOutOfRangeException ("The Index is out of range.");
65
66                         if (length == 0)
67                                 return String.Empty;
68
69                         string key = new string (array, offset, length);
70
71                         return Get (key);
72                 }
73         }
74 }