00001 //*************************************************************************************** 00002 // 00003 // File supervisor: Crosswalk team 00004 // 00005 // Copyright 2008 Autodesk, Inc. All rights reserved. 00006 // Use of this software is subject to the terms of the Autodesk license agreement 00007 // provided at the time of installation or download, or which otherwise accompanies 00008 // this software in either electronic or hard copy form. 00009 // 00010 //*************************************************************************************** 00011 00012 #ifndef _CXSIFILTER_H_ 00013 #define _CXSIFILTER_H_ 00014 00015 #include <SIBCUtil.h> 00016 #include <SIBCString.h> 00017 00018 #define SI_MEMORY_FILE_NAME "3DMEMORYBUFFER" 00019 00021 00026 class CXSIFilter 00027 { 00028 public: 00029 00033 CXSIFilter(); 00037 virtual ~CXSIFilter(); 00038 00039 00045 void SetName ( const CSIBCString & in_szName ); 00046 00050 CSIBCString GetName () ; 00051 00055 void SetID ( const CSIBCString & in_szID ); 00059 CSIBCString& GetID () ; 00060 00064 virtual void SetHeader ( CSIBCString in_szHeader ); 00065 00069 CSIBCString GetHeader () ; 00074 virtual void WriteHeader(); 00075 00080 virtual int Open ( CSIBCString in_szFilename, _SI_FILE_MODE in_Mode ); 00083 virtual int Close (); 00084 00085 00091 virtual int Read ( SI_Char * out_pBuffer, SI_Long in_lSize ); 00097 virtual int Write( SI_Char * in_pBuffer, SI_Long in_lSize ); 00098 00102 virtual int Eof(); 00103 00107 virtual int Tell(); 00108 00112 void SetSubFilter ( CXSIFilter *in_pSub ) { m_pSubFilter = in_pSub;} ; 00116 CXSIFilter *GetSubFilter () { return m_pSubFilter ; }; 00117 00118 int FillBuffer ( CSIBCString in_szFilename ); 00119 protected: 00120 00121 _SI_FILE m_pStream; 00122 CSIBCString m_szHeader; 00123 CSIBCString m_szName; 00124 CSIBCString m_szID; 00125 CXSIFilter *m_pSubFilter; 00126 SI_Long m_FileSize; 00127 SI_Char *m_pBuffer; 00128 SI_Long m_lSubFilterPos; 00129 SI_Bool m_bEof; 00130 00131 }; 00132 00133 #endif