home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / VFORM.ZIP / Source / NumList.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-10  |  2.8 KB  |  87 lines

  1. // -------------------------------------------------------------------------
  2. // Copyright @ 1997 TCK Software Incorporated
  3. // All Rights Reserved
  4. // -------------------------------------------------------------------------
  5. #ifndef __NUMLIST_H__
  6. #define __NUMLIST_H__
  7.  
  8. #include <afxTempl.h>
  9.  
  10. #ifdef VF_STATIC
  11.     #undef AFX_EXT_CLASS
  12.     #define AFX_EXT_CLASS
  13. #endif
  14.  
  15. // -------------------------------------------------------------------------
  16. // Class VNumRange - Numeric range class
  17. // -------------------------------------------------------------------------
  18. class AFX_EXT_CLASS VNumRange
  19. {
  20. protected:
  21.     long    m_nLow;                    // Low value in range
  22.     long    m_nHigh;                // High value in range
  23. public:
  24.     VNumRange()    { m_nLow = m_nHigh = 0; }
  25.     VNumRange(long nLow, long nHigh)    
  26.             { m_nLow = nLow; m_nHigh = nHigh; Validate(); }
  27.  
  28.     void    Low(long x)        { m_nLow = x; Validate(); }
  29.     void    High(long x)    { m_nHigh = x; Validate(); }
  30.  
  31.     long    Low()            { return m_nLow; }
  32.     long    High()            { return m_nHigh; }
  33.     long    Count()            { return((m_nHigh - m_nLow) + 1); }
  34.  
  35.     BOOL    Validate();
  36.     BOOL    Contains(long x)
  37.             { return (x >= m_nLow && x <= m_nHigh); }
  38.     BOOL    Contains(VNumRange &x)
  39.             { return (x.m_nLow >= m_nLow && x.m_nHigh <= m_nHigh); }
  40.     BOOL    Overlaps(VNumRange &x);
  41.     BOOL    Adjacent(long x);
  42.     BOOL    Adjacent(VNumRange &x);
  43.  
  44. };
  45.  
  46.  
  47. typedef CList<VNumRange, VNumRange> VNumRangeList;
  48.  
  49.  
  50. // -------------------------------------------------------------------------
  51. // Class VNumList - List of Numeric ranges
  52. // -------------------------------------------------------------------------
  53. class AFX_EXT_CLASS VNumList : public VNumRangeList
  54. {
  55. protected:
  56.     POSITION    m_posCur;        // Current cursor pos
  57.     VNumRange    m_nrCur;        // Current cursor number range
  58.     long        m_nCur;            // Current Cursor Long Value
  59.  
  60. public:
  61.     VNumList()    { m_nCur = -1; }
  62.  
  63.     long    Low();            // return lowest number in list
  64.     long    High();            // returns highest number in list
  65.     long    Count();        // how many numbers selected
  66.  
  67.     // --- Cursor Functions -- all return -1 for error/eof
  68.     long    First();        // Sets Internal Cursor - returns first
  69.     long    Last();            // Sets Internal Cursor - returns last
  70.     long    Next();            // Sets Internal Cursor - returns next
  71.     long    Prev();            // Sets Internal Cursor - returns next
  72.     long    Current() { return m_nCur; }        // Returns current Cursor value
  73.  
  74.     void    Toggle(long nVal);                    // Toggles one value
  75.     void    Add(long nVal)                        // Adds one value
  76.                 { AddRange(nVal, nVal); }
  77.     void    AddRange(long nLow, long nHigh);    // Adds a range of values
  78.     void    Clear(long nVal)                    // Clears one value
  79.                 { ClearRange(nVal, nVal); }
  80.     void    ClearRange(long nLow, long nHigh);    // Clears a range of values
  81.     void    Clear() { RemoveAll(); }            // Clears entire list
  82.  
  83.     BOOL    Contains(long nVal);                // Returns True if value is 
  84.                                                 // in the list
  85. };
  86.  
  87. #endif