home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / Vcl / syscomp.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  2KB  |  68 lines

  1. // SYSCOMP.H: Pascal Comp type
  2. // Copyright (c) 1997, 1999 Borland International
  3.  
  4. #if !defined(SYSCOMP_H)        // comp type
  5. #define SYSCOMP_H
  6.  
  7. #if !defined(SystemHPP)
  8. #error Do not include this file directly.  Include 'system.hpp'.
  9. #endif
  10.  
  11. #if !defined(SYSMAC_H)
  12. #include <sysmac.h>
  13. #endif
  14.  
  15. #if !defined(SYSCURR_H)
  16. #include <syscurr.h>
  17. #endif
  18.  
  19. #pragma option push -w-inl -w-lvc
  20.  
  21. namespace System
  22. {
  23. // Comp
  24. // Range: -263+1 .. 263-1, Significant digits: 19-20, Size: 8
  25. // The Comp (computational) type holds only integral values within -263+1
  26. // to 263-1, which is approximately -9.2 * 1018 to 9.2 * 1018.
  27. //
  28. // When a Comp is returned from a Pascal function, it is returned as a
  29. // double (on the floating point stack).
  30. //
  31.  
  32.   typedef double CompReturn;
  33.  
  34.   struct PACKAGE CompBase
  35.   {
  36.   protected:
  37.     char __data[8];
  38.   };
  39.  
  40.   struct PACKAGE Comp : public CompBase
  41.   {
  42.     Comp();
  43.     Comp(double);
  44.     Comp(Currency);
  45.     Comp &operator =(double);
  46.     Comp &operator =(Currency);
  47.     operator double() const;
  48.     operator Currency() const;
  49.   };
  50.  
  51.   extern PACKAGE double   __cdecl CompToDouble(Comp acomp);
  52.   extern PACKAGE void     __cdecl DoubleToComp(double adouble, Comp &result);
  53.   extern PACKAGE Currency __cdecl CompToCurrency(Comp acomp);
  54.   extern PACKAGE void     __cdecl CurrencyToComp(Currency acurrency, Comp &result);
  55.  
  56.   inline Comp::Comp()                        { }
  57.   inline Comp::Comp(double d)                { DoubleToComp(d, *this); }
  58.   inline Comp::Comp(Currency d)              { CurrencyToComp(d, *this); }
  59.   inline Comp &Comp::operator = (double d)   { DoubleToComp(d, *this); return *this; }
  60.   inline Comp &Comp::operator = (Currency d) { CurrencyToComp(d, *this); return *this; }
  61.   inline Comp::operator double() const       { return CompToDouble(*this); }
  62.   inline Comp::operator Currency() const     { return CompToCurrency(*this); }
  63. }
  64.  
  65. #pragma option pop
  66.  
  67. #endif
  68.