CFileStreamReader.h 595 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include <AK/StdLibExtras.h>
  3. #include <LibCore/CFile.h>
  4. class CFileStreamReader {
  5. public:
  6. CFileStreamReader(CFile& file)
  7. : m_file(file)
  8. {
  9. }
  10. bool handle_read_failure()
  11. {
  12. return exchange(m_had_failure, false);
  13. }
  14. template<typename T>
  15. CFileStreamReader& operator>>(T& value)
  16. {
  17. int nread = m_file.read((u8*)&value, sizeof(T));
  18. ASSERT(nread == sizeof(T));
  19. if (nread != sizeof(T))
  20. m_had_failure = true;
  21. return *this;
  22. }
  23. private:
  24. CFile& m_file;
  25. bool m_had_failure { false };
  26. };