Source code of Windows XP (NT5)
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.
|
|
//+---------------------------------------------------------------------------
//
// Copyright (C) 1994-1994, Microsoft Corporation.
//
// File: wregion.hxx
//
// Contents: Watch region classes used in CLargeTable
//
// Classes: CWatchRegion, CWatchDblList, CWatchIter, CWatchList
//
// History: 19-Jun-95 BartoszM Created
//
//----------------------------------------------------------------------------
#pragma once
#include <querydef.hxx>
//+-------------------------------------------------------------------------
//
// Class: CWatchRegion
//
// Purpose: Stores information about watch regions
//
// History: 19-Jun-95 BartoszM Created
//
//--------------------------------------------------------------------------
class CTableSegment; class CTableWindow;
class CWatchRegion: public CDoubleLink { public:
CWatchRegion (ULONG mode); HWATCHREGION Handle () const { return (HWATCHREGION) this; } void SetMode (ULONG mode) { _mode = mode; } void SetSegment (CTableSegment* pSegment) { _pSegment = pSegment; } void Set (CI_TBL_CHAPT chapter, CI_TBL_BMK bookmark, long cRows) { _chapter = chapter; _bookmark = bookmark; _cRows = cRows; }
void UpdateSegment( CTableSegment * pOld, CTableWindow *pNew, CI_TBL_BMK bmkNew );
BOOL IsEqual (HWATCHREGION hreg) const { return hreg == (HWATCHREGION) this; }
ULONG Mode() const { return _mode; } CI_TBL_CHAPT Chapter() const { return _chapter; } CI_TBL_BMK Bookmark () const { return _bookmark; } long RowCount () const { return _cRows; } CTableSegment* Segment () const { return _pSegment; } BOOL IsInit() const { return _pSegment != 0; }
#ifdef CIEXTMODE
void CiExtDump(void *ciExtSelf); #endif
private:
ULONG _mode; CI_TBL_CHAPT _chapter; CI_TBL_BMK _bookmark; long _cRows;
CTableSegment* _pSegment; // starting segment
};
//+-------------------------------------------------------------------------
//
// Class: CWatchDblList
//
// Purpose: Double link list of watch regions
//
// History: 19-Jun-95 BartoszM Created
//
//--------------------------------------------------------------------------
class CWatchDblList: public CDoubleList { friend class CWatchIter;
public:
void Add ( CWatchRegion* pRegion ) { _Queue ( pRegion ); }
CWatchRegion* Pop () { return (CWatchRegion*) _Pop(); }
#ifdef CIEXTMODE
void CiExtDump(void *ciExtSelf); #endif
};
//+-------------------------------------------------------------------------
//
// Class: CWatchList
//
// Purpose: List of watch regions
//
// History: 19-Jun-95 BartoszM Created
//
//--------------------------------------------------------------------------
class CTableSegList; class CFwdTableSegIter;
class CWatchList: INHERIT_UNWIND { friend class CWatchIter;
INLINE_UNWIND(CWatchList); public: CWatchList(CTableSegList& segList);
~CWatchList();
BOOL IsEmpty () const { return _list.IsEmpty(); }
HWATCHREGION NewRegion (ULONG mode);
void BuildRegion ( HWATCHREGION hRegion, CTableSegment* pSegment, CI_TBL_CHAPT chapter, CI_TBL_BMK bookmark, LONG cRows );
void ChangeMode ( HWATCHREGION hRegion, ULONG mode );
void GetInfo (HWATCHREGION hRegion, CI_TBL_CHAPT* pChapter, CI_TBL_BMK* pBookmark, DBCOUNTITEM* pcRows);
void ShrinkRegionToZero (HWATCHREGION hRegion);
void DeleteRegion (HWATCHREGION hRegion);
void ShrinkRegion ( HWATCHREGION hRegion, CI_TBL_CHAPT chapter, CI_TBL_BMK bookmark, LONG cRows );
void VerifyRegion (HWATCHREGION hRegion) { if (hRegion != 0) FindVerify(hRegion); }
CWatchRegion* GetRegion (HWATCHREGION hRegion) { return (CWatchRegion*) (void *) hRegion; }
CWatchRegion* FindVerify (HWATCHREGION hRegion);
CWatchRegion* FindRegion (HWATCHREGION hRegion);
inline void Advance (CWatchIter& iter); inline BOOL AtEnd (CWatchIter& iter);
#if CIDBG==1
void CheckRegionConsistency( CWatchRegion * pRegion ); #endif // CIDBG !=1
#ifdef CIEXTMODE
void CiExtDump(void *ciExtSelf); #endif
private:
CWatchDblList _list; // list of watch regions
CTableSegList & _segList; // List of table segments
};
//+-------------------------------------------------------------------------
//
// Class: CWatchIter
//
// Purpose: Iterator over watch regions
//
// History: 19-Jun-95 BartoszM Created
//
//--------------------------------------------------------------------------
class CWatchIter: public CForwardIter { public: CWatchIter (CWatchList& list): CForwardIter(list._list) {} CWatchIter (CWatchDblList& list): CForwardIter(list) {} CWatchRegion* operator->() { return (CWatchRegion*) _pLinkCur; } CWatchRegion* Get() { return (CWatchRegion*) _pLinkCur; }
private: };
inline void CWatchList::Advance (CWatchIter& iter) { _list.Advance(iter); }
inline BOOL CWatchList::AtEnd (CWatchIter& iter) { return _list.AtEnd(iter); }
|