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

  1. /**************************************************/
  2. /*      matchar.c source for charArray 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. #include <string.h>
  19.  
  20.  
  21. void charArray::allocate( INDEX n )
  22. {
  23.    static const INDEX minSize = 8 ;
  24.    cpSize = ( ( ( n + 1 ) / minSize ) + 1 ) * minSize ;
  25.    cp = new char[ cpSize + 1 ] ;
  26.    if ( cp == 0 )
  27.       matErrNumExit( "charArray allocate", NOMEM ) ;
  28. } // charArray allcoate
  29.  
  30. void charArray::reallocate( INDEX n )
  31. {
  32.    if ( n > cpSize ) {
  33.      if ( cp != 0 )
  34.         delete cp ;
  35.      allocate( n ) ;
  36.    } // if
  37. } // charArray reallocate
  38.  
  39. charArray::charArray( void )
  40. {
  41.    allocate(0) ;
  42.    cp[0] = '\0' ;
  43. } // charArray( void )
  44.  
  45. charArray::charArray( INDEX n )
  46. {
  47.    allocate( n ) ;
  48.    cp[0] = '\0' ;
  49. } // charArray(n)
  50.  
  51. charArray::charArray( char *str )
  52. {
  53.    static char *mName = "charArray(str)" ;
  54.    if ( str == 0 )
  55.       matErrNumExit( mName, NULRF ) ;
  56.    INDEX n = strlen( str ) ;
  57.    allocate( n ) ;
  58.    strcpy( cp, str ) ;
  59. } // charArray(str)
  60.  
  61. charArray::charArray( const charArray& ca )
  62. {
  63.    static char *mName = "charArray(str)" ;
  64.    if ( ca.cp == 0 )
  65.       matErrNumExit( mName, NULRF ) ;
  66.    allocate( ca.length() ) ;
  67.    strcpy( cp, ca.cp ) ;
  68. } // charArray(str)
  69.  
  70. charArray& charArray::operator = ( const charArray& ca )
  71. {
  72.    static char *mName = "charArray(str)" ;
  73.    if ( ca.cp == 0 )
  74.       matErrNumExit( mName, NULRF ) ;
  75.    INDEX n = strlen( ca.cp ) ;
  76.    reallocate( n ) ;
  77.    strcpy( cp, ca.cp ) ;
  78.    return *this ;
  79. } // charArray =
  80.  
  81. void charArray::clear( void )
  82. {
  83.    cp[0] = '\0' ;
  84.    return ;
  85. } // charArray::clear
  86.  
  87. charArray::~charArray( void )
  88. {
  89.    delete cp ;
  90. } // ~charArray
  91.  
  92. charArray& charArray::operator=( char* str )
  93. {
  94.    static char* mName = "charArray=" ;
  95.    if ( str == 0 )
  96.       matErrNumExit( mName, NULRF ) ;
  97.    INDEX n = strlen( str ) ;
  98.    reallocate( n ) ;
  99.    strcpy( cp, str ) ;
  100.    return *this ;
  101. } // charArray = char*
  102.  
  103. INDEX charArray::length( void ) M_CONST
  104. {
  105.    return strlen( cp ) ;
  106. } // charArray size
  107.  
  108. #if 0
  109.  
  110. outFile& charArray::put( outFile& f ) M_CONST
  111. {
  112.    return f.put( cp ) ;
  113. } // charArray::put
  114.  
  115. inFile& charArray::get( inFile& f )
  116. {
  117.    return f.get( cp, cpSize ) ;
  118. } // charArray::get
  119.  
  120. #endif
  121.