home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c021 / 7.img / INCLUDE.ZIP / STRSTREA.H < prev    next >
Encoding:
C/C++ Source or Header  |  1990-05-04  |  2.2 KB  |  94 lines

  1. /*    strstream.h -- class strstream declarations
  2.  
  3.     Copyright (c) 1990 by Borland International    
  4.     All rights reserved
  5. */
  6.  
  7. #ifndef __STRSTREAM_H
  8. #define __STRSTREAM_H
  9.  
  10. #include <iostream.h>
  11.  
  12. #if __STDC__
  13. #define _Cdecl
  14. #else
  15. #define _Cdecl    cdecl
  16. #endif
  17.  
  18. class strstreambuf : public streambuf {
  19. public:
  20.         _Cdecl strstreambuf();
  21.         _Cdecl strstreambuf(int n);
  22.         _Cdecl strstreambuf(void* (*a)(long), void (*f)(void*));
  23.         _Cdecl strstreambuf(  signed char* _s, int,   signed char* _strt=0);
  24.         _Cdecl strstreambuf(unsigned char* _s, int, unsigned char* _strt=0);
  25.         _Cdecl ~strstreambuf();
  26.  
  27.     void    _Cdecl freeze(int = 1);
  28.     char*    _Cdecl str();
  29. virtual int    _Cdecl doallocate();
  30. virtual int    _Cdecl overflow(int);
  31. virtual int    _Cdecl underflow();
  32. virtual streambuf* _Cdecl setbuf(char*, int);
  33. virtual streampos  _Cdecl seekoff(streamoff, seek_dir, int);
  34.  
  35. private:
  36.     void*    _Cdecl (*allocf)(long);
  37.     void    _Cdecl (*freef)(void*);
  38.     short    ssbflags;
  39.     enum    { dynamic = 1, frozen = 2, unlimited = 4 };
  40.     int    next_alloc;
  41.  
  42.     void    _Cdecl init(signed char*, int, signed char*);
  43. };
  44.  
  45.  
  46. class strstreambase : public virtual ios {
  47. public:
  48.     strstreambuf* _Cdecl rdbuf();
  49.  
  50. protected:
  51.         _Cdecl strstreambase(char*, int, char*);
  52.         _Cdecl strstreambase();
  53.         _Cdecl ~strstreambase();
  54. private:
  55.         strstreambuf buf;
  56. };
  57. inline strstreambuf* _Cdecl strstreambase::rdbuf() { return &this->buf; }
  58.  
  59.  
  60. class istrstream : public strstreambase, public istream {
  61. public:
  62.         _Cdecl istrstream(char*);
  63.         _Cdecl istrstream(char*, int);
  64.         _Cdecl ~istrstream();
  65. };
  66.  
  67.  
  68. class ostrstream : public strstreambase, public ostream {
  69. public:
  70.         _Cdecl ostrstream(char*, int, int = ios::out);
  71.         _Cdecl ostrstream();
  72.         _Cdecl ~ostrstream();
  73.  
  74.     char*    _Cdecl str();
  75.     int        _Cdecl pcount();
  76. };
  77. inline char* _Cdecl ostrstream::str() { return strstreambase::rdbuf()->str(); }
  78. inline int  _Cdecl ostrstream::pcount() {
  79.                     return strstreambase::rdbuf()->out_waiting();
  80.                     }
  81.  
  82.  
  83. class strstream : public strstreambase, public iostream {
  84. public:
  85.         _Cdecl strstream();
  86.         _Cdecl strstream(char*, int _sz, int _m);
  87.         _Cdecl ~strstream();
  88.  
  89.     char*    _Cdecl str();
  90. };
  91. inline char* _Cdecl strstream::str() { return strstreambase::rdbuf()->str(); }
  92.  
  93. #endif
  94.