From 496184b1bce90189c11e820ddf4e894c051ea66a Mon Sep 17 00:00:00 2001
From: Max Kellermann <max.kellermann@gmail.com>
Date: Thu, 5 Oct 2023 10:33:51 +0200
Subject: [PATCH] io/Reader: add method ReadT()

---
 src/io/Reader.hxx | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/io/Reader.hxx b/src/io/Reader.hxx
index 473d2ddf6..970706548 100644
--- a/src/io/Reader.hxx
+++ b/src/io/Reader.hxx
@@ -5,6 +5,7 @@
 #define READER_HXX
 
 #include <cstddef>
+#include <type_traits>
 
 /**
  * An interface that can read bytes from a stream until the stream
@@ -26,6 +27,13 @@ public:
 	 */
 	[[gnu::nonnull]]
 	virtual std::size_t Read(void *data, std::size_t size) = 0;
+
+	template<typename T>
+	requires std::is_standard_layout_v<T> && std::is_trivially_copyable_v<T>
+	void ReadT(T &dest) {
+		// TODO check return value
+		Read(&dest, sizeof(dest));
+	}
 };
 
 #endif