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

mdatastream.h

Go to the documentation of this file.
00001 
00025 #ifndef __MAGIC_MDATASTREAM_H__
00026 #define __MAGIC_MDATASTREAM_H__
00027 
00028 #include "magic/mstream.h"
00029 
00030 BEGIN_NAMESPACE (MagiC);
00031 
00032 class DataStream;
00033 class DataIStream;
00034 class DataOStream;
00035 
00036 
00038 //           ___                    ----                                     //
00039 //           |  \   ___   |   ___  (      |       ___   ___                  //
00040 //           |   |  ___| -+-  ___|  ---  -+- |/\ /   )  ___| |/|/|           //
00041 //           |   | (   |  |  (   |     )  |  |   |---  (   | | | |           //
00042 //           |__/   \__|   \  \__| ___/    \ |    \__   \__| | | |           //
00044 
00046 class DataStream {
00047   public:
00048                         DataStream      () {}
00049     
00050   private:
00051 };
00052 
00053 
00054 
00056 //                                                                           //
00057 //        ___                    ___   ----                                  //
00058 //        |  \   ___   |   ___  |   | (      |       ___   ___               //
00059 //        |   |  ___| -+-  ___| |   |  ---  -+- |/\ /   )  ___| |/|/|        //
00060 //        |   | (   |  |  (   | |   |     )  |  |   |---  (   | | | |        //
00061 //        |__/   \__|   \  \__| `___´ ___/    \ |    \__   \__| | | |        //
00062 //                                                                           //
00064 
00065 class DataOStream : public OStream, public DataStream {
00066   public:
00067     
00068                         DataOStream     (FILE* strm=stdout);
00069                         DataOStream     (OStream& o);
00070     virtual             ~DataOStream    ();
00071 
00072 
00073     // Implementations
00074 
00075     DataOStream&        operator<<      (char i);
00076     DataOStream&        operator<<      (int i);
00077     DataOStream&        operator<<      (long i);
00078     DataOStream&        operator<<      (float i);
00079     DataOStream&        operator<<      (double i);
00080     DataOStream&        operator<<      (const char* str);
00081     DataOStream&        operator<<      (const String& str);
00082     uint                writeRawBytes   (const char* p, uint n);
00083 
00088     DataOStream&        name        (const char* nam) {mNextName = nam; return *this;}
00089 
00091     const String&       nextName    () const {return mNextName;}
00092     
00094     int             depth       () const {return mDepth;}
00095 
00096     const Array<String>&    getattribs  () const {return *mAttribs;}
00097 
00098   protected:
00099 
00100     DataOStream&        printName   ();
00101     void                printIndent ();
00102 
00103     void                printComma  ();
00104     
00105     friend DataOStream& operator<< (DataOStream& out, const Object& obj);
00106     friend DataOStream& operator>> (DataOStream& in, Object& obj);
00107     
00108     enum formattingFlags {
00109         FMT_RECORD          = 0x000002, 
00110         FMT_BINARY          = 0x000000, 
00111         FMT_TEXT            = 0x000010, 
00112         FMT_FORMATTED       = 0x000020, 
00113         FMT_VERINFO         = 0x000040, 
00114         FMT_ADDRESSES       = 0x000080, 
00115         FMT_OBJECTNAMES     = 0x000100, 
00116         FMT_CLASSNAMES      = 0x000200, 
00117     };
00118 
00119   protected:
00120     String          mNextName;  
00121     int             mDepth;     
00122     int             mPrevDepth; 
00123     Array<String>*  mAttribs;   
00124     int             mErrst;     
00126     int             open        (const char* filename, int flag);
00127 };
00128 
00129 // DataOStream& operator<< (DataOStream& dc, int i) {;}
00130 // Sokerointioperaatio name()-liitteen tekemiseksi luokan attribuutteihin
00131 // DataOStream& operator<< (DataOStream& out, const char* str);
00132 
00133 
00134 
00136 //                                                                           //
00137 //         ___                   ---  ----                                   //
00138 //         |  \   ___   |   ___   |  (      |       ___   ___                //
00139 //         |   |  ___| -+-  ___|  |   ---  -+- |/\ /   )  ___| |/|/|         //
00140 //         |   | (   |  |  (   |  |      )  |  |   |---  (   | | | |         //
00141 //         |__/   \__|   \  \__| _|_ ___/    \ |    \__   \__| | | |         //
00142 //                                                                           //
00144 
00146 class DataIStream : public IStream, public DataStream {
00147   public:
00148                             DataIStream     (IODevice& dev)         : IStream (dev) {;}
00149                             DataIStream     (IODevice* dev)         : IStream (dev) {;}
00150                             DataIStream     (const String& buffer)  : IStream (const_cast<String&> (buffer)) {;}
00151                             DataIStream     (FILE* strm = stdin)    : IStream (strm) {;}
00152                             DataIStream     (DataIStream& o)        : IStream (o) {;}
00153     virtual                 ~DataIStream    () {}
00154     
00155     virtual DataIStream&    operator>>		(char& i);
00156     virtual DataIStream&    operator>>		(int& i);
00157     virtual DataIStream&    operator>>		(long& i);
00158     virtual DataIStream&    operator>>		(float& i);
00159     virtual DataIStream&    operator>>		(double& i);
00160     virtual DataIStream&    operator>>		(String& s);
00161     virtual uint            readRawBytes    (char* p, uint n);
00162 };
00163 
00164 END_NAMESPACE;
00165 
00166 #endif
00167 

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