mirror of
https://github.com/RGBCube/serenity
synced 2025-06-13 12:02:08 +00:00
LibCore: Add CFileStreamReader, a simple streaming CFile reader.
This is extremely barebones right now, but can be used to easily read binary data from a CFile piece by piece.
This commit is contained in:
parent
be1025c03f
commit
a292d8cd5a
3 changed files with 41 additions and 0 deletions
31
Libraries/LibCore/CFileStreamReader.h
Normal file
31
Libraries/LibCore/CFileStreamReader.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/StdLibExtras.h>
|
||||
#include <LibCore/CFile.h>
|
||||
|
||||
class CFileStreamReader {
|
||||
public:
|
||||
CFileStreamReader(CFile& file)
|
||||
: m_file(file)
|
||||
{
|
||||
}
|
||||
|
||||
bool handle_read_failure()
|
||||
{
|
||||
return exchange(m_had_failure, false);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
CFileStreamReader& operator>>(T& value)
|
||||
{
|
||||
int nread = m_file.read((u8*)&value, sizeof(T));
|
||||
ASSERT(nread == sizeof(T));
|
||||
if (nread != sizeof(T))
|
||||
m_had_failure = true;
|
||||
return *this;
|
||||
}
|
||||
|
||||
private:
|
||||
CFile& m_file;
|
||||
bool m_had_failure { false };
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue