yum-mirror/slang

Making it easier to work with shaders

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

Ellie Hermaszewskaformatf65d756bf

master
1.3 KiB56 linesraw
1#include "output-stream.h"
2
3#include "../util/record-utility.h"
4
5namespace SlangRecord
6{
7FileOutputStream::FileOutputStream(const Slang::String& fileName, bool append)
8{
9    Slang::FileMode fileMode = append ? Slang::FileMode::Append : Slang::FileMode::Create;
10    Slang::FileAccess fileAccess = Slang::FileAccess::Write;
11    Slang::FileShare fileShare = Slang::FileShare::None;
12
13    SlangResult res = m_fileStream.init(fileName, fileMode, fileAccess, fileShare);
14
15    if (res != SLANG_OK)
16    {
17        SlangRecord::slangRecordLog(
18            SlangRecord::LogLevel::Error,
19            "Failed to open file %s\n",
20            fileName.getBuffer());
21        std::abort();
22    }
23}
24
25FileOutputStream::~FileOutputStream()
26{
27    m_fileStream.close();
28}
29
30void FileOutputStream::write(const void* data, size_t len)
31{
32    SLANG_RECORD_CHECK(m_fileStream.write(data, len));
33}
34
35MemoryStream::MemoryStream()
36    : m_memoryStream(Slang::FileAccess::Write)
37{
38}
39
40void FileOutputStream::flush()
41{
42    SLANG_RECORD_CHECK(m_fileStream.flush());
43}
44
45void MemoryStream::write(const void* data, size_t len)
46{
47    SLANG_RECORD_CHECK(m_memoryStream.write(data, len));
48}
49
50void MemoryStream::flush()
51{
52    // This call will reset the underlying buffer to size 0,
53    // and reset the write position to 0.
54    m_memoryStream.setContent(nullptr, 0);
55}
56} // namespace SlangRecord