Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

GStream.h

Go to the documentation of this file.
00001 
00008 #ifndef _GSTREAM_H_
00009 #define _GSTREAM_H_
00010 
00011 #include "GDom.h"
00012 
00022 class LgiClass GStream : public GDom
00023 {
00024 public:
00025     virtual ~GStream() {}
00026 
00029     virtual int Open
00030     (
00032         char *Str = 0,
00034         int Int = 0
00035     )
00036     {
00037         return 0;
00038     }
00039     
00041     virtual bool IsOpen()
00042     {
00043         return false;
00044     }
00045     
00048     virtual int Close()
00049     {
00050         return 0;
00051     }
00052 
00055     virtual int64 GetSize() { return -1; }
00056     
00059     virtual int64 SetSize(int64 Size) { return -1; }
00060 
00063     virtual int64 GetPos() { return -1; }
00064 
00067     virtual int64 SetPos(int64 Pos) { return -1; }
00068 
00071     virtual int Read(void *Buffer, int Size, int Flags = 0) { return 0; }
00072 
00075     virtual int Write(void *Buffer, int Size, int Flags = 0) { return 0; }
00076 
00080     virtual GStream *Clone() { return 0; }
00081 
00083     virtual int Print(char *Format, ...);
00084 };
00085 
00087 class LgiClass GStreamEnd
00088 {
00089 public:
00090     virtual ~GStreamEnd() {}
00091 
00093     virtual void Reset() {}
00094 
00100     virtual int IsEnd
00101     (
00103         void *Data,
00105         int Len
00106     ) = 0;
00107 };
00108 
00110 class LgiClass GLinePrefix : public GStreamEnd
00111 {
00112     bool Start;
00113     int Pos;
00114     char *At;
00115     char *Prefix;
00116     bool Eol;
00117 
00118 public:
00120     GLinePrefix
00121     (
00123         char *p,
00126         bool eol = true
00127     );
00128     
00129     ~GLinePrefix();
00130 
00131     void Reset();
00132     int IsEnd(void *s, int Len);
00133 };
00134 
00136 class LgiClass GEndOfLine : public GStreamEnd
00137 {
00138 public:
00139     int IsEnd(void *s, int Len);
00140 };
00141 
00143 class LgiClass GStreamer
00144 {
00145     int StartTime;
00146     int EndTime;
00147     int Total;
00148     int Size;
00149     char *Buf;
00150 
00151 public:
00153     GStreamer
00154     (
00155         // Buffer size in bytes, 4 KB by default
00156         int BufSize = 4 << 10
00157     );
00158     virtual ~GStreamer();
00159 
00160     // Properties
00161     int GetRate();
00162     int GetTotal();
00163     int GetElapsedTime();
00164 };
00165 
00167 class LgiClass GPullStreamer : public GStreamer
00168 {
00169 public:
00170     virtual int Pull(GStream *Source, GStreamEnd *End = 0) = 0;
00171 };
00172 
00174 class LgiClass GPushStreamer : public GStreamer
00175 {
00176 public:
00177     virtual int Push(GStream *Dest, GStreamEnd *End = 0) = 0;
00178 };
00179 
00181 class LgiClass GCopyStreamer
00182 {
00183 public:
00184     virtual int Copy(GStream *Source, GStream *Dest, GStreamEnd *End = 0);
00185 };
00186 
00188 class LgiClass GMemStream : public GStream
00189 {
00190     char *Mem;
00191     int64 Len, Pos;
00192 
00193 public:
00195     GMemStream();
00197     GMemStream
00198     (
00200         GStream *Src,
00202         int64 Start,
00204         int64 Len
00205     );
00207     GMemStream
00208     (
00210         void *Mem,
00212         int64 Len
00213     );
00214 
00215     ~GMemStream();
00216     bool IsOpen() { return Mem != 0; }
00217     int Close() { Pos = Len = 0; DeleteArray(Mem); return true; }
00218     int64 GetSize() { return Len; }
00219     int64 GetPos() { return Pos; }
00220     int64 SetPos(int64 p) { return Pos = p; }
00221 
00223     int Open(char *Str, int Int);
00225     int64 SetSize(int64 Size);
00226 
00227     bool IsOk();
00228     int Read(void *Buffer, int Size, int Flags = 0);
00229     int Write(void *Buffer, int Size, int Flags = 0);
00230     GStream *Clone();
00231 };
00232 
00233 #endif

Generated on Wed Oct 26 14:46:50 2005 for Lgi by  doxygen 1.4.1