class FAR CNDSGroupCollectionEnum : public CNDSEnumVariant
{
public:
    CNDSGroupCollectionEnum();
    ~CNDSGroupCollectionEnum();

    static
    HRESULT
    CNDSGroupCollectionEnum::Create(
        BSTR bstrGroupName,
        CCredentials& Credentials,
        CNDSGroupCollectionEnum FAR* FAR* ppenumvariant,
        VARIANT var
        );


private:

    VARIANT _vMembers;

    BSTR _bstrGroupName;

    DWORD _dwIndex;
    DWORD _dwSUBound;
    DWORD _dwSLBound;
    DWORD _dwMultiple;

    CCredentials _Credentials;

    HRESULT
    CNDSGroupCollectionEnum::ValidateSingleVariant(
        VARIANT var
        );

    HRESULT
    CNDSGroupCollectionEnum::ValidateMultipleVariant(
        VARIANT var
        );

    HRESULT
    CNDSGroupCollectionEnum::ValidateVariant(
        VARIANT var
        );


    HRESULT
    CNDSGroupCollectionEnum::GetGroupMultipleMemberObject(
        IDispatch ** ppDispatch
        );

    HRESULT
    CNDSGroupCollectionEnum::GetGroupSingleMemberObject(
        IDispatch ** ppDispatch
        );

    HRESULT
    CNDSGroupCollectionEnum::EnumGroupMembers(
        ULONG cElements,
        VARIANT FAR* pvar,
        ULONG FAR* pcElementFetched
        );


    STDMETHOD(Next)(
        ULONG cElements,
        VARIANT FAR* pvar,
        ULONG FAR* pcElementFetched
        );
};



#define         EMPTY           1
#define         SINGLE          2
#define         MULTIPLE        3











