Fusion360-Addons/usr/Include/Core/Common/Stream.h
2021-10-31 19:39:29 +01:00

79 lines
2.6 KiB
C++

#ifndef STREAM_H
#define STREAM_H
#include "NxStream.h"
class UserStream : public NxStream
{
public:
UserStream(const char* filename, bool load);
virtual ~UserStream();
virtual NxU8 readByte() const;
virtual NxU16 readWord() const;
virtual NxU32 readDword() const;
virtual float readFloat() const;
virtual double readDouble() const;
virtual void readBuffer(void* buffer, NxU32 size) const;
virtual NxStream& storeByte(NxU8 b);
virtual NxStream& storeWord(NxU16 w);
virtual NxStream& storeDword(NxU32 d);
virtual NxStream& storeFloat(NxReal f);
virtual NxStream& storeDouble(NxF64 f);
virtual NxStream& storeBuffer(const void* buffer, NxU32 size);
FILE* fp;
};
class MemoryWriteBuffer : public NxStream
{
public:
MemoryWriteBuffer();
virtual ~MemoryWriteBuffer();
void clear();
virtual NxU8 readByte() const { NX_ASSERT(0); return 0; }
virtual NxU16 readWord() const { NX_ASSERT(0); return 0; }
virtual NxU32 readDword() const { NX_ASSERT(0); return 0; }
virtual float readFloat() const { NX_ASSERT(0); return 0.0f;}
virtual double readDouble() const { NX_ASSERT(0); return 0.0; }
virtual void readBuffer(void* buffer, NxU32 size) const { NX_ASSERT(0); }
virtual NxStream& storeByte(NxU8 b);
virtual NxStream& storeWord(NxU16 w);
virtual NxStream& storeDword(NxU32 d);
virtual NxStream& storeFloat(NxReal f);
virtual NxStream& storeDouble(NxF64 f);
virtual NxStream& storeBuffer(const void* buffer, NxU32 size);
NxU32 currentSize;
NxU32 maxSize;
NxU8* data;
};
class MemoryReadBuffer : public NxStream
{
public:
MemoryReadBuffer(const NxU8* data);
virtual ~MemoryReadBuffer();
virtual NxU8 readByte() const;
virtual NxU16 readWord() const;
virtual NxU32 readDword() const;
virtual float readFloat() const;
virtual double readDouble() const;
virtual void readBuffer(void* buffer, NxU32 size) const;
virtual NxStream& storeByte(NxU8 b) { NX_ASSERT(0); return *this; }
virtual NxStream& storeWord(NxU16 w) { NX_ASSERT(0); return *this; }
virtual NxStream& storeDword(NxU32 d) { NX_ASSERT(0); return *this; }
virtual NxStream& storeFloat(NxReal f) { NX_ASSERT(0); return *this; }
virtual NxStream& storeDouble(NxF64 f) { NX_ASSERT(0); return *this; }
virtual NxStream& storeBuffer(const void* buffer, NxU32 size) { NX_ASSERT(0); return *this; }
mutable const NxU8* buffer;
};
#endif