aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/raw_pdb/src/Foundation/PDB_ArrayView.h
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-04-23 18:16:57 +0200
committerStefan Boberg <[email protected]>2026-04-23 18:16:57 +0200
commit0232b991cd7d8e3a2114ea30e4591dd3e7b65c36 (patch)
tree94730e7594fd09ae1fa820391ce311f6daf13905 /thirdparty/raw_pdb/src/Foundation/PDB_ArrayView.h
parentFix forward declaration order for s_GotSigWinch and SigWinchHandler (diff)
parenttrace: declare Region event name fields as AnsiString (#1012) (diff)
downloadarchived-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.h68
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);
+ };
+}