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

  1. /*****************************************************/
  2. /*       matreal.c source for realArray 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.    /* Base is offset back by one to facili- */
  20.    /* tate unit base addressing of elements.*/
  21.    /* Note the elements of base are !not!   */
  22.    /* offset. See matMap below              */
  23.    /*****************************************/
  24.  
  25. #include <string.h> // for mem functions
  26.  
  27. #ifdef __cplusplus
  28. realArray::realArray( void ) : matObject()
  29. #else
  30. realArray::realArray( void ) : ()
  31. #endif
  32. {
  33.    errorExit( "realArray(void)", NIMPL ) ;
  34. } // realArray( void )
  35.  
  36. #ifdef __cplusplus
  37. realArray::realArray( INDEX nr, INDEX nc ) : matObject()
  38. #else
  39. realArray::realArray( INDEX nr, INDEX nc ) : ()
  40. #endif
  41. {
  42.    static char *mName = "realAr(n)" ;
  43.    matFunc func( mName ) ;
  44.    if ( nr == 0 || nc == 0 )
  45.       errorExit( mName, NPDIM );
  46.    if ( ( base = new REAL*[nc] ) == 0 )
  47.       errorExit( mName, NOMEM ) ;
  48.    INDEX size = nr * sizeof( REAL ) ;
  49.    base-- ;
  50.    for ( INDEX i = 1 ; i <= nc ; i++ ) {
  51.       if ( ( base[i] = new REAL[nr] ) == 0 )
  52.          errorExit( mName, NOMEM ) ;
  53.       memset( (void *)base[i], 0, size ) ;
  54.    } // for
  55.    ref = 1 ;
  56.    nrow = nr ;
  57.    ncol = nc ;
  58.    debugInfo( func ) ;
  59. } // realArray::realArray
  60.  
  61. realArray::~realArray( void )
  62. {
  63.    static char *mName = "~realArray" ;
  64.    matFunc func( mName ) ; debugInfo( func ) ;
  65.    if ( base != 0 ) {
  66.       for ( INDEX i = 1 ; i <= ncol ; i++ )
  67.       delete base[i] ;
  68.       base++ ;
  69.       delete base ;
  70.    } // if
  71. } // realArray::~realArray
  72.  
  73. REAL& realArray::elem( INDEX i, INDEX j ) M_CONST
  74. {
  75.    if ( i < 1 || i > nrow || j < 1 || j > ncol )
  76.       errorExit( "realArray()", NRANG ) ;
  77.    return base[j][i-1] ;
  78. } //realArray()
  79.  
  80. realArray& realArray::operator = ( realArray& y )
  81. {
  82.    static char *mName = "op =" ;
  83.    matFunc func( mName ) ; debugInfo( func ) ;
  84.    INDEX i, j, nr = y.nrow, nc = y.ncol ;
  85.    if ( nr != nrow || nc != ncol )
  86.       errorExit( mName, NEDIM ) ;
  87.    for ( i = 1; i <= nr ; i++ )
  88.       for ( j = 1 ; j <= nc ; j++ )
  89.      elem(i,j) = y(i,j) ;
  90.    return *this ;
  91. } // realArray =
  92.  
  93. outFile& realArray::info( outFile& f ) M_CONST
  94. {
  95.    if ( matListCtrl() > 1 )
  96.      return f ;
  97.    objectInfo( f ) ;
  98.    putName( "", f ) ;
  99.    putName( "realAr", f ) ;
  100.    putField( nrow, f ) ;
  101.    putField( ncol, f ) ;
  102.    putField( "", f ) ;
  103.    putField( ref, f ) ;
  104.    f.newLine() ;
  105.    return f ;
  106. } // realArray::info
  107.  
  108. outFile& realArray::put( outFile& f ) M_CONST
  109. {
  110.    static char *mName = "put" ;
  111.    matFunc func( mName ) ; debugInfo( func ) ;
  112.    errorExit( mName, NIMPL ) ;
  113.    return f ;
  114. } // realArray::put
  115.  
  116. inFile& realArray::get( inFile& f )
  117. {
  118.    static char *mName = "get" ;
  119.    matFunc func( mName ) ; debugInfo( func ) ;
  120.    errorExit( mName, NIMPL ) ;
  121.    return f ;
  122. } // realArray::get
  123.  
  124. void realArray::clear( void ) {
  125.    static char *mName = "clear" ;
  126.    matFunc func( mName ) ; debugInfo( func ) ;
  127.    errorExit( mName, NIMPL ) ;
  128. } // realArray::clear
  129.