home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / Range.hxx < prev    next >
Text File  |  1996-05-31  |  2KB  |  57 lines

  1. #ifndef    RANGE_HXX
  2. #define    RANGE_HXX
  3.  
  4.  
  5. /* Range.h -- header file for class Range
  6.  
  7.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  8.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  9.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  10.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  11.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  12.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  13.  
  14. Author:
  15.     C. J. Eppich
  16.     Computer Systems Laboratory, DCRT
  17.     National Institutes of Health
  18.     Bethesda, MD 20892
  19.  
  20. $Log:    Range.h,v $
  21.  * Revision 3.0  90/05/20  00:20:57  kgorlen
  22.  * Release for 1st edition.
  23.  *
  24.  * @(#)Range.hxx    1.1
  25.  * 
  26. */
  27.  
  28. class ostream;
  29.  
  30. class Range {
  31.     public: // constructors
  32.     Range()         : first(0), len(-1) {}
  33.     Range(int f, int l)    : first(f), len(l) {}
  34.  
  35.     public: // operators
  36.     void operator=(const Range& r)  { first = r.first;  len = r.len; }
  37.     int operator==(const Range& r) const { return ((first == r.first) && (len == r.len)); }
  38.     int operator!=(const Range& r) const { return !(*this==r); }
  39.  
  40.     public: // functions
  41.     int firstIndex() const    { return first; }
  42.     int firstIndex(int f)    { return first = f; }
  43.     int lastIndex() const    { return (first + len - 1); }
  44.     int lastIndex(int i)    { len = i - first + 1;  return i; }
  45.     int length() const    { return len; }
  46.     int length(int l)    { return len = l; }
  47.     int valid() const    { return (len >= 0); }
  48.     void printOn(ostream& strm) const;
  49.  
  50.     private: // data
  51.     int first,len;
  52. };
  53.  
  54. extern ostream& operator<< (ostream& strm, const Range& r);
  55.  
  56. #endif
  57.