home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-bin.lha / include / octave / Range.h < prev    next >
C/C++ Source or Header  |  1996-10-12  |  3KB  |  126 lines

  1. // Range.h                                               -*- C++ -*-
  2. /*
  3.  
  4. Copyright (C) 1992, 1993, 1994, 1995 John W. Eaton
  5.  
  6. This file is part of Octave.
  7.  
  8. Octave is free software; you can redistribute it and/or modify it
  9. under the terms of the GNU General Public License as published by the
  10. Free Software Foundation; either version 2, or (at your option) any
  11. later version.
  12.  
  13. Octave is distributed in the hope that it will be useful, but WITHOUT
  14. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  15. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  16. for more details.
  17.  
  18. You should have received a copy of the GNU General Public License
  19. along with Octave; see the file COPYING.  If not, write to the Free
  20. Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  
  22. */
  23.  
  24. #if !defined (octave_Range_h)
  25. #define octave_Range_h 1
  26.  
  27. extern "C++" {
  28.  
  29. class istream;
  30. class ostream;
  31. class Matrix;
  32.  
  33. class Range
  34. {
  35.  public:
  36.   Range (void);
  37.   Range (const Range& r);
  38.   Range (double b, double l);
  39.   Range (double b, double l, double i);
  40.  
  41.   double base (void) const;
  42.   double limit (void) const;
  43.   double inc (void) const;
  44.   int nelem (void) const;
  45.  
  46.   Matrix matrix_value (void) const;
  47.  
  48.   double min (void) const;
  49.   double max (void) const;
  50.  
  51.   void sort (void);
  52.  
  53.   void set_base (double b);
  54.   void set_limit (double l);
  55.   void set_inc (double i);
  56.  
  57.   friend ostream& operator << (ostream& os, const Range& r);
  58.   friend istream& operator >> (istream& is, Range& r);
  59.  
  60.   void print_range (void);
  61.  
  62.  private:
  63.   double rng_base;
  64.   double rng_limit;
  65.   double rng_inc;
  66.   int rng_nelem;
  67.  
  68.   int nelem_internal (void) const;
  69. };
  70.  
  71. inline
  72. Range::Range (void)
  73. {
  74.   rng_base = -1;
  75.   rng_limit = -1;
  76.   rng_inc = -1;
  77.   rng_nelem = -1;
  78. }
  79.  
  80. inline
  81. Range::Range (const Range& r)
  82. {
  83.   rng_base = r.rng_base;
  84.   rng_limit = r.rng_limit;
  85.   rng_inc = r.rng_inc;
  86.   rng_nelem = r.rng_nelem;
  87. }
  88.  
  89. inline
  90. Range::Range (double b, double l)
  91. {
  92.   rng_base = b;
  93.   rng_limit = l;
  94.   rng_inc = 1;
  95.   rng_nelem = nelem_internal ();
  96. }
  97.  
  98. inline
  99. Range::Range (double b, double l, double i)
  100. {
  101.   rng_base = b;
  102.   rng_limit = l;
  103.   rng_inc = i;
  104.   rng_nelem = nelem_internal ();
  105. }
  106.  
  107. inline double Range::base (void) const { return rng_base;  }
  108. inline double Range::limit (void) const { return rng_limit; }
  109. inline double Range::inc (void) const { return rng_inc;   }
  110. inline int Range::nelem (void) const { return rng_nelem; }
  111.  
  112. inline void Range::set_base (double b) { rng_base = b;  }
  113. inline void Range::set_limit (double l) { rng_limit = l; }
  114. inline void Range::set_inc (double i) { rng_inc = i;   }
  115.  
  116. } // extern "C++"
  117.  
  118. #endif
  119.  
  120. /*
  121. ;;; Local Variables: ***
  122. ;;; mode: C++ ***
  123. ;;; page-delimiter: "^/\\*" ***
  124. ;;; End: ***
  125. */
  126.