// EnumVar.h: interface for the CEnumVar class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ENUMVAR_H__EFC2C760_1A9F_11D3_8C81_0090270D48D1__INCLUDED_)
#define AFX_ENUMVAR_H__EFC2C760_1A9F_11D3_8C81_0090270D48D1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define UNLEN        255

// The follwing flags make up a bitmask used to define what values the Enumerator fills up
// for a given object.

// TODO :: We can add more attributes in order to get the appropriate information from the Object
//         when we enumerate it. To add items simply add a flag and then add an item to the struct.
#define  F_Name              0x00000001
#define  F_Class             0x00000002
#define  F_SamName           0x00000004
#define  F_GroupType         0x00000008

// Structure used to fill out information about the object
typedef struct _Obj {
   WCHAR                     sName[UNLEN];    // Common Name of the object
   WCHAR                     sClass[UNLEN];   // The type of the object
   WCHAR                     sSamName[UNLEN]; // SamAccountName of the object
   long                      groupType;       // The type of a group object (UNIVERSAL etc)
} SAttrInfo;

class CEnumVar  
{
public:
	BOOL Next( long flag, SAttrInfo * pAttr );
	IEnumVARIANT  * m_pEnum;
	CEnumVar(IEnumVARIANT  * pEnum);
	virtual ~CEnumVar();
};

#endif // !defined(AFX_ENUMVAR_H__EFC2C760_1A9F_11D3_8C81_0090270D48D1__INCLUDED_)