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

CSource.h

Go to the documentation of this file.
00001 #ifndef __CSOURCE_H
00002 #define __CSOURCE_H
00003 
00004 class CInfo
00005 {
00006  public:
00007   virtual unsigned long size() = 0;
00008 };
00009 
00010 class CSource : public CInfo
00011 {
00012  public:
00013   virtual int get() = 0;
00014 };
00015 
00016 class CSink : public CInfo
00017 {
00018  public:
00019   virtual void put(unsigned char c) = 0;
00020 };
00021 
00022 class CMemSource : public CSource
00023 {
00024   unsigned long m_total_size;
00025   unsigned long m_current;
00026   unsigned char* m_buffer;
00027  public:
00028   CMemSource(unsigned char* _buffer, unsigned long _size)
00029     :
00030     m_total_size(_size),
00031     m_current(0),
00032     m_buffer(_buffer)
00033     {}
00034   unsigned long size() { return m_current; }
00035   int get()
00036     {
00037       return ((m_current < m_total_size) ? m_buffer[m_current++] : -1);
00038     }
00039 };
00040 
00041 class CMemSink : public CSink
00042 {
00043   unsigned long m_total_size;
00044   unsigned long m_current;
00045   unsigned char* m_buffer;
00046  public:
00047   CMemSink(unsigned char* _buffer, unsigned long _size)
00048     :
00049     m_total_size(_size),
00050     m_current(0),
00051     m_buffer(_buffer)
00052     {}
00053   unsigned long size() { return m_current; }
00054   void put(unsigned char c)
00055     {
00056       if (m_current < m_total_size)
00057         {
00058           m_buffer[m_current++] = c;
00059         } 
00060     }
00061 };
00062 #endif

Generated on Sat Nov 5 16:16:54 2005 for OPIE by  doxygen 1.4.2