ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

_strstream.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 1999
00003  * Silicon Graphics Computer Systems, Inc.
00004  *
00005  * Copyright (c) 1999
00006  * Boris Fomitchev
00007  *
00008  * This material is provided "as is", with absolutely no warranty expressed
00009  * or implied. Any use is at your own risk.
00010  *
00011  * Permission to use or copy this software for any purpose is hereby granted
00012  * without fee, provided the above notices are retained on all copies.
00013  * Permission to modify the code and to distribute modified code is granted,
00014  * provided the above notices are retained, and a notice that the code was
00015  * modified is included with the above copyright notice.
00016  *
00017  */
00018 #ifndef _STLP_INTERNAL_STRSTREAM
00019 #define _STLP_INTERNAL_STRSTREAM
00020 
00021 #ifndef _STLP_INTERNAL_STREAMBUF
00022 #  include <stl/_streambuf.h>
00023 #endif
00024 
00025 #ifndef _STLP_INTERNAL_ISTREAM
00026 #  include <stl/_istream.h>              // Includes <ostream>, <ios>, <iosfwd>
00027 #endif
00028 
00029 #ifndef _STLP_INTERNAL_STRING_H
00030 #  include <stl/_string.h>
00031 #endif
00032 
00033 _STLP_BEGIN_NAMESPACE
00034 
00035 #ifndef _STLP_USE_NAMESPACES
00036 #  define strstream _STLP_strstream
00037 #  define ostrstream _STLP_ostrstream
00038 #  define istrstream _STLP_istrstream
00039 #  define strstreambuf _STLP_strstreambuf
00040 #endif
00041 
00042 //----------------------------------------------------------------------
00043 // Class strstreambuf, a streambuf class that manages an array of char.
00044 // Note that this class is not a template.
00045 
00046 class _STLP_CLASS_DECLSPEC strstreambuf : public basic_streambuf<char, char_traits<char> > {
00047 public:                         // Types.
00048   typedef char_traits<char>              _Traits;
00049   typedef basic_streambuf<char, char_traits<char> > _Base;
00050   typedef void* (*__alloc_fn)(size_t);
00051   typedef void (*__free_fn)(void*);
00052 public:                         // Constructor, destructor
00053 
00054   explicit strstreambuf(streamsize _Initial_capacity = 0);
00055 
00056   strstreambuf(__alloc_fn, __free_fn);
00057 
00058   strstreambuf(char* __get, streamsize __n, char* __put = 0);
00059   strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0);
00060   strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0);
00061 
00062   strstreambuf(const char* __get, streamsize __n);
00063   strstreambuf(const signed char* __get, streamsize __n);
00064   strstreambuf(const unsigned char* __get, streamsize __n);
00065 
00066   virtual ~strstreambuf();
00067 
00068 public:                         // strstreambuf operations.
00069   void freeze(bool = true);
00070   char* str();
00071   int pcount() const;
00072 
00073 protected:                      // Overridden virtual member functions.
00074   virtual int_type overflow(int_type __c  = _Traits::eof());
00075   virtual int_type pbackfail(int_type __c = _Traits::eof());
00076   virtual int_type underflow();
00077   virtual _Base* setbuf(char* __buf, streamsize __n);
00078   virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir,
00079                            ios_base::openmode __mode
00080                                       = ios_base::in | ios_base::out);
00081   virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode
00082                                       = ios_base::in | ios_base::out);
00083 
00084 private:                        // Helper functions.
00085   // Dynamic allocation, possibly using _M_alloc_fun and _M_free_fun.
00086   char* _M_alloc(size_t);
00087   void  _M_free(char*);
00088 
00089   // Helper function used in constructors.
00090   void _M_setup(char* __get, char* __put, streamsize __n);
00091 private:                        // Data members.
00092   __alloc_fn _M_alloc_fun;
00093   __free_fn  _M_free_fun;
00094   bool _M_dynamic  : 1;
00095   bool _M_frozen   : 1;
00096   bool _M_constant : 1;
00097 };
00098 
00099 //----------------------------------------------------------------------
00100 // Class istrstream, an istream that manages a strstreambuf.
00101 
00102 class _STLP_CLASS_DECLSPEC istrstream : public basic_istream<char, char_traits<char> > {
00103 public:
00104   explicit istrstream(char*);
00105   explicit istrstream(const char*);
00106   istrstream(char* , streamsize);
00107   istrstream(const char*, streamsize);
00108   virtual ~istrstream();
00109 
00110   strstreambuf* rdbuf() const;
00111   char* str();
00112 
00113 private:
00114   strstreambuf _M_buf;
00115 };
00116 
00117 //----------------------------------------------------------------------
00118 // Class ostrstream
00119 
00120 class _STLP_CLASS_DECLSPEC ostrstream : public basic_ostream<char, char_traits<char> >
00121 {
00122 public:
00123   ostrstream();
00124   ostrstream(char*, int, ios_base::openmode = ios_base::out);
00125   virtual ~ostrstream();
00126 
00127   strstreambuf* rdbuf() const;
00128   void freeze(bool = true);
00129   char* str();
00130   int pcount() const;
00131 
00132 private:
00133   strstreambuf _M_buf;
00134 };
00135 
00136 //----------------------------------------------------------------------
00137 // Class strstream
00138 
00139 class _STLP_CLASS_DECLSPEC strstream : public basic_iostream<char, char_traits<char> > {
00140 public:
00141   typedef char                        char_type;
00142   typedef char_traits<char>::int_type int_type;
00143   typedef char_traits<char>::pos_type pos_type;
00144   typedef char_traits<char>::off_type off_type;
00145 
00146   strstream();
00147   strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out);
00148   virtual ~strstream();
00149 
00150   strstreambuf* rdbuf() const;
00151   void freeze(bool = true);
00152   int pcount() const;
00153   char* str();
00154 
00155 private:
00156   strstreambuf _M_buf;
00157 
00158   //explicitely defined as private to avoid warnings:
00159   strstream(strstream const&);
00160   strstream& operator = (strstream const&);
00161 };
00162 
00163 _STLP_END_NAMESPACE
00164 
00165 #endif /* _STLP_INTERNAL_STRSTREAM */

Generated on Sun May 27 2012 04:29:38 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.