Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

mtextstream.h

Go to the documentation of this file.
00001 
00025 #ifndef __MAGIC_MTEXTSTREAM_H__
00026 #define __MAGIC_MTEXTSTREAM_H__
00027 
00028 #include "magic/mstream.h"
00029 
00030 BEGIN_NAMESPACE (MagiC);
00031 
00032 class TextStream;
00033 class TextIStream;
00034 class TextOStream;
00035 
00037 //            -----                ----                                      //
00038 //              |    ___       |  (      |       ___   ___                   //
00039 //              |   /   ) \ / -+-  ---  -+- |/\ /   )  ___| |/|/|            //
00040 //              |   |---   X   |      )  |  |   |---  (   | | | |            //
00041 //              |    \__  / \   \ ___/    \ |    \__   \__| | | |            //
00043 
00045 class TextStream {
00046   public:
00047                         TextStream      ()              {mFieldWidth=0; mFillChar=' '; mPrecision=6; mBase=10;}
00048     virtual             ~TextStream     ()              {}
00049     
00050     inline int          width           () const        {return mFieldWidth;}
00051     inline int          width           (int w)         {int oldw=mFieldWidth; mFieldWidth=w; return oldw;}
00052     inline int          fill            () const        {return mFillChar;}
00053     inline int          fill            (int f)         {int oldf=mFillChar; mFillChar=f; return oldf;}
00054     inline int          precision       () const        {return mPrecision;}
00055     inline int          precision       (int f)         {int oldf=mPrecision; mPrecision=f; return oldf;}
00056     inline int          base            () const        {return mBase;}
00057     inline int          base            (int b)         {int oldf=mBase; mBase=b; return oldf;}
00058     void                copy            (const TextStream& other);
00059 
00060     enum formattingFlags {
00061         skipws      =   0x00000001,         
00062         left        =   0x00000002,         
00063         right       =   0x00000004,         
00064         internal    =   0x00000008,         
00065         showbase    =   0x00000010,         
00066         uppercase   =   0x00000020,         
00067         showpos     =   0x00000040,         
00068         scientific  =   0x00000080,         
00069         fixed       =   0x00000100,         
00070     };
00071     
00072   private:
00073     int                 mFieldWidth;    
00074     char                mFillChar;      
00075     int                 mPrecision;     
00076     int                 mBase;          
00077 };
00078 
00079 
00080 
00082 //         -----                ___   ----                                   //
00083 //           |    ___       |  |   | (      |       ___   ___                //
00084 //           |   /   ) \ / -+- |   |  ---  -+- |/\ /   )  ___| |/|/|         //
00085 //           |   |---   X   |  |   |     )  |  |   |---  (   | | | |         //
00086 //           |    \__  / \   \ `___´ ___/    \ |    \__   \__| | | |         //
00088 
00091 class TextOStream : public OStream, public TextStream {
00092   public:
00093                             TextOStream     (IODevice& dev) : OStream (dev) {;}
00094                             TextOStream     (IODevice* dev) : OStream (dev) {;}
00095                             TextOStream     (String& buffer, int mode = IO_Writable);
00096                             TextOStream     (FILE* strm = stdout);
00097                             TextOStream     (TextOStream& o);
00098 
00099     void                    operator=       (const TextOStream& other) {copy (other);}
00100     void                    copy            (const TextOStream& other);
00101     
00102     
00103     // Virtual methods
00104     
00105     virtual TextOStream&    printf          (const char* format, ...);
00106     virtual TextOStream&    operator<<		(const char* str);
00107     virtual TextOStream&    operator<<		(const String& str);
00108     virtual TextOStream&    operator<<		(const char);
00109     virtual TextOStream&    operator<<		(const int);
00110     virtual TextOStream&    operator<<		(const long);
00111     virtual TextOStream&    operator<<		(const float);
00112     virtual TextOStream&    operator<<		(const double);
00113     virtual uint            writeRawBytes   (const char* p, uint n);
00114 };
00115 
00116 // Standard output and atandard error output
00117 extern TextOStream sout;
00118 extern TextOStream serr;
00119 
00121 //                                                                           //
00122 //          -----               ---  ----                                    //
00123 //            |    ___       |   |  (      |       ___   ___                 //
00124 //            |   /   ) \ / -+-  |   ---  -+- |/\ /   )  ___| |/|/|          //
00125 //            |   |---   X   |   |      )  |  |   |---  (   | | | |          //
00126 //            |    \__  / \   \ _|_ ___/    \ |    \__   \__| | | |          //
00127 //                                                                           //
00129 
00131 class TextIStream : public IStream, public TextStream {
00132   public:
00133                             TextIStream     (IODevice& dev)         : IStream (dev) {;}
00134                             TextIStream     (IODevice* dev)         : IStream (dev) {if (!dev->isOpen()) dev->open(IO_Readable);}
00135                             TextIStream     (const String& buffer)  : IStream (const_cast<String&> (buffer)) {;}
00136                             TextIStream     (FILE* strm = stdin)    : IStream (strm) {;}
00137                             TextIStream     (TextIStream& o)        : IStream (o) {;}
00138                             ~TextIStream    () {}
00139     
00140     virtual TextIStream&    operator>>		(char& ch);
00141     virtual TextIStream&    operator>>		(int& value);
00142     virtual TextIStream&    operator>>		(long& value);
00143     virtual TextIStream&    operator>>		(float& value);
00144     virtual TextIStream&    operator>>		(double& value);
00145     virtual TextIStream&    operator>>		(String& buffer);
00146     virtual uint            readRawBytes    (char* data, uint maxlen);
00147 
00148     int                     readAll         (String& textbuf);
00149     int                     readLine        (String& linebuf);
00150     void                    skipWhiteSpace  ();
00151 
00152     TextIStream&            read            (char* p, int n);
00153 };
00154 
00155 extern TextIStream stin;
00156 
00157 END_NAMESPACE;
00158 
00159 #endif
00160 

Generated on Thu Feb 10 20:06:42 2005 for LibMagiC by doxygen1.2.18