home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 21 / IOPROG_21.ISO / SOFT / LIBMAT.ZIP / MATPAIR.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-16  |  2.5 KB  |  118 lines

  1. /**************************************************/
  2. /*      matpair.c source for matpair class        */
  3. /**************************************************/
  4.  
  5.  
  6. /**************************************************/
  7. /*            MatClass Source File                */
  8. /*       Copyright of C. R. Birchenhall           */
  9. /*       University of Manchester, UK.            */
  10. /*   MatClass is freeware. This file should be    */
  11. /* made freely available to users of any software */
  12. /* whose creation is wholly or partly dependent   */
  13. /*                on this file.                   */
  14. /**************************************************/
  15.  
  16. #include "matrix.hpp"
  17.  
  18.  
  19. /*************************************************/
  20. /*                 matPair class                 */
  21. /*************************************************/
  22.  
  23.  
  24. matPair::matPair( void )
  25. {
  26.    i = j = r1 = c1 = 1 ;
  27.    r2 = 0 ;
  28.    c2 = 0 ;
  29.    inBounds = FALSE ;
  30. } // matPair
  31.  
  32. matPair::matPair( INDEX nr, INDEX nc )
  33. {
  34.    i = j = r1 = c1 = 1 ;
  35.    r2 = nr ;
  36.    c2 = nc ;
  37.    inBounds = ( i <= r2 && j <= c2 ) ;
  38. } // matPair
  39.  
  40. matPair::matPair( INDEX nr1, INDEX nr2, INDEX nc1, INDEX nc2 )
  41. {
  42.    i = r1 = nr1 ;
  43.    j = c1 = nc1 ;
  44.    r2 = nr2 ;
  45.    c2 = nc2 ;
  46.    inBounds = ( r1 <= i && i <= r2 && c1 <= j && j <= c2 ) ;
  47. } // matPair
  48.  
  49. matPair::~matPair( void ) {} // matPair
  50.  
  51. matPair::matPair( matPair& p )
  52. {
  53.    i = p.i ;
  54.    j = p.j ;
  55.    r1 = p.r1 ;
  56.    r2 = p.r2 ;
  57.    c1 = p.c1 ;
  58.    c2 = p.c2 ;
  59.    inBounds = p.inBounds ;
  60. } // matPair( matPair& )
  61.  
  62. matPair& matPair::operator = ( matPair& p )
  63. {
  64.    i = p.i ;
  65.    j = p.j ;
  66.    r1 = p.r1 ;
  67.    r2 = p.r2 ;
  68.    c1 = p.c1 ;
  69.    c2 = p.c2 ;
  70.    inBounds = p.inBounds ;
  71.    return *this ;
  72. } // matPair op =
  73.  
  74. void matPair::range( INDEX nr1, INDEX nr2, INDEX nc1, INDEX nc2 )
  75. {
  76.    i = r1 = nr1 ;
  77.    j = c1 = nc1 ;
  78.    r2 = nr2 ;
  79.    c2 = nc2 ;
  80.    inBounds = ( r1 <= i && i <= r2 && c1 <= j && j <= c2 ) ;
  81. } // matPair
  82.  
  83. void matPair::first( void )
  84. {
  85.    i = r1 ;
  86.    j = c1 ;
  87.    inBounds = ( i <= r2 && j <= c2 ) ;
  88. } // matPair::first
  89.  
  90. void matPair::last( void )
  91. {
  92.    i = r2 ;
  93.    j = c2 ;
  94.    inBounds = ( i >= r1 && j >= c1 ) ;
  95. } // matPair::first
  96.  
  97. void matPair::operator ++ ( void )
  98. {
  99.    if ( i < r2 )
  100.       i++ ;
  101.    else if ( j < c2 ) {
  102.       j++ ;
  103.       i = r1 ;
  104.    } else
  105.       inBounds = 0 ;
  106. } // matPair ++
  107.  
  108. void matPair::operator -- ( void )
  109. {
  110.    if ( i > r1 )
  111.       i-- ;
  112.    else if ( j > c1 ) {
  113.       j-- ;
  114.       i = r2 ;
  115.    } else
  116.       inBounds = 0 ;
  117. } // matPair --
  118.