home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mesaaiok.zip / source / range.h < prev    next >
C/C++ Source or Header  |  1995-10-19  |  2KB  |  65 lines

  1. // These define the basic objects used in the sheets.  
  2. #ifndef __RANGE__
  3. #define __RANGE__
  4.  
  5. #ifndef NULL
  6. #define NULL 0
  7. #endif 
  8.  
  9. // Addresses consist of a row, a column, and a layer.  This
  10. // class is a very simplified class.  It doesn't do any bounds
  11. // checking to make sure the values fall with Mesa's range.
  12. class Address {
  13.    public:
  14.     Address() {r=c=l=-1;};
  15.     Address(const Address & ad) {r=ad.r;c=ad.c;l=ad.l;};
  16.     Address(int r1,int c1,int l1) { r=r1;c=c1;l=l1;};
  17.  
  18.     int row() const { return r;};
  19.     int col() const { return c;};
  20.     int layer() const {return l;};
  21.  
  22.     Address & set(int r1, int c1, int l1) { r=r1;c=c1;l=l1; return *this;};
  23.  
  24.     Address & setRow(int r1) {r=r1; return *this;};
  25.     Address & setCol(int c1) {c=c1; return *this;};
  26.     Address & setLayer(int l1) {l=l1;return *this;};
  27.  
  28.     void makeNull() { r = c = l = -1; };
  29.     int isNull() { return ((r == -1) && (c == -1) && (l == -1));};
  30.  
  31.     int operator == (const Address & ad) const { return (r==ad.r && c==ad.c && l==ad.l);};
  32.     int operator != (const Address & ad) const { return (r!=ad.r || c!=ad.c || l!=ad.l);};
  33.     Address & operator = (const Address & ad) {r=ad.r;c=ad.c;l=ad.l; return *this;};
  34.  
  35.    private:
  36.     int r,c,l;
  37. };
  38.  
  39. // This is a simple range class.  It does handle discontinuous ranges.  
  40. class Range {
  41.    public:
  42.     Range() { count = 0; _ul = NULL; _lr = NULL;};
  43.     Range(const Address &ul,const Address &lr);
  44.     Range(const Range &rng);
  45.     ~Range();
  46.  
  47.     int getCount() const { return count;};
  48.     
  49.     void getItem(int x, Address &ul, Address & lr) const;
  50.     void setItem(int x, Address &ul, Address & lr);
  51.  
  52.     void add(Address &ul, Address & lr);
  53.  
  54.     void zap();
  55.     
  56.     Range & operator = (const Range & rg);
  57.     
  58.    private:
  59.     int count;
  60.     Address *_ul;
  61.     Address *_lr;
  62. };
  63.  
  64. #endif
  65.