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.

232 lines
4.5 KiB

  1. //---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1995
  5. //
  6. // File: cenumvar.cxx
  7. //
  8. // Contents: Windows NT 3.5 Enumerator Code
  9. //
  10. // CWinNTEnumVariant::Create
  11. // CWinNTEnumVariant::CWinNTEnumVariant
  12. // CWinNTEnumVariant::~CWinNTEnumVariant
  13. // CWinNTEnumVariant::QueryInterface
  14. // CWinNTEnumVariant::AddRef
  15. // CWinNTEnumVariant::Release
  16. // CWinNTEnumVariant::Next
  17. // CWinNTEnumVariant::Skip
  18. // CWinNTEnumVariant::Clone
  19. //
  20. // History:
  21. //----------------------------------------------------------------------------
  22. #include "winnt.hxx"
  23. #pragma hdrstop
  24. //+---------------------------------------------------------------------------
  25. //
  26. // Function: CWinNTEnumVariant::CWinNTEnumVariant
  27. //
  28. // Synopsis:
  29. //
  30. //
  31. // Arguments:
  32. //
  33. //
  34. // Returns:
  35. //
  36. // Modifies:
  37. //
  38. // History: 01-30-95 krishnag Created.
  39. //
  40. //----------------------------------------------------------------------------
  41. CWinNTEnumVariant::CWinNTEnumVariant()
  42. {
  43. //
  44. // Set the reference count on the enumerator.
  45. //
  46. m_cRef = 1;
  47. }
  48. //+---------------------------------------------------------------------------
  49. //
  50. // Function: CWinNTEnumVariant::~CWinNTEnumVariant
  51. //
  52. // Synopsis:
  53. //
  54. // Arguments:
  55. //
  56. // Returns:
  57. //
  58. // Modifies:
  59. //
  60. // History: 01-30-95 krishnag Created.
  61. //
  62. //----------------------------------------------------------------------------
  63. CWinNTEnumVariant::~CWinNTEnumVariant()
  64. {
  65. //
  66. // Bump down the reference count on the Collection object
  67. //
  68. }
  69. //+---------------------------------------------------------------------------
  70. //
  71. // Function: CWinNTEnumVariant::QueryInterface
  72. //
  73. // Synopsis:
  74. //
  75. // Arguments: [iid]
  76. // [ppv]
  77. //
  78. // Returns: HRESULT
  79. //
  80. // Modifies:
  81. //
  82. // History: 01-30-95 krishnag Created.
  83. //
  84. //----------------------------------------------------------------------------
  85. STDMETHODIMP
  86. CWinNTEnumVariant::QueryInterface(REFIID iid, void FAR* FAR* ppv)
  87. {
  88. *ppv = NULL;
  89. if (ppv == NULL) {
  90. RRETURN(E_POINTER);
  91. }
  92. if (iid == IID_IUnknown || iid == IID_IEnumVARIANT) {
  93. *ppv = this;
  94. }
  95. else {
  96. return ResultFromScode(E_NOINTERFACE);
  97. }
  98. AddRef();
  99. return NOERROR;
  100. }
  101. //+---------------------------------------------------------------------------
  102. //
  103. // Function: CWinNTEnumVariant::AddRef
  104. //
  105. // Synopsis:
  106. //
  107. // Arguments:
  108. //
  109. // Returns: HRESULT
  110. //
  111. // Modifies:
  112. //
  113. // History: 01-30-95 krishnag Created.
  114. //----------------------------------------------------------------------------
  115. STDMETHODIMP_(ULONG)
  116. CWinNTEnumVariant::AddRef(void)
  117. {
  118. return ++m_cRef;
  119. }
  120. //+---------------------------------------------------------------------------
  121. //
  122. // Function: CWinNTEnumVariant::Release
  123. //
  124. // Synopsis:
  125. //
  126. //
  127. // Arguments: [void]
  128. //
  129. // Returns:
  130. //
  131. // Modifies:
  132. //
  133. // History: 01-30-95 krishnag Created.
  134. //----------------------------------------------------------------------------
  135. STDMETHODIMP_(ULONG)
  136. CWinNTEnumVariant::Release(void)
  137. {
  138. if(--m_cRef == 0){
  139. delete this;
  140. return 0;
  141. }
  142. return m_cRef;
  143. }
  144. //+---------------------------------------------------------------------------
  145. //
  146. // Function: CWinNTEnumVariant::Skip
  147. //
  148. // Synopsis:
  149. //
  150. // Arguments: [cElements]
  151. //
  152. // Returns: HRESULT
  153. //
  154. // Modifies:
  155. //
  156. // History: 01-30-95 krishnag Created.
  157. //
  158. //----------------------------------------------------------------------------
  159. STDMETHODIMP
  160. CWinNTEnumVariant::Skip(ULONG cElements)
  161. {
  162. RRETURN_EXP_IF_ERR(E_NOTIMPL);
  163. }
  164. //+---------------------------------------------------------------------------
  165. //
  166. // Function: CWinNTEnumVariant::Reset
  167. //
  168. // Synopsis:
  169. //
  170. // Arguments: []
  171. //
  172. // Returns: HRESULT
  173. //
  174. // Modifies:
  175. //
  176. // History:
  177. //
  178. //----------------------------------------------------------------------------
  179. STDMETHODIMP
  180. CWinNTEnumVariant::Reset()
  181. {
  182. RRETURN_EXP_IF_ERR(E_NOTIMPL);
  183. }
  184. //+---------------------------------------------------------------------------
  185. //
  186. // Function: CWinNTEnumVariant::Clone
  187. //
  188. // Synopsis:
  189. //
  190. // Arguments: [pCollection]
  191. // [ppEnumVariant]
  192. //
  193. // Returns: HRESULT
  194. //
  195. // Modifies:
  196. //
  197. // History: 01-30-95 krishnag Created.
  198. //
  199. //----------------------------------------------------------------------------
  200. STDMETHODIMP
  201. CWinNTEnumVariant::Clone(IEnumVARIANT FAR* FAR* ppenum)
  202. {
  203. RRETURN_EXP_IF_ERR(E_NOTIMPL);
  204. }