From 13bb78203cac7d3a582da55e004c84104ff214dd Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Thu, 21 Jan 2021 21:48:58 +0100 Subject: mmio: Add mmio_ptr template. --- mmio/mmio.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 mmio/mmio.h (limited to 'mmio/mmio.h') diff --git a/mmio/mmio.h b/mmio/mmio.h new file mode 100644 index 0000000..a756c8f --- /dev/null +++ b/mmio/mmio.h @@ -0,0 +1,29 @@ +#pragma once + +#include + +template +class mmio_ptr { + private: + const uintptr_t p; + + protected: + T* ptr() const { + return reinterpret_cast(p); + } + + public: + constexpr mmio_ptr(uintptr_t p) : p(p) {} + + T* operator->() const { + return ptr(); + } + + T& operator*() const { + return *ptr(); + } + + T& operator[](std::size_t idx) const { + return ptr()[idx]; + } +}; -- cgit v1.2.3