00001 #ifndef STREAM_H 00002 #define STREAM_H 00003 00004 #include "NxStream.h" 00005 00006 class UserStream : public NxStream 00007 { 00008 public: 00009 UserStream(const char* filename, bool load); 00010 virtual ~UserStream(); 00011 00012 virtual NxU8 readByte() const; 00013 virtual NxU16 readWord() const; 00014 virtual NxU32 readDword() const; 00015 virtual float readFloat() const; 00016 virtual double readDouble() const; 00017 virtual void readBuffer(void* buffer, NxU32 size) const; 00018 00019 virtual NxStream& storeByte(NxU8 b); 00020 virtual NxStream& storeWord(NxU16 w); 00021 virtual NxStream& storeDword(NxU32 d); 00022 virtual NxStream& storeFloat(NxReal f); 00023 virtual NxStream& storeDouble(NxF64 f); 00024 virtual NxStream& storeBuffer(const void* buffer, NxU32 size); 00025 00026 FILE* fp; 00027 }; 00028 00029 class MemoryWriteBuffer : public NxStream 00030 { 00031 public: 00032 MemoryWriteBuffer(); 00033 virtual ~MemoryWriteBuffer(); 00034 void clear(); 00035 00036 virtual NxU8 readByte() const { NX_ASSERT(0); return 0; } 00037 virtual NxU16 readWord() const { NX_ASSERT(0); return 0; } 00038 virtual NxU32 readDword() const { NX_ASSERT(0); return 0; } 00039 virtual float readFloat() const { NX_ASSERT(0); return 0.0f;} 00040 virtual double readDouble() const { NX_ASSERT(0); return 0.0; } 00041 virtual void readBuffer(void* buffer, NxU32 size) const { NX_ASSERT(0); } 00042 00043 virtual NxStream& storeByte(NxU8 b); 00044 virtual NxStream& storeWord(NxU16 w); 00045 virtual NxStream& storeDword(NxU32 d); 00046 virtual NxStream& storeFloat(NxReal f); 00047 virtual NxStream& storeDouble(NxF64 f); 00048 virtual NxStream& storeBuffer(const void* buffer, NxU32 size); 00049 00050 NxU32 currentSize; 00051 NxU32 maxSize; 00052 NxU8* data; 00053 }; 00054 00055 class MemoryReadBuffer : public NxStream 00056 { 00057 public: 00058 MemoryReadBuffer(const NxU8* data); 00059 virtual ~MemoryReadBuffer(); 00060 00061 virtual NxU8 readByte() const; 00062 virtual NxU16 readWord() const; 00063 virtual NxU32 readDword() const; 00064 virtual float readFloat() const; 00065 virtual double readDouble() const; 00066 virtual void readBuffer(void* buffer, NxU32 size) const; 00067 00068 virtual NxStream& storeByte(NxU8 b) { NX_ASSERT(0); return *this; } 00069 virtual NxStream& storeWord(NxU16 w) { NX_ASSERT(0); return *this; } 00070 virtual NxStream& storeDword(NxU32 d) { NX_ASSERT(0); return *this; } 00071 virtual NxStream& storeFloat(NxReal f) { NX_ASSERT(0); return *this; } 00072 virtual NxStream& storeDouble(NxF64 f) { NX_ASSERT(0); return *this; } 00073 virtual NxStream& storeBuffer(const void* buffer, NxU32 size) { NX_ASSERT(0); return *this; } 00074 00075 mutable const NxU8* buffer; 00076 }; 00077 00078 #endif