CodeIdentifiers.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. //
  2. // System.Xml.Serialization.CodeIdentifiers
  3. //
  4. // Author:
  5. // Tim Coleman ([email protected])
  6. //
  7. // Copyright (C) Tim Coleman, 2002
  8. //
  9. using System;
  10. using System.Collections;
  11. namespace System.Xml.Serialization {
  12. public class CodeIdentifiers {
  13. #region Fields
  14. bool useCamelCasing;
  15. Hashtable table = new Hashtable ();
  16. Hashtable reserved = new Hashtable ();
  17. #endregion
  18. #region Constructors
  19. public CodeIdentifiers ()
  20. {
  21. }
  22. #endregion // Constructors
  23. #region Properties
  24. public bool UseCamelCasing {
  25. get { return useCamelCasing; }
  26. set { useCamelCasing = value; }
  27. }
  28. #endregion // Properties
  29. #region Methods
  30. public void Add (string identifier, object value)
  31. {
  32. table.Add (identifier, value);
  33. }
  34. public void AddReserved (string identifier)
  35. {
  36. reserved.Add (identifier, identifier);
  37. }
  38. public string AddUnique (string identifier, object value)
  39. {
  40. string unique = MakeUnique (identifier);
  41. Add (unique, value);
  42. return unique;
  43. }
  44. public void Clear ()
  45. {
  46. table.Clear ();
  47. }
  48. public bool IsInUse (string identifier)
  49. {
  50. return (table.ContainsKey (identifier) || reserved.ContainsKey (identifier));
  51. }
  52. public string MakeRightCase (string identifier)
  53. {
  54. if (UseCamelCasing)
  55. return CodeIdentifier.MakeCamel (identifier);
  56. else
  57. return CodeIdentifier.MakePascal (identifier);
  58. }
  59. public string MakeUnique (string identifier)
  60. {
  61. string uniqueIdentifier = identifier;
  62. int i = 1;
  63. while (IsInUse (uniqueIdentifier)) {
  64. uniqueIdentifier = String.Format ("{0}{1}", identifier, i.ToString ());
  65. i += 1;
  66. }
  67. return uniqueIdentifier;
  68. }
  69. public void Remove (string identifier)
  70. {
  71. table.Remove (identifier);
  72. }
  73. public void RemoveReserved (string identifier)
  74. {
  75. reserved.Remove (identifier);
  76. }
  77. public object ToArray (Type type)
  78. {
  79. Array list = Array.CreateInstance (type, table.Count);
  80. table.CopyTo (list, 0);
  81. return list;
  82. }
  83. #endregion // Methods
  84. }
  85. }