yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
1#ifndef OUTPUT_STREAM_H 2#define OUTPUT_STREAM_H 3 4#include "../../core/slang-stream.h" 5#include "../../core/slang-string.h" 6 7namespace SlangRecord 8{ 9class OutputStream :public Slang ::RefObject 10{ 11public : 12virtual ~OutputStream () {} 13virtual void write (const void * data ,size_t len )= 0 ; 14virtual void flush () {} 15}; 16 17class FileOutputStream :public OutputStream 18{ 19public : 20FileOutputStream (const Slang ::String & fileName ,bool append = false); 21virtual ~FileOutputStream ()override ; 22virtual void write ( const void * data, size_t len) override; 23virtual void flush () override; 24 25private: 26Slang::FileStream m_fileStream; 27}; 28 29// The reason we inherit from OwnedMemoryStream instead of declaring it 30// as a member is because OwnedMemoryStream lacks some of the functionality 31// of operating on the underlying buffer directly. 32class MemoryStream : public OutputStream 33{ 34public : 35MemoryStream (); 36virtual ~ MemoryStream () {} 37virtual void write ( const void * data, size_t len) override; 38virtual void flush () override ; 39const void * getData () { return m_memoryStream. getContents (). getBuffer (); } 40size_t getSizeInBytes () { return m_memoryStream. getContents (). getCount (); } 41 42private : 43Slang :: OwnedMemoryStream m_memoryStream; 44}; 45} // namespace SlangRecord 46#endif // OUTPUT_STREAM_H