00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _CXSIFILTER_H_ 00015 #define _CXSIFILTER_H_ 00016 00017 #include <SIBCUtil.h> 00018 #include <SIBCString.h> 00019 00020 #define SI_MEMORY_FILE_NAME "3DMEMORYBUFFER" 00021 00028 class CXSIFilter 00029 { 00030 public: 00031 00034 CXSIFilter(); 00037 virtual ~CXSIFilter(); 00038 00039 00045 void SetName ( const CSIBCString & in_szName ); 00046 00050 CSIBCString GetName () ; 00051 00057 void SetID ( const CSIBCString & in_szID ); 00061 CSIBCString& GetID () ; 00062 00066 virtual void SetHeader ( CSIBCString in_szHeader ); 00067 00071 CSIBCString GetHeader () ; 00075 virtual void WriteHeader(); 00076 00081 virtual int Open ( CSIBCString in_szFilename, _SI_FILE_MODE in_Mode ); 00084 virtual int Close (); 00085 00086 00092 virtual int Read ( SI_Char * out_pBuffer, SI_Long in_lSize ); 00098 virtual int Write( SI_Char * in_pBuffer, SI_Long in_lSize ); 00099 00104 virtual int Eof(); 00105 00109 virtual int Tell(); 00110 00114 void SetSubFilter ( CXSIFilter *in_pSub ) { m_pSubFilter = in_pSub;} ; 00118 CXSIFilter *GetSubFilter () { return m_pSubFilter ; }; 00119 00120 int FillBuffer ( CSIBCString in_szFilename ); 00121 protected: 00122 00123 _SI_FILE m_pStream; 00124 CSIBCString m_szHeader; 00125 CSIBCString m_szName; 00126 CSIBCString m_szID; 00127 CXSIFilter *m_pSubFilter; 00128 SI_Long m_FileSize; 00129 SI_Char *m_pBuffer; 00130 SI_Long m_lSubFilterPos; 00131 SI_Bool m_bEof; 00132 00133 }; 00134 00135 #endif