Public Member Functions

EnumFormatEtcImpl Class Reference

implementation of IEnumFORMATETC interface More...

#include <dragdropimpl.h>

Inheritance diagram for EnumFormatEtcImpl:
Inheritance graph
[legend]
Collaboration diagram for EnumFormatEtcImpl:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 EnumFormatEtcImpl (const FormatArray &ArrFE)
 EnumFormatEtcImpl (const StorageArray &ArrFE)
virtual ~EnumFormatEtcImpl ()
virtual HRESULT STDMETHODCALLTYPE Next (ULONG, LPFORMATETC, ULONG *)
virtual HRESULT STDMETHODCALLTYPE Skip (ULONG)
virtual HRESULT STDMETHODCALLTYPE Reset (void)
virtual HRESULT STDMETHODCALLTYPE Clone (IEnumFORMATETC **)

Detailed Description

implementation of IEnumFORMATETC interface

Definition at line 27 of file dragdropimpl.h.


Constructor & Destructor Documentation

EnumFormatEtcImpl::EnumFormatEtcImpl ( const FormatArray ArrFE )

Definition at line 254 of file dragdropimpl.cpp.

Referenced by Clone().

 :  super(IID_IEnumFORMATETC),
    m_cRefCount(0),
    m_iCur(0)
{
   for(FormatArray::const_iterator it=ArrFE.begin(); it!=ArrFE.end(); ++it)
        m_pFmtEtc.push_back(*it);
}

Here is the caller graph for this function:

EnumFormatEtcImpl::EnumFormatEtcImpl ( const StorageArray ArrFE )

Definition at line 263 of file dragdropimpl.cpp.

 :  super(IID_IEnumFORMATETC),
    m_cRefCount(0),
    m_iCur(0)
{
   for(StorageArray::const_iterator it=ArrFE.begin(); it!=ArrFE.end(); ++it)
        m_pFmtEtc.push_back(*it->_format);
}
virtual EnumFormatEtcImpl::~EnumFormatEtcImpl (  ) [inline, virtual]

Definition at line 40 of file dragdropimpl.h.

{}

Member Function Documentation

STDMETHODIMP EnumFormatEtcImpl::Clone ( IEnumFORMATETC **  ppCloneEnumFormatEtc ) [virtual]

Definition at line 311 of file dragdropimpl.cpp.

References EnumFormatEtcImpl().

{
  if (ppCloneEnumFormatEtc == NULL)
    return E_POINTER;

  EnumFormatEtcImpl* newEnum = new EnumFormatEtcImpl(m_pFmtEtc);

  if (!newEnum)
    return E_OUTOFMEMORY;

  newEnum->AddRef();
  newEnum->m_iCur = m_iCur;
  *ppCloneEnumFormatEtc = newEnum;

  return S_OK;
}

Here is the call graph for this function:

STDMETHODIMP EnumFormatEtcImpl::Next ( ULONG  celt,
LPFORMATETC  lpFormatEtc,
ULONG *  pceltFetched 
) [virtual]

Definition at line 272 of file dragdropimpl.cpp.

{
   if (pceltFetched != NULL)
       *pceltFetched=0;

   ULONG cReturn = celt;

   if (celt <= 0 || lpFormatEtc == NULL || m_iCur >= m_pFmtEtc.size())
      return S_FALSE;

   if (pceltFetched == NULL && celt != 1) // pceltFetched can be NULL only for 1 item request
      return S_FALSE;

    while (m_iCur < m_pFmtEtc.size() && cReturn > 0)
    {
        *lpFormatEtc++ = m_pFmtEtc[m_iCur++];
        --cReturn;
    }
    if (pceltFetched != NULL)
        *pceltFetched = celt - cReturn;

    return (cReturn == 0) ? S_OK : S_FALSE;
}
STDMETHODIMP EnumFormatEtcImpl::Reset ( void   ) [virtual]

Definition at line 305 of file dragdropimpl.cpp.

{
   m_iCur = 0;
   return S_OK;
}
STDMETHODIMP EnumFormatEtcImpl::Skip ( ULONG  celt ) [virtual]

Definition at line 296 of file dragdropimpl.cpp.

{
    if ((m_iCur + int(celt)) >= m_pFmtEtc.size())
        return S_FALSE;

    m_iCur += celt;
    return S_OK;
}

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

ROS Explorer Source Code Documentation
generated on 02.01.2013 by doxygen

ROS Explorer Homepage