Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
3.4 KiB

  1. //+--------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1992.
  5. //
  6. // File: tlsets.hxx
  7. //
  8. // Contents: Transaction level set manager header file
  9. //
  10. // History: 20-Jan-1992 PhilipL Created
  11. //
  12. //---------------------------------------------------------------
  13. #ifndef __TLSETS_HXX__
  14. #define __TLSETS_HXX__
  15. #include <dfmsp.hxx>
  16. #include <tset.hxx>
  17. //+--------------------------------------------------------------
  18. //
  19. // Class: CTSSet (tss)
  20. //
  21. // Purpose: Maintains a list of transaction set elements
  22. //
  23. // Interface: See below
  24. //
  25. // History: 08-Apr-92 DrewB Created
  26. //
  27. // Notes:
  28. // All elements are kept grouped by level, with level increasing
  29. // from head to tail
  30. //
  31. // If an element of the list is removed, it can not be passed as
  32. // a value to GetNext. If an element is to be deleted, get next
  33. // should be called before the RemoveMember call.
  34. //
  35. //---------------------------------------------------------------
  36. #define CHILDLEVEL 1
  37. class CTSSet
  38. {
  39. public:
  40. inline CTSSet(void);
  41. ~CTSSet(void);
  42. inline PTSetMember *GetHead(void);
  43. PTSetMember *FindName(CDfName const *pdfn, DFLUID dlTree);
  44. inline void RenameMember(CDfName const *pdfnOld,
  45. DFLUID dlTree,
  46. CDfName const *pdfnNew);
  47. void AddMember(PTSetMember *ptsm);
  48. void RemoveMember(PTSetMember *ptsm);
  49. private:
  50. CBasedTSetMemberPtr _ptsmHead;
  51. };
  52. //+--------------------------------------------------------------
  53. //
  54. // Member: CTSSet::CTSSet, public
  55. //
  56. // Synopsis: Ctor
  57. //
  58. // History: 26-May-92 DrewB Created
  59. //
  60. //---------------------------------------------------------------
  61. inline CTSSet::CTSSet(void)
  62. {
  63. _ptsmHead = NULL;
  64. }
  65. //+--------------------------------------------------------------
  66. //
  67. // Member: CTSSet::GetHead, public
  68. //
  69. // Synopsis: Returns _ptsmHead
  70. //
  71. // History: 26-May-92 DrewB Created
  72. //
  73. //---------------------------------------------------------------
  74. inline PTSetMember *CTSSet::GetHead(void)
  75. {
  76. return BP_TO_P(PTSetMember *, _ptsmHead);
  77. }
  78. //+--------------------------------------------------------------
  79. //
  80. // Member: CTSSet::RenameMember, public
  81. //
  82. // Synopsis: Rename old name to new name
  83. //
  84. // Arguments: [pdfnOld] - old name
  85. // [dlTree] - tree for uniqueness
  86. // [pdnfNew] - new name
  87. //
  88. // Returns: Matching element or NULL
  89. //
  90. // History: 22-Jan-1992 Philipl Created
  91. // 08-Apr-1992 DrewB Rewritten
  92. // 28-Oct-1992 AlexT Convert to name
  93. //
  94. //---------------------------------------------------------------
  95. inline void CTSSet::RenameMember(
  96. CDfName const *pdfnOld,
  97. DFLUID dlTree,
  98. CDfName const *pdfnNew)
  99. {
  100. PTSetMember *ptsm;
  101. olDebugOut((DEB_ITRACE, "In CTSSet::RenameMember(%p, %p)\n",
  102. pdfnOld, pdfnNew));
  103. olAssert(pdfnOld != NULL && pdfnNew != NULL &&
  104. aMsg("Rename names can't be NULL"));
  105. for (ptsm = BP_TO_P(PTSetMember *, _ptsmHead);
  106. ptsm;
  107. ptsm = ptsm->GetNext())
  108. {
  109. if (ptsm->GetDfName()->IsEqual(pdfnOld) && dlTree == ptsm->GetTree())
  110. {
  111. ptsm->GetDfName()->Set(pdfnNew->GetLength(),
  112. pdfnNew->GetBuffer());
  113. break;
  114. }
  115. }
  116. olDebugOut((DEB_ITRACE, "Out CTSSet::RenameMember\n"));
  117. }
  118. #endif // #ifndef __TLSETS_HXX__