diff options
| author | Stefan Boberg <[email protected]> | 2026-04-23 18:16:57 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2026-04-23 18:16:57 +0200 |
| commit | 0232b991cd7d8e3a2114ea30e4591dd3e7b65c36 (patch) | |
| tree | 94730e7594fd09ae1fa820391ce311f6daf13905 /thirdparty/raw_pdb/src/Foundation/PDB_ArrayView.h | |
| parent | Fix forward declaration order for s_GotSigWinch and SigWinchHandler (diff) | |
| parent | trace: declare Region event name fields as AnsiString (#1012) (diff) | |
| download | archived-zen-sb/zen-help.tar.xz archived-zen-sb/zen-help.zip | |
Merge branch 'main' into sb/zen-helpsb/zen-help
- Combine HelpCommand (this branch) with HistoryCommand (main) in zen CLI dispatcher
- Keep filter-aware TuiPickOne rewrite; adopt main's ASCII arrow glyphs in doc comment
Diffstat (limited to 'thirdparty/raw_pdb/src/Foundation/PDB_ArrayView.h')
| -rw-r--r-- | thirdparty/raw_pdb/src/Foundation/PDB_ArrayView.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/thirdparty/raw_pdb/src/Foundation/PDB_ArrayView.h b/thirdparty/raw_pdb/src/Foundation/PDB_ArrayView.h new file mode 100644 index 000000000..3c462ee80 --- /dev/null +++ b/thirdparty/raw_pdb/src/Foundation/PDB_ArrayView.h @@ -0,0 +1,68 @@ +// Copyright 2011-2022, Molecular Matters GmbH <[email protected]> +// See LICENSE.txt for licensing details (2-clause BSD License: https://opensource.org/licenses/BSD-2-Clause) + +#pragma once + +#include "PDB_Macros.h" +#include "PDB_Assert.h" + + +namespace PDB +{ + // A read-only view into arrays of any type and length. + template <typename T> + class PDB_NO_DISCARD ArrayView + { + public: + // Constructs an array view from a C array with explicit length. + inline constexpr explicit ArrayView(const T* const array, size_t length) PDB_NO_EXCEPT + : m_data(array) + , m_length(length) + { + } + + PDB_DEFAULT_COPY_CONSTRUCTOR(ArrayView); + PDB_DEFAULT_MOVE_CONSTRUCTOR(ArrayView); + + // Provides read-only access to the underlying array. + PDB_NO_DISCARD inline constexpr const T* Decay(void) const PDB_NO_EXCEPT + { + return m_data; + } + + // Returns the length of the view. + PDB_NO_DISCARD inline constexpr size_t GetLength(void) const PDB_NO_EXCEPT + { + return m_length; + } + + // Returns the i-th element. + PDB_NO_DISCARD inline const T& operator[](size_t i) const PDB_NO_EXCEPT + { + PDB_ASSERT(i < GetLength(), "Index %zu out of bounds [0, %zu).", i, GetLength()); + return m_data[i]; + } + + + // ------------------------------------------------------------------------------------------------ + // Range-based for-loop support + // ------------------------------------------------------------------------------------------------ + + PDB_NO_DISCARD inline const T* begin(void) const PDB_NO_EXCEPT + { + return m_data; + } + + PDB_NO_DISCARD inline const T* end(void) const PDB_NO_EXCEPT + { + return m_data + m_length; + } + + private: + const T* const m_data; + const size_t m_length; + + PDB_DISABLE_MOVE_ASSIGNMENT(ArrayView); + PDB_DISABLE_COPY_ASSIGNMENT(ArrayView); + }; +} |