Source code of Windows XP (NT5)
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.

152 lines
3.2 KiB

  1. //+--------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1992.
  5. //
  6. // File: seekptr.hxx
  7. //
  8. // Contents: CSeekPointer header
  9. //
  10. // Classes: CSeekPointer
  11. //
  12. // History: 30-Apr-92 DrewB Created
  13. //
  14. //---------------------------------------------------------------
  15. #ifndef __SEEKPTR_HXX__
  16. #define __SEEKPTR_HXX__
  17. //+--------------------------------------------------------------
  18. //
  19. // Class: CSeekPointer
  20. //
  21. // Purpose: Contains a seek pointer to share between exposed
  22. // streams
  23. //
  24. // Interface: See below.
  25. //
  26. // History: 30-Apr-92 DrewB Created
  27. //
  28. //---------------------------------------------------------------
  29. class CSeekPointer : public CMallocBased
  30. {
  31. public:
  32. #ifdef LARGE_STREAMS
  33. inline CSeekPointer(ULONGLONG ulPos);
  34. #else
  35. inline CSeekPointer(ULONG ulPos);
  36. #endif
  37. inline ~CSeekPointer(void);
  38. #ifdef LARGE_STREAMS
  39. inline ULONGLONG GetPos(void) const;
  40. inline void SetPos(ULONGLONG ulPos);
  41. #else
  42. inline ULONG GetPos(void) const;
  43. inline void SetPos(ULONG ulPos);
  44. #endif
  45. inline void vAddRef(void);
  46. void vRelease(void);
  47. private:
  48. #ifdef LARGE_STREAMS
  49. ULONGLONG _ulPos;
  50. #else
  51. ULONG _ulPos;
  52. #endif
  53. LONG _cReferences;
  54. };
  55. //+--------------------------------------------------------------
  56. //
  57. // Member: CSeekPointer::CSeekPointer, public
  58. //
  59. // Synopsis: Ctor
  60. //
  61. // Arguments: [ulPos] - Initial position
  62. //
  63. // History: 30-Apr-92 DrewB Created
  64. //
  65. //---------------------------------------------------------------
  66. #ifdef LARGE_STREAMS
  67. inline CSeekPointer::CSeekPointer(ULONGLONG ulPos)
  68. #else
  69. inline CSeekPointer::CSeekPointer(ULONG ulPos)
  70. #endif
  71. {
  72. _ulPos = ulPos;
  73. _cReferences = 1;
  74. }
  75. //+--------------------------------------------------------------
  76. //
  77. // Member: CSeekPointer::~CSeekPointer, public
  78. //
  79. // Synopsis: Dtor
  80. //
  81. // History: 30-Apr-92 DrewB Created
  82. //
  83. //---------------------------------------------------------------
  84. inline CSeekPointer::~CSeekPointer(void)
  85. {
  86. olAssert(_cReferences == 0);
  87. }
  88. //+--------------------------------------------------------------
  89. //
  90. // Member: CSeekPointer::GetPos, public
  91. //
  92. // Synopsis: Returns _ulPos
  93. //
  94. // History: 30-Apr-92 DrewB Created
  95. //
  96. //---------------------------------------------------------------
  97. #ifdef LARGE_STREAMS
  98. inline ULONGLONG CSeekPointer::GetPos(void) const
  99. #else
  100. inline ULONG CSeekPointer::GetPos(void) const
  101. #endif
  102. {
  103. return _ulPos;
  104. }
  105. //+--------------------------------------------------------------
  106. //
  107. // Member: CSeekPointer::SetPos, public
  108. //
  109. // Synopsis: Assigns _ulPos
  110. //
  111. // History: 30-Apr-92 DrewB Created
  112. //
  113. //---------------------------------------------------------------
  114. #ifdef LARGE_STREAMS
  115. inline void CSeekPointer::SetPos(ULONGLONG ulPos)
  116. #else
  117. inline void CSeekPointer::SetPos(ULONG ulPos)
  118. #endif
  119. {
  120. _ulPos = ulPos;
  121. }
  122. //+--------------------------------------------------------------
  123. //
  124. // Member: CSeekPointer::AddRef, public
  125. //
  126. // Synopsis: Increments _cReferences
  127. //
  128. // History: 30-Apr-92 DrewB Created
  129. //
  130. //---------------------------------------------------------------
  131. inline void CSeekPointer::vAddRef(void)
  132. {
  133. InterlockedIncrement(&_cReferences);
  134. }
  135. #endif // #ifndef __SEEKPTR_HXX__