home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vgserv45.zip / BASE / HPTWGS2 / include / fcwqlong.h < prev    next >
C/C++ Source or Header  |  2001-03-21  |  4KB  |  133 lines

  1. /*****************************************************************************/
  2. /*                                                                           */
  3. /*                           OCO SOURCE MATERIALS                            */
  4. /*                             IBM CONFIDENTIAL                              */
  5. /*                                    OR                                     */
  6. /*                        IBM CONFIDENTIAL RESTRICTED                        */
  7. /*            WHEN COMBINED WITH THE AGGREGATED OCO SOURCE MODULES           */
  8. /*                           FOR THIS PROGRAM PRODUCT                        */
  9. /*                                                                           */
  10. /*      VisualAge Generator Server for OS/2, AIX, HP-UX, and Windows NT      */
  11. /*                          Version 3.0  5697-C28                            */
  12. /*                    (C) COPYRIGHT IBM CORP. 1994,1997                      */
  13. /*                                                                           */
  14. /*****************************************************************************/
  15. #ifndef FCWQLONG_H
  16. #define FCWQLONG_H
  17.  
  18. #include <iostream.h>
  19. #include <memory.h>
  20.  
  21. /*-------------------------------------------------------------------------*/
  22. /* 8-byte integer value                                                    */
  23. /*-------------------------------------------------------------------------*/
  24. class dbllong
  25. {
  26. public:
  27.  
  28.   dbllong( const int = 0 );
  29.   dbllong( const int[] );
  30.   dbllong( const dbllong & );
  31.   virtual ~dbllong();
  32.  
  33.   dbllong & operator = ( const dbllong & );
  34.   dbllong & operator = ( const int );
  35.  
  36.   int getData( const int ) const;
  37.  
  38. private:
  39.  
  40.   int _data[2];
  41.   void* pData;
  42. };
  43.  
  44. /*-------------------------------------------------------------------------*/
  45. /* 16-byte integer value                                                   */
  46. /*-------------------------------------------------------------------------*/
  47. class quadlong
  48. {
  49. public:
  50.  
  51.   quadlong();
  52.   quadlong( const int );
  53.   quadlong( const int,
  54.             const int );
  55.   quadlong( const char* );
  56.   quadlong( const FCWString & );
  57.   quadlong( const char*,
  58.             const int );
  59.   quadlong( const dbllong & );
  60.   quadlong( const long );
  61.   quadlong( const quadlong & );
  62.   virtual ~quadlong();
  63.  
  64.   int asInt() const;
  65.   long asLong() const;
  66.   short asShort() const;
  67.   dbllong asDbllong() const;
  68.  
  69.   FCWString asString() const;
  70.  
  71.   int isZero() const;
  72.   int isNegative() const;
  73.   int isPositive() const;
  74.   int isShortValueOverFlow() const;
  75.   int isLongValueOverFlow() const;
  76.   int isDblLongValueOverFlow() const;
  77.   int checkMax() const;
  78.  
  79.   quadlong & operator = ( const quadlong & );
  80.   quadlong & operator = ( const int );
  81.   quadlong & operator = ( const dbllong & );
  82.  
  83.   const quadlong & operator + () const;
  84.   quadlong operator - () const;
  85.  
  86.   quadlong & operator += ( const quadlong & );
  87.   quadlong & operator -= ( const quadlong & );
  88.   quadlong & operator *= ( const quadlong & );
  89.   quadlong & operator /= ( const quadlong & );
  90.   quadlong & operator %= ( const quadlong & );
  91.  
  92.   quadlong operator + ( const quadlong & ) const;
  93.   quadlong operator - ( const quadlong & ) const;
  94.   quadlong operator * ( const quadlong & ) const;
  95.   quadlong operator / ( const quadlong & ) const;
  96.   quadlong operator % ( const quadlong & ) const;
  97.  
  98.   int operator == ( const quadlong & ) const;
  99.   int operator != ( const quadlong & ) const;
  100.   int operator < ( const quadlong & ) const;
  101.   int operator <= ( const quadlong & ) const;
  102.   int operator > ( const quadlong & ) const;
  103.   int operator >= ( const quadlong & ) const;
  104.  
  105.   quadlong & negate();
  106.   quadlong & mul10();
  107.   quadlong & absolute();
  108.  
  109.   quadlong divide( const quadlong & );
  110.  
  111.   char lastDigit();
  112.  
  113.   friend ostream & operator << ( ostream &,
  114.                                  const quadlong & );
  115.   static void initConstants();
  116.  
  117. private:
  118.  
  119.   int   _data[4];
  120.   void* pData;
  121.  
  122.   void divide (quadlong, quadlong&, quadlong&) const;
  123.   void shiftLeft ();
  124.   void shiftRight ();
  125. };
  126.  
  127. extern quadlong quadlong_0;
  128. extern quadlong quadlong_10;
  129. extern quadlong adj_tbl[];
  130.  
  131.  
  132. #endif
  133.