home *** CD-ROM | disk | FTP | other *** search
- // -------------------------------------------------------------------------
- // Copyright @ 1997 TCK Software Incorporated
- // All Rights Reserved
- // -------------------------------------------------------------------------
- #ifndef __NUMLIST_H__
- #define __NUMLIST_H__
-
- #include <afxTempl.h>
-
- #ifdef VF_STATIC
- #undef AFX_EXT_CLASS
- #define AFX_EXT_CLASS
- #endif
-
- // -------------------------------------------------------------------------
- // Class VNumRange - Numeric range class
- // -------------------------------------------------------------------------
- class AFX_EXT_CLASS VNumRange
- {
- protected:
- long m_nLow; // Low value in range
- long m_nHigh; // High value in range
- public:
- VNumRange() { m_nLow = m_nHigh = 0; }
- VNumRange(long nLow, long nHigh)
- { m_nLow = nLow; m_nHigh = nHigh; Validate(); }
-
- void Low(long x) { m_nLow = x; Validate(); }
- void High(long x) { m_nHigh = x; Validate(); }
-
- long Low() { return m_nLow; }
- long High() { return m_nHigh; }
- long Count() { return((m_nHigh - m_nLow) + 1); }
-
- BOOL Validate();
- BOOL Contains(long x)
- { return (x >= m_nLow && x <= m_nHigh); }
- BOOL Contains(VNumRange &x)
- { return (x.m_nLow >= m_nLow && x.m_nHigh <= m_nHigh); }
- BOOL Overlaps(VNumRange &x);
- BOOL Adjacent(long x);
- BOOL Adjacent(VNumRange &x);
-
- };
-
-
- typedef CList<VNumRange, VNumRange> VNumRangeList;
-
-
- // -------------------------------------------------------------------------
- // Class VNumList - List of Numeric ranges
- // -------------------------------------------------------------------------
- class AFX_EXT_CLASS VNumList : public VNumRangeList
- {
- protected:
- POSITION m_posCur; // Current cursor pos
- VNumRange m_nrCur; // Current cursor number range
- long m_nCur; // Current Cursor Long Value
-
- public:
- VNumList() { m_nCur = -1; }
-
- long Low(); // return lowest number in list
- long High(); // returns highest number in list
- long Count(); // how many numbers selected
-
- // --- Cursor Functions -- all return -1 for error/eof
- long First(); // Sets Internal Cursor - returns first
- long Last(); // Sets Internal Cursor - returns last
- long Next(); // Sets Internal Cursor - returns next
- long Prev(); // Sets Internal Cursor - returns next
- long Current() { return m_nCur; } // Returns current Cursor value
-
- void Toggle(long nVal); // Toggles one value
- void Add(long nVal) // Adds one value
- { AddRange(nVal, nVal); }
- void AddRange(long nLow, long nHigh); // Adds a range of values
- void Clear(long nVal) // Clears one value
- { ClearRange(nVal, nVal); }
- void ClearRange(long nLow, long nHigh); // Clears a range of values
- void Clear() { RemoveAll(); } // Clears entire list
-
- BOOL Contains(long nVal); // Returns True if value is
- // in the list
- };
-
- #endif