"L. Spiro Engine"
|
00001 00018 #ifndef __LSSTD_EXTERNALBYTESTREAM_H__ 00019 #define __LSSTD_EXTERNALBYTESTREAM_H__ 00020 00021 #include "../LSSTDStandardLib.h" 00022 #include "LSSTDStream.h" 00023 00024 namespace lsstd { 00025 00034 class CExternalByteStream : public IStream { 00035 public : 00036 // == Various constructors. 00037 LSE_CALLCTOR CExternalByteStream(); 00038 LSE_CALLCTOR CExternalByteStream( LSUINT8 * _pui8Buffer, LSUINTPTR _uiptrLen ); 00039 LSE_CALLCTOR CExternalByteStream( const LSUINT8 * _pui8Buffer, LSUINTPTR _uiptrLen ); 00040 00041 00042 // == Functions. 00050 virtual LSUINT32 LSE_CALL ReadBytes( LSUINT8 * _pui8Buffer, LSUINT32 _ui32BytesToRead ) const; 00051 00057 virtual LSUINT64 LSE_CALL ReadUInt64() const; 00058 00064 virtual LSUINT32 LSE_CALL ReadUInt32() const; 00065 00071 virtual LSUINT16 LSE_CALL ReadUInt16() const; 00072 00078 virtual LSUINT8 LSE_CALL ReadUInt8() const; 00079 00085 virtual LSFLOAT LSE_CALL ReadFloat() const; 00086 00092 virtual LSDOUBLE LSE_CALL ReadDouble() const; 00093 00101 virtual LSUINT32 LSE_CALL WriteBytes( const LSUINT8 * _pui8Buffer, LSUINT32 _ui32BytesToWrite ); 00102 00108 virtual LSBOOL LSE_CALL WriteUInt64( const LSUINT64 &_ui64Value ); 00109 00115 virtual LSBOOL LSE_CALL WriteUInt32( LSUINT32 _ui32Value ); 00116 00122 virtual LSBOOL LSE_CALL WriteUInt16( LSUINT16 _ui16Value ); 00123 00129 virtual LSBOOL LSE_CALL WriteUInt8( LSUINT8 _ui8Value ); 00130 00136 virtual LSBOOL LSE_CALL WriteFloat( LSFLOAT _fValue ); 00137 00143 virtual LSBOOL LSE_CALL WriteDouble( const LSDOUBLE &_dValue ); 00144 00150 LSVOID LSE_CALL SetPos( LSUINTPTR _uiptrPos ) const; 00151 00158 LSUINTPTR LSE_CALL GetPos() const; 00159 00165 LSUINTPTR LSE_CALL Length() const; 00166 00172 const LSUINT8 * LSE_CALL GetBuffer() const; 00173 00174 00175 protected : 00176 // == Members. 00180 LSUINT8 * m_pui8Stream; 00181 00185 mutable LSUINTPTR m_uiptrCurPos; 00186 00190 LSUINTPTR m_uiptrLength; 00191 00195 LSBOOL m_bReadOnly; 00196 00197 }; 00198 00199 } // namespace lsstd 00200 00201 #endif // __LSSTD_EXTERNALBYTESTREAM_H__