home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / VSCPPv8.zip / VACPP / IBMCPP / samples / VISBUILD / RAPSHEET / CPPOV23 / IADDRREC.CPP < prev    next >
Text File  |  1995-05-15  |  5KB  |  153 lines

  1. //****************************************************************************
  2. // IAddressRecord Class - C++ Source File (iaddrrec.cpp)                     *
  3. //                                                                           *
  4. // COPYRIGHT: Copyright (C) International Business Machines Corp., 1994,1995 *
  5. //                                                                           *
  6. // DISCLAIMER OF WARRANTIES:                                                 *
  7. //   The following [enclosed] code is sample code created by IBM             *
  8. //   Corporation.  This sample code is not part of any standard IBM product  *
  9. //   and is provided to you solely for the purpose of assisting you in the   *
  10. //   development of your applications.  The code is provided "AS IS",        *
  11. //   without warranty of any kind.  IBM shall not be liable for any damages  *
  12. //   arising out of your use of the sample code, even if they have been      *
  13. //   advised of the possibility of such damages.                             *
  14. //****************************************************************************
  15. //NOTE: WE RECOMMEND USING A FIXED-SPACE FONT TO LOOK AT THE SOURCE.
  16. //
  17.  
  18. #include "iaddrrec.hpp"               //IAddressRecord header
  19.  
  20. /*******************************************************************
  21.  * Manager Member Functions 
  22.  *******************************************************************/
  23. IAddressRecord :: IAddressRecord() :
  24.                      IRecord(),
  25.                      dMySize(57L)
  26. {
  27.    dParentSize = size();
  28.    setSize( dParentSize + dMySize );  //pad with '\x00'
  29. }
  30.  
  31. IAddressRecord :: IAddressRecord ( const IString & stringData ) :
  32.                      IRecord(),
  33.                      dMySize(57L)
  34. {
  35.    dParentSize = size();
  36.    *this = stringData;
  37.    setSize( dParentSize + dMySize );  //truncate or pad as appropriate
  38. }
  39.  
  40. IAddressRecord :: IAddressRecord ( const IAddressRecord & aRecord ) :
  41.                      IRecord(),
  42.                      dMySize(57L)
  43. {
  44.    dParentSize = size();      
  45.    *this = aRecord;
  46.   /*------------------------------------------------------------------
  47.    * NOTE:  this record would have gotten set with the correct size
  48.    *        if had called the IRecord (aRecord) constructor, but
  49.    *        need to determine what dParentSize is (the assignment
  50.    *        operators need this info).
  51.    *-----------------------------------------------------------------*/
  52. }
  53.  
  54. IAddressRecord :: ~IAddressRecord()
  55. {
  56. }
  57.  
  58. /*******************************************************************
  59.  * Access Member Functions 
  60.  *******************************************************************/
  61. /*------------------------------------------------------------------
  62.  * street
  63.  *-----------------------------------------------------------------*/
  64. IString IAddressRecord :: street () const
  65. {
  66.    IString buffer;
  67.    return field(buffer, 1, 30);   //pad with NULLs
  68. }
  69.  
  70. IAddressRecord & IAddressRecord :: setStreet
  71.   (IString iStreet)
  72. {
  73.    setField(iStreet, 1, 30);      //pad with NULLs
  74.    return *this;
  75. }
  76.  
  77. /*------------------------------------------------------------------
  78.  * city
  79.  *-----------------------------------------------------------------*/
  80. IString IAddressRecord :: city () const
  81. {
  82.    IString buffer;
  83.    return field(buffer, 31, 20);  //pad with NULLs
  84. }
  85.  
  86. IAddressRecord & IAddressRecord :: setCity
  87.   (const IString & iCity)
  88. {
  89.    setField(iCity, 31, 20);       //pad with NULLs
  90.    return *this;
  91. }
  92.  
  93. /*------------------------------------------------------------------
  94.  * state
  95.  *-----------------------------------------------------------------*/
  96. IString IAddressRecord :: state () const
  97. {
  98.    IString buffer;
  99.    return field(buffer, 51, 2);   //pad with NULLs
  100. }
  101.  
  102. IAddressRecord & IAddressRecord :: setState
  103.   (const IString iState)
  104. {
  105.    setField(iState, 51, 2);       //pad with NULLs
  106.    return *this;
  107. }
  108.  
  109. /*------------------------------------------------------------------
  110.  * zip
  111.  *-----------------------------------------------------------------*/
  112. IString IAddressRecord :: zip () const
  113. {
  114.    IString buffer;
  115.    return field(buffer, 53, 5);   //pad with NULLs
  116. }
  117.  
  118. IAddressRecord & IAddressRecord :: setZip
  119.   (const IString & iZip)
  120. {
  121.    setField(iZip, 53, 5);         //pad with NULLs
  122.    return *this;
  123. }
  124.  
  125.  
  126. /*******************************************************************
  127.  * Implementor Member Functions 
  128.  *******************************************************************/
  129. /*------------------------------------------------------------------------------
  130. | Function Name: IAddressRecord :: operator =
  131. |
  132. | Implementation:
  133. |   Replace our data with the source IAddressRecord data.
  134. ------------------------------------------------------------------------------*/
  135. IAddressRecord & IAddressRecord :: operator = ( const IAddressRecord & aRecord )
  136. {
  137.   IRecord::operator=(aRecord);
  138.   return( *this );
  139. }
  140.  
  141. /*------------------------------------------------------------------------------
  142. | Function Name: IAddressRecord :: operator =
  143. |
  144. | Implementation:
  145. |   Replace our data with the source IString data.
  146. ------------------------------------------------------------------------------*/
  147. IAddressRecord & IAddressRecord :: operator = ( const IString & aString )
  148. {
  149.   IRecord::operator=(aString);
  150.   setSize (dParentSize + dMySize);
  151.   return( *this );
  152. }
  153.