NameTable.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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.Contains (key))
  26. return (string) table [key];
  27. else {
  28. table.Add (key, key);
  29. return key;
  30. }
  31. }
  32. public override string Add (char[] key, int start, int len)
  33. {
  34. if (((0 > start) && (start >= key.Length))
  35. || ((0 > len) && (len >= key.Length - len)))
  36. throw new IndexOutOfRangeException ("The Index is out of range.");
  37. if (len == 0)
  38. return String.Empty;
  39. string item = new string (key, start, len);
  40. return Add (item);
  41. }
  42. public override string Get (string key)
  43. {
  44. if (! (table.Contains (key)))
  45. return null;
  46. else
  47. return (string) table [key];
  48. }
  49. public override string Get (char[] array, int offset, int length)
  50. {
  51. if (((0 > offset) && (offset >= array.Length))
  52. || ((0 > length) && (length >= array.Length - offset)))
  53. throw new IndexOutOfRangeException ("The Index is out of range.");
  54. if (length == 0)
  55. return String.Empty;
  56. string key = new string (array, offset, length);
  57. return Get (key);
  58. }
  59. }
  60. }