Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// File: mrulist.h
#ifndef _MRULIST2_H_
#define _MRULIST2_H_
#include "ConfUtil.h"
#include "richaddr.h"
typedef VOID * PMRUE; // MRU Entries
enum { MRUTYPE_SZ = 1, MRUTYPE_DW = 2, };
class CMRUList2 { private: const DWSTR * m_prgDwStr;// {{cCol, pszKey}, {mruType, pszPrefix1}, {mruType, pszPrefix2},...}
int m_cCol; // number of "columns" (data entries in m_prgDwStr)
int m_cEntryMax; // maximum number of entries
int m_cEntry; // current number of entries
PMRUE * m_rgpEntry; // array of pointers to MRU data
BOOL m_fDirty; // TRUE if data was changed
BOOL m_fReversed; // Load/Save data reversed (old style)
BOOL FValidCol(int i) {return ((i >= 0) && (i < m_cCol));} BOOL FValidIndex(int i) {return ((i >= 0) && (i < m_cEntry));} BOOL FDirty() {return m_fDirty;} BOOL FReversed() {return m_fReversed;}
inline PMRUE GetEntry(int iItem) { ASSERT(FValidIndex(iItem)); return m_rgpEntry[iItem]; }
inline int MruTypeForCol(int iCol) { ASSERT(FValidCol(iCol)); return m_prgDwStr[1+iCol].dw; }
inline LPCTSTR PszPrefixForCol(int iCol) { ASSERT(FValidCol(iCol)); return m_prgDwStr[1+iCol].psz; }
inline LPCTSTR PszRegKey(void) { return m_prgDwStr[0].psz; }
VOID ShiftEntriesDown(int cItem);
protected: virtual int CompareEntry(int iItem, PMRUE pEntry);
public: CMRUList2(const DWSTR * prgDwStr, int cEntryMax, BOOL fReverse = FALSE); ~CMRUList2();
int GetNumEntries() {return m_cEntry;} VOID SetDirty(BOOL fDirty) {m_fDirty = fDirty;}
// Generic functions
int FindEntry(PMRUE pEntry); VOID MoveEntryToTop(int iItem); PMRUE LoadEntry(RegEntry * pre, int iItem); VOID StoreEntry(RegEntry * pre, int iItem); VOID DeleteEntry(PMRUE pEntry); VOID DeleteEntry(int iItem);
void DeleteEntry ( const TCHAR * const primaryString ); HRESULT Save(void);
LPCTSTR GetString(int iItem, int iCol); DWORD GetDWORD(int iItem, int iCol);
LPCTSTR GetString(PMRUE pEntry, int iCol); DWORD GetDWORD(PMRUE pEntry, int iCol);
HRESULT AddEntry(PMRUE pEntry); HRESULT AddEntry(LPCTSTR pcsz); HRESULT AddEntry(LPCTSTR pcsz1, LPCTSTR pcsz2); HRESULT AddEntry(LPCTSTR pcsz1, LPCTSTR pcsz2, DWORD dw3); };
#endif /* _MRULIST2_H_ */
|