CENUMVAR.CPP
/*++ 
 
Copyright (c) 1996 Microsoft Corporation 
 
Module Name: 
 
    CEnumVar.cpp 
 
Abstract: 
 
    Base Implementation for xxxEnumVariant derived classes 
 
Author: 
 
Environment: 
 
    User mode 
 
Revision History : 
 
--*/ 
#include "adssmp.h" 
#pragma hdrstop 
 
//+--------------------------------------------------------------------------- 
// 
//  Function:   CSampleDSEnumVariant::CSampleDSEnumVariant 
// 
//  Synopsis: 
// 
// 
//  Arguments: 
// 
// 
//  Returns: 
// 
//  Modifies: 
// 
//---------------------------------------------------------------------------- 
CSampleDSEnumVariant::CSampleDSEnumVariant() 
{ 
    // 
    // Set the reference count on the enumerator. 
    // 
    m_cRef = 1; 
 
} 
 
//+--------------------------------------------------------------------------- 
// 
//  Function:   CSampleDSEnumVariant::~CSampleDSEnumVariant 
// 
//  Synopsis: 
// 
// 
//  Arguments: 
// 
//  Returns: 
// 
//  Modifies: 
// 
//---------------------------------------------------------------------------- 
CSampleDSEnumVariant::~CSampleDSEnumVariant() 
{ 
    // 
    // Bump down the reference count on the Collection object 
    // 
} 
 
//+--------------------------------------------------------------------------- 
// 
//  Function:   CSampleDSEnumVariant::QueryInterface 
// 
//  Synopsis: 
// 
//  Arguments:  [iid] 
//              [ppv] 
// 
//  Returns:    HRESULT 
// 
//  Modifies: 
// 
//---------------------------------------------------------------------------- 
STDMETHODIMP 
CSampleDSEnumVariant::QueryInterface(REFIID iid, void FAR* FAR* ppv) 
{ 
    *ppv = NULL; 
 
    if (iid == IID_IUnknown || iid == IID_IEnumVARIANT) { 
 
        *ppv = this; 
 
    } 
    else { 
 
        return ResultFromScode(E_NOINTERFACE); 
    } 
 
    AddRef(); 
    return NOERROR; 
} 
 
 
//+--------------------------------------------------------------------------- 
// 
//  Function:   CSampleDSEnumVariant::AddRef 
// 
//  Synopsis: 
// 
//  Arguments: 
// 
//  Returns:    HRESULT 
// 
//  Modifies: 
// 
//---------------------------------------------------------------------------- 
STDMETHODIMP_(ULONG) 
CSampleDSEnumVariant::AddRef(void) 
{ 
 
    return ++m_cRef; 
} 
 
 
//+--------------------------------------------------------------------------- 
// 
//  Function:   CSampleDSEnumVariant::Release 
// 
//  Synopsis: 
// 
// 
//  Arguments:  [void] 
// 
//  Returns: 
// 
//  Modifies: 
// 
//---------------------------------------------------------------------------- 
STDMETHODIMP_(ULONG) 
CSampleDSEnumVariant::Release(void) 
{ 
 
 
    if(--m_cRef == 0){ 
 
        delete this; 
        return 0; 
    } 
 
    return m_cRef; 
} 
 
 
//+--------------------------------------------------------------------------- 
// 
//  Function:   CSampleDSEnumVariant::Skip 
// 
//  Synopsis: 
// 
//  Arguments:  [cElements] 
// 
//  Returns:    HRESULT 
// 
//  Modifies: 
// 
//---------------------------------------------------------------------------- 
STDMETHODIMP 
CSampleDSEnumVariant::Skip(ULONG cElements) 
{ 
 
    RRETURN(ResultFromScode(E_FAIL)); 
 
} 
 
//+--------------------------------------------------------------------------- 
// 
//  Function:   CSampleDSEnumVariant::Reset 
// 
//  Synopsis: 
// 
//  Arguments:  [] 
// 
//  Returns:    HRESULT 
// 
//  Modifies: 
// 
//---------------------------------------------------------------------------- 
STDMETHODIMP 
CSampleDSEnumVariant::Reset() 
{ 
 
    RRETURN(ResultFromScode(S_OK)); 
} 
 
 
//+--------------------------------------------------------------------------- 
// 
//  Function:   CSampleDSEnumVariant::Clone 
// 
//  Synopsis: 
// 
//  Arguments:  [pCollection] 
//              [ppEnumVariant] 
// 
//  Returns:    HRESULT 
// 
//  Modifies: 
// 
//---------------------------------------------------------------------------- 
STDMETHODIMP 
CSampleDSEnumVariant::Clone(IEnumVARIANT FAR* FAR* ppenum) 
{ 
    RRETURN(ResultFromScode(E_FAIL)); 
}