diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2023-10-12 16:16:59 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2023-10-12 16:16:59 +0200 |
| commit | ab5c964f5dc75eeefefd4af423bf6952497da7a4 (patch) | |
| tree | c4b9e50a58ed36bbf7f898576fe5ada60b5e6d8b /source/include | |
| parent | 4e62a23e3d9d071e0ed7c7a75421c41314c3b90a (diff) | |
| download | teachos-ab5c964f5dc75eeefefd4af423bf6952497da7a4.tar.xz teachos-ab5c964f5dc75eeefefd4af423bf6952497da7a4.zip | |
docs: add basic documentation for asm_pointer
Diffstat (limited to 'source/include')
| -rw-r--r-- | source/include/memory/asm_pointer.hpp | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/source/include/memory/asm_pointer.hpp b/source/include/memory/asm_pointer.hpp index 2001561..9ec2218 100644 --- a/source/include/memory/asm_pointer.hpp +++ b/source/include/memory/asm_pointer.hpp @@ -4,36 +4,63 @@ namespace teachos::memory { + /** + * @brief A pointer that is defined in some assembly source file. + * + * @tparam Type The type of the pointer + * @since 0.0.1 + */ template<typename Type> struct asm_pointer { - using pointer = Type; + /** + * @brief The type of the underlying pointer. + */ + using pointer = Type *; - constexpr asm_pointer(Type & pointer) + /** + * @brief Construct a new asm_pointer for a given assembly-defined pointer. + * @param pointer A pointer defined in assembly. + */ + constexpr asm_pointer(Type *& pointer) : m_pointer{&pointer} { } - auto constexpr operator->() -> Type * { return m_pointer; } - auto constexpr operator->() const -> Type const * { return m_pointer; } - auto constexpr operator*() -> Type & { return *m_pointer; } - auto constexpr operator*() const -> Type const & { return *m_pointer; } + /** + * @brief Access the underlying pointer. + * @return The pointer wrapped by this asm_pointer. + */ + auto constexpr operator*() -> pointer & { return *m_pointer; } + + /** + * @brief Access the underlying pointer. + * @return The pointer wrapped by this asm_pointer. + */ + auto constexpr operator*() const -> pointer const & { return *m_pointer; } private: - Type * m_pointer; + pointer * m_pointer; }; + /** + * @copydoc asm_pointer + * + * @note This specialization allows the use of this type for pointers to constant data. + * @since 0.0.1 + */ template<typename Type> struct asm_pointer<Type const> { + /** @copydoc asm_pointer<Type>::asm_pointer */ constexpr asm_pointer(Type const & pointer) : m_pointer{&pointer} { } - auto constexpr operator->() -> Type const * { return m_pointer; } - auto constexpr operator->() const -> Type const * { return m_pointer; } + /** @copydoc asm_pointer<Type>::operator*() */ auto constexpr operator*() -> Type const & { return *m_pointer; } + /** @copydoc asm_pointer<Type>::operator*() const */ auto constexpr operator*() const -> Type const & { return *m_pointer; } private: |
