SROWLST.H

// --srowlst.h----------------------------------------------------------------- 
//
// Header file for classes CSROWNODE and CSROWLST.
//
// Copyright (C) Microsoft Corp,, 1986-1996. All rights reserved.
//
//-----------------------------------------------------------------------------

#ifndef_SROWLST_H
#define _SROWLST_H

#include "llmacro.h"

// Count of properties supported by the ACL object.

#defineC_ACLPROPS3

// Indices of ACL properties in the SRow associated with a rule object.

#defineI_MEMBER_ENTRYID0
#defineI_MEMBER_RIGHTS1
#defineI_MEMBER_NAME2

class CSROWNODE// srn
{
friend class CIExchangeFolderACLs;
friend class CSROWLST;

public:

// constructor & destructor

CSROWNODE(
INLPSRowlpSRow
);

~CSROWNODE();

protected:

CSROWNODE *m_pNxt;
CSROWNODE *m_pPrv;
SRowm_SRow;
};

class CSROWLST// srl
{
public:

CSROWLST(); // constructor

~CSROWLST(); // destructor

// standard C++ Get and Set member functions

CSROWNODE * GetCurrentNode(VOID);

LONG GetCursor(VOID) const;

LONG GetNodeCount(VOID) const;

LONG SetCursor(
INLONGlPos
);

HRESULT HrInitialize(
INLPSRowSetlpRows
);

HRESULT HrDelete(VOID);

HRESULT HrInsert(
INLPSRowlpSRow
);

HRESULT HrRemoveFromLst(
OUTCSROWNODE * *ppRemovedNode
);

HRESULT HrWriteToTable(
INLPEXCHANGEMODIFYTABLElpExchTbl
);

private:

ULONGm_cNodes;
LONGm_lPos;
CSROWNODE *m_pCurNode;
CSROWNODE *m_pLstHd;
};

// $--CSROWNODE::GetCurrentNode------------------------------------------------
//
// DESCRIPTION:Return a ptr to the current node.
//
// INPUT: None.
//
// RETURNS:A ptr to the current node.
//
//-----------------------------------------------------------------------------

inline CSROWNODE * CSROWLST::GetCurrentNode(VOID)
{
return m_pCurNode;
}

// $--CSROWLST::GetCursor------------------------------------------------------
//
// DESCRIPTION:Return the current cursor position.
//
// INPUT: None.
//
// RETURNS:The current cursor position.
//
//-----------------------------------------------------------------------------

inline LONG CSROWLST::GetCursor() const
{
return m_lPos;
}

// $--CSROWLST::GetNodeCount---------------------------------------------------
//
// DESCRIPTION:Return the count of nodes in the list.
//
// INPUT: None.
//
// RETURNS:The count of nodes in the list.
//
//-----------------------------------------------------------------------------

inline LONG CSROWLST::GetNodeCount(VOID) const
{
return m_cNodes;
}

#endif // _SROWLSTH_