ReactOS 0.4.16-dev-1946-g52006dd
CCompartmentEnumGuid Class Reference
Inheritance diagram for CCompartmentEnumGuid:
Collaboration diagram for CCompartmentEnumGuid:

Public Member Functions

 CCompartmentEnumGuid ()
 
virtual ~CCompartmentEnumGuid ()
 
STDMETHODIMP QueryInterface (REFIID iid, LPVOID *ppvObj) override
 
 STDMETHODIMP_ (ULONG) AddRef() override
 
 STDMETHODIMP_ (ULONG) Release() override
 
STDMETHODIMP Next (_In_ ULONG celt, _Out_ GUID *rgelt, _Out_ ULONG *pceltFetched) override
 
STDMETHODIMP Skip (_In_ ULONG celt) override
 
STDMETHODIMP Reset () override
 
STDMETHODIMP Clone (_Out_ IEnumGUID **ppenum) override
 
- Public Member Functions inherited from IEnumGUID
HRESULT Next ([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] GUID *rgelt, [out] ULONG *pceltFetched)
 
HRESULT Skip ([in] ULONG celt)
 
HRESULT Reset ()
 
HRESULT Clone ([out] IEnumGUID **ppenum)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Static Public Member Functions

static HRESULT CreateInstance (struct list *values, IEnumGUID **ppOut)
 
static HRESULT CreateInstance (struct list *values, IEnumGUID **ppOut, struct list *cursor)
 

Protected Attributes

LONG m_cRefs
 
struct listm_values
 
struct listm_cursor
 

Additional Inherited Members

- Public Types inherited from IEnumGUID
typedef IEnumGUIDLPENUMGUID
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 

Detailed Description

Definition at line 53 of file compartmentmgr.cpp.

Constructor & Destructor Documentation

◆ CCompartmentEnumGuid()

CCompartmentEnumGuid::CCompartmentEnumGuid ( )

Definition at line 282 of file compartmentmgr.cpp.

283 : m_cRefs(1)
284 , m_values(NULL)
285 , m_cursor(NULL)
286{
287}
struct list * m_values
struct list * m_cursor
#define NULL
Definition: types.h:112

Referenced by CreateInstance().

◆ ~CCompartmentEnumGuid()

CCompartmentEnumGuid::~CCompartmentEnumGuid ( )
virtual

Definition at line 289 of file compartmentmgr.cpp.

290{
291 TRACE("destroying %p\n", this);
292}
#define TRACE(s)
Definition: solgame.cpp:4

Member Function Documentation

◆ Clone()

STDMETHODIMP CCompartmentEnumGuid::Clone ( _Out_ IEnumGUID **  ppenum)
override

Definition at line 398 of file compartmentmgr.cpp.

399{
400 TRACE("(%p)\n", this);
401
402 if (!ppenum)
403 return E_POINTER;
404
406}
static HRESULT CreateInstance(struct list *values, IEnumGUID **ppOut)
#define E_POINTER
Definition: winerror.h:3480

◆ CreateInstance() [1/2]

HRESULT CCompartmentEnumGuid::CreateInstance ( struct list values,
IEnumGUID **  ppOut 
)
static

Definition at line 295 of file compartmentmgr.cpp.

296{
298 if (!This)
299 return E_OUTOFMEMORY;
300
301 This->m_values = values;
302 This->m_cursor = list_head(values);
303
304 *ppOut = static_cast<IEnumGUID *>(This);
305 TRACE("returning %p\n", *ppOut);
306 return S_OK;
307}
#define cicNoThrow
Definition: cicbase.h:46
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
GLboolean GLenum GLenum GLvoid * values
Definition: glext.h:5666
#define S_OK
Definition: intsafe.h:52
Definition: list.h:15

Referenced by Clone(), and CCompartmentMgr::EnumCompartments().

◆ CreateInstance() [2/2]

HRESULT CCompartmentEnumGuid::CreateInstance ( struct list values,
IEnumGUID **  ppOut,
struct list cursor 
)
static

Definition at line 310 of file compartmentmgr.cpp.

311{
313 if (!This)
314 return E_OUTOFMEMORY;
315
316 This->m_values = values;
317 This->m_cursor = cursor;
318
319 *ppOut = static_cast<IEnumGUID *>(This);
320 TRACE("returning %p\n", *ppOut);
321 return S_OK;
322}
const char cursor[]
Definition: icontest.c:13

◆ Next()

STDMETHODIMP CCompartmentEnumGuid::Next ( _In_ ULONG  celt,
_Out_ GUID rgelt,
_Out_ ULONG pceltFetched 
)
override

Definition at line 354 of file compartmentmgr.cpp.

358{
359 ULONG fetched = 0;
360
361 TRACE("(%p)\n", this);
362
363 if (!rgelt)
364 return E_POINTER;
365
366 while (fetched < celt && m_cursor)
367 {
369 if (!value)
370 break;
371
373 *rgelt = value->guid;
374
375 ++fetched;
376 ++rgelt;
377 }
378
379 if (pceltFetched)
380 *pceltFetched = fetched;
381 return fetched == celt ? S_OK : S_FALSE;
382}
uint32_t entry
Definition: isohybrid.c:63
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
Definition: list.h:115
#define LIST_ENTRY(type)
Definition: queue.h:175
uint32_t ULONG
Definition: typedefs.h:59
Definition: pdh_main.c:96
#define S_FALSE
Definition: winerror.h:3451

◆ QueryInterface()

STDMETHODIMP CCompartmentEnumGuid::QueryInterface ( REFIID  iid,
LPVOID ppvObj 
)
override

Definition at line 324 of file compartmentmgr.cpp.

325{
326 *ppvObj = NULL;
327
328 if (iid == IID_IUnknown || iid == IID_IEnumGUID)
329 *ppvObj = static_cast<IEnumGUID *>(this);
330
331 if (*ppvObj)
332 {
333 AddRef();
334 return S_OK;
335 }
336
337 WARN("unsupported interface: %s\n", debugstr_guid(&iid));
338 return E_NOINTERFACE;
339}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
ULONG AddRef()
#define debugstr_guid
Definition: kernel32.h:35
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ Reset()

STDMETHODIMP CCompartmentEnumGuid::Reset ( )
override

Implements IEnumGUID.

Definition at line 391 of file compartmentmgr.cpp.

392{
393 TRACE("(%p)\n", this);
395 return S_OK;
396}

◆ Skip()

STDMETHODIMP CCompartmentEnumGuid::Skip ( _In_ ULONG  celt)
override

Definition at line 384 of file compartmentmgr.cpp.

385{
386 TRACE("(%p)\n", this);
388 return S_OK;
389}

◆ STDMETHODIMP_() [1/2]

CCompartmentEnumGuid::STDMETHODIMP_ ( ULONG  )
override

◆ STDMETHODIMP_() [2/2]

CCompartmentEnumGuid::STDMETHODIMP_ ( ULONG  )
override

Member Data Documentation

◆ m_cRefs

LONG CCompartmentEnumGuid::m_cRefs
protected

Definition at line 78 of file compartmentmgr.cpp.

◆ m_cursor

struct list* CCompartmentEnumGuid::m_cursor
protected

Definition at line 80 of file compartmentmgr.cpp.

Referenced by Clone(), Next(), Reset(), and Skip().

◆ m_values

struct list* CCompartmentEnumGuid::m_values
protected

Definition at line 79 of file compartmentmgr.cpp.

Referenced by Clone(), Next(), Reset(), and Skip().


The documentation for this class was generated from the following file: