home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / IOMANIP.H < prev    next >
C/C++ Source or Header  |  1997-02-28  |  5KB  |  162 lines

  1. /*  iomanip.h -- streams I/O manipulator declarations
  2.  
  3. */
  4.  
  5. /*
  6.  *      C/C++ Run Time Library - Version 8.0
  7.  *
  8.  *      Copyright (c) 1990, 1997 by Borland International
  9.  *      All Rights Reserved.
  10.  *
  11.  */
  12. /* $Revision:   8.2  $ */
  13.  
  14. #ifndef __cplusplus
  15. #error Must use C++ for the io stream manipulators.
  16. #endif
  17.  
  18. #ifndef __IOMANIP_H
  19. #define __IOMANIP_H
  20.  
  21. #if !defined(___DEFS_H)
  22. #include <_defs.h>
  23. #endif
  24.  
  25. #if !defined(__IOSTREAM_H)
  26. #include <iostream.h>
  27. #endif
  28.  
  29.  
  30. #if !defined(RC_INVOKED)
  31.  
  32. #if defined(__BCOPT__)
  33. #if !defined(_RTL_ALLOW_po) && !defined(__FLAT__)
  34. #pragma option -po-     // disable Object data calling convention
  35. #endif
  36. #endif
  37.  
  38. #pragma option -Vo-
  39.  
  40. #if defined(__STDC__)
  41. #pragma warn -nak
  42. #endif
  43.  
  44. #endif  /* !RC_INVOKED */
  45.  
  46.  
  47. template<class _typ> class _EXPCLASS smanip {
  48.         ios _FAR & (_RTLENTRY *_fn)(ios _FAR &, _typ);
  49.         _typ _ag;
  50. public:
  51.         _RTLENTRY smanip(ios _FAR & (_RTLENTRY *_f)(ios _FAR &, _typ), _typ _a) :
  52.                 _fn(_f), _ag(_a) { }
  53.         friend istream _FAR & _RTLENTRY operator>>(istream _FAR & _s, const smanip<_typ> _FAR & _f) {
  54.                         (*_f._fn)(_s, _f._ag); return _s; }
  55.         friend ostream _FAR & _RTLENTRY operator<<(ostream _FAR & _s, const smanip<_typ> _FAR & _f) {
  56.                         (*_f._fn)(_s, _f._ag); return _s; }
  57.         };
  58.  
  59. template<class _typ> class _EXPCLASS sapp {
  60.         ios _FAR & (_RTLENTRY *_fn)(ios _FAR &, _typ);
  61. public:
  62.         sapp(ios _FAR & (_RTLENTRY *_f)(ios _FAR &, _typ)) : _fn(_f) { }
  63.         smanip<_typ> _RTLENTRY operator()(_typ _z)
  64.                 { return smanip<_typ>(_fn, _z); }
  65.         };
  66.  
  67. template<class _typ> class _EXPCLASS imanip {
  68.         istream _FAR & (_RTLENTRY *_fn)(istream _FAR &, _typ);
  69.         _typ _ag;
  70. public:
  71.         _RTLENTRY imanip(istream _FAR & (_RTLENTRY *_f)(istream _FAR &, _typ), _typ _z ) :
  72.                 _fn(_f), _ag(_z) { }
  73.         friend istream _FAR & _RTLENTRY operator>>(istream _FAR & _s, const imanip<_typ> _FAR & _f) {
  74.                 return(*_f._fn)(_s, _f._ag); }
  75.         };
  76.  
  77. template<class _typ> class _EXPCLASS iapply {
  78.         istream _FAR & (_RTLENTRY *_fn)(istream _FAR &, _typ);
  79. public:
  80.         _RTLENTRY iapply(istream _FAR & (_RTLENTRY *_f)(istream _FAR &, _typ)) :
  81.                 _fn(_f) { }
  82.         imanip<_typ> _RTLENTRY operator()(_typ _z) {
  83.                 return IMANIP(_typ)(_fn, _z); }
  84.         };
  85.  
  86. template<class _typ> class _EXPCLASS omanip {
  87.         ostream _FAR & (_RTLENTRY *_fn)(ostream _FAR &, _typ);
  88.         _typ _ag;
  89. public:
  90.         _RTLENTRY omanip(ostream _FAR & (_RTLENTRY *_f)(ostream _FAR &, _typ), _typ _z ) :
  91.                 _fn(_f), _ag(_z) { }
  92.         friend ostream _FAR & _RTLENTRY operator<<(ostream _FAR & _s, const omanip<_typ> _FAR & _f) {
  93.                 return(*_f._fn)(_s, _f._ag); }
  94.         };
  95.  
  96. template<class _typ> class _EXPCLASS oapp {
  97.         ostream _FAR & (_RTLENTRY *_fn)(ostream _FAR &, _typ);
  98. public:
  99.         _RTLENTRY oapp(ostream _FAR & (_RTLENTRY *_f)(ostream _FAR &, _typ)) :
  100.                 _fn(_f) { }
  101.         omanip<_typ> _RTLENTRY operator()(_typ _z) {
  102.                 return omanip<_typ>(_fn, _z); }
  103.         };
  104.  
  105. template<class _typ> class _EXPCLASS iomanip {
  106.         iostream _FAR & (_RTLENTRY *_fn)(iostream _FAR &, _typ);
  107.         _typ _ag;
  108. public:
  109.         _RTLENTRY iomanip(iostream _FAR & (_RTLENTRY *_f)(iostream _FAR &, _typ), _typ _z ) :
  110.                 _fn(_f), _ag(_z) { }
  111.         friend istream _FAR & _RTLENTRY operator>>(iostream _FAR & _s, const iomanip<_typ> _FAR & _f) {
  112.                 return(*_f._fn)(_s, _f._ag); }
  113.         friend ostream _FAR & _RTLENTRY operator<<(iostream _FAR & _s, const iomanip<_typ> _FAR & _f) {
  114.                 return(*_f._fn)(_s, _f._ag); }
  115.         };
  116.  
  117. template<class _typ> class _EXPCLASS ioapp {
  118.         iostream _FAR & (_RTLENTRY *_fn)(iostream _FAR &, _typ);
  119. public:
  120.         _RTLENTRY ioapp(iostream _FAR & (_RTLENTRY *_f)(iostream _FAR &, _typ)) : _fn(_f) { }
  121.         iomanip<_typ> _RTLENTRY operator()(_typ _z) {
  122.                 return iomanip<_typ>(_fn, _z); }
  123.         };
  124.  
  125. // set the conversion base to 0, 8, 10, or 16
  126. smanip<int>     _RTLENTRY _EXPFUNC setbase(int _b);
  127.  
  128. // clear the flags bitvector according to the bits set in b
  129. smanip<long>    _RTLENTRY _EXPFUNC resetiosflags(long _b);
  130.  
  131. // set the flags bitvector according to the bits set in b
  132. smanip<long>    _RTLENTRY _EXPFUNC setiosflags(long _b);
  133.  
  134. // set fill character for padding a field
  135. smanip<int>     _RTLENTRY _EXPFUNC setfill(int _f);
  136.  
  137. // set the floating-point precision to n digits
  138. smanip<int>     _RTLENTRY _EXPFUNC setprecision(int _n);
  139.  
  140. // set the field width to n
  141. smanip<int>     _RTLENTRY _EXPFUNC setw(int _n);
  142.  
  143.  
  144. #if !defined(RC_INVOKED)
  145.  
  146. #if defined(__STDC__)
  147. #pragma warn .nak
  148. #endif
  149.  
  150. #pragma option -Vo.
  151.  
  152. #if defined(__BCOPT__)
  153. #if !defined(_RTL_ALLOW_po) && !defined(__FLAT__)
  154. #pragma option -po.     // restore Object data calling convention
  155. #endif
  156. #endif
  157.  
  158. #endif  /* !RC_INVOKED */
  159.  
  160.  
  161. #endif  /* __IOMANIP_H */
  162.