yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Ellie Hermaszewskaformatf65d756bf

master
1.3 KiB46 linesraw
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:
12    virtual ~OutputStream() {}
13    virtual void write(const void* data, size_t len) = 0;
14    virtual void flush() {}
15};
16
17class FileOutputStream : public OutputStream
18{
19public:
20    FileOutputStream(const Slang::String& fileName, bool append = false);
21    virtual ~FileOutputStream() override;
22    virtual void write(const void* data, size_t len) override;
23    virtual void flush() override;
24
25private:
26    Slang::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:
35    MemoryStream();
36    virtual ~MemoryStream() {}
37    virtual void write(const void* data, size_t len) override;
38    virtual void flush() override;
39    const void* getData() { return m_memoryStream.getContents().getBuffer(); }
40    size_t getSizeInBytes() { return m_memoryStream.getContents().getCount(); }
41
42private:
43    Slang::OwnedMemoryStream m_memoryStream;
44};
45} // namespace SlangRecord
46#endif // OUTPUT_STREAM_H