NameTable.cs 1.4 KB

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