SpECTRE Documentation Coverage Report
Current view: top level - PythonBindings - BoundChecks.hpp Hit Total Coverage
Commit: 8a30970c95b504394e26ac2f71f8d3dacf8a8e8f Lines: 2 3 66.7 %
Date: 2024-04-19 21:29:46
Legend: Lines: hit not hit

          Line data    Source code
       1           0 : // Distributed under the MIT License.
       2             : // See LICENSE.txt for details.
       3             : 
       4             : #pragma once
       5             : 
       6             : #include <cstddef>
       7             : #include <stdexcept>
       8             : #include <string>
       9             : 
      10             : #include "Utilities/PrettyType.hpp"
      11             : 
      12             : namespace py_bindings {
      13             : /*!
      14             :  * \ingroup PythonBindingsGroup
      15             :  * \brief Check if a vector-like object access is in bounds. Throws
      16             :  * std::runtime_error if it is not.
      17             :  */
      18             : template <typename T>
      19           1 : void bounds_check(const T& t, const size_t i) {
      20             :   if (i >= t.size()) {
      21             :     throw std::runtime_error{"Out of bounds access (" + std::to_string(i) +
      22             :                              ") into " + pretty_type::name<T>() + " of size " +
      23             :                              std::to_string(t.size())};
      24             :   }
      25             : }
      26             : /*!
      27             :  * \ingroup PythonBindingsGroup
      28             :  * \brief Check if a matrix-like object access is in bounds. Throws
      29             :  * std::runtime_error if it is not.
      30             :  */
      31             : template <typename T>
      32           1 : void matrix_bounds_check(const T& matrix, const size_t row,
      33             :                          const size_t column) {
      34             :   if (row >= matrix.rows() or column >= matrix.columns()) {
      35             :     throw std::runtime_error{"Out of bounds access (" + std::to_string(row) +
      36             :                              ", " + std::to_string(column) +
      37             :                              ") into Matrix of size (" +
      38             :                              std::to_string(matrix.rows()) + ", " +
      39             :                              std::to_string(matrix.columns()) + ")"};
      40             :   }
      41             : }
      42             : }  // namespace py_bindings

Generated by: LCOV version 1.14