mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-16 17:22:55 +00:00
Add POSIX assert wrapper
Add in the vtkm namespace an assert macro (technically VTKM_ASSERT) that basically replicates the functionality of the POSIX assert macro. This form of assert is set to replace the separate control/exection asserts. It has been decided that an assert that throws an exception instead of terminating the program is not all that great of a feature and it causes some limitations on how it is used. The next commit will remove the other forms of VTK-m assert.
This commit is contained in:
parent
eede71f918
commit
2ddad8bcc5
45
vtkm/Assert.h
Normal file
45
vtkm/Assert.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
//============================================================================
|
||||||
|
// Copyright (c) Kitware, Inc.
|
||||||
|
// All rights reserved.
|
||||||
|
// See LICENSE.txt for details.
|
||||||
|
// This software is distributed WITHOUT ANY WARRANTY; without even
|
||||||
|
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
|
// PURPOSE. See the above copyright notice for more information.
|
||||||
|
//
|
||||||
|
// Copyright 2016 Sandia Corporation.
|
||||||
|
// Copyright 2016 UT-Battelle, LLC.
|
||||||
|
// Copyright 2016 Los Alamos National Security.
|
||||||
|
//
|
||||||
|
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
|
||||||
|
// the U.S. Government retains certain rights in this software.
|
||||||
|
//
|
||||||
|
// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National
|
||||||
|
// Laboratory (LANL), the U.S. Government retains certain rights in
|
||||||
|
// this software.
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
#ifndef vtk_m_Assert_h
|
||||||
|
#define vtk_m_Assert_h
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
/// \def VTKM_ASSERT(condition)
|
||||||
|
///
|
||||||
|
/// Asserts that \a condition resolves to true. If \a condition is false,
|
||||||
|
/// then a diagnostic message is outputted and execution is terminated. The
|
||||||
|
/// behavior is essentially the same as the POSIX assert macro, but is
|
||||||
|
/// wrapped for added portability.
|
||||||
|
///
|
||||||
|
/// Like the POSIX assert macro, the check will be removed when compiling
|
||||||
|
/// in non-debug mode (specifically when NDEBUG is defined), so be prepared
|
||||||
|
/// for the possibility that the condition is never evaluated.
|
||||||
|
///
|
||||||
|
#if !defined(NDEBUG)
|
||||||
|
#define VTKM_ASSERT(condition) \
|
||||||
|
assert(condition)
|
||||||
|
#else
|
||||||
|
#define VTKM_ASSERT(condition)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif //vtk_m_Assert_h
|
@ -21,6 +21,7 @@
|
|||||||
include_directories(${Boost_INCLUDE_DIRS})
|
include_directories(${Boost_INCLUDE_DIRS})
|
||||||
|
|
||||||
set(headers
|
set(headers
|
||||||
|
Assert.h
|
||||||
BinaryPredicates.h
|
BinaryPredicates.h
|
||||||
BinaryOperators.h
|
BinaryOperators.h
|
||||||
CellShape.h
|
CellShape.h
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#ifndef vtk_m_Matrix_h
|
#ifndef vtk_m_Matrix_h
|
||||||
#define vtk_m_Matrix_h
|
#define vtk_m_Matrix_h
|
||||||
|
|
||||||
|
#include <vtkm/Assert.h>
|
||||||
#include <vtkm/Math.h>
|
#include <vtkm/Math.h>
|
||||||
#include <vtkm/Types.h>
|
#include <vtkm/Types.h>
|
||||||
#include <vtkm/TypeTraits.h>
|
#include <vtkm/TypeTraits.h>
|
||||||
@ -59,6 +60,8 @@ public:
|
|||||||
VTKM_EXEC_CONT_EXPORT
|
VTKM_EXEC_CONT_EXPORT
|
||||||
const vtkm::Vec<ComponentType, NUM_COLUMNS> &
|
const vtkm::Vec<ComponentType, NUM_COLUMNS> &
|
||||||
operator[](vtkm::IdComponent rowIndex) const {
|
operator[](vtkm::IdComponent rowIndex) const {
|
||||||
|
VTKM_ASSERT(rowIndex >= 0);
|
||||||
|
VTKM_ASSERT(rowIndex < this->NUM_ROWS);
|
||||||
return this->Components[rowIndex];
|
return this->Components[rowIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,6 +71,8 @@ public:
|
|||||||
VTKM_EXEC_CONT_EXPORT
|
VTKM_EXEC_CONT_EXPORT
|
||||||
vtkm::Vec<ComponentType, NUM_COLUMNS> &
|
vtkm::Vec<ComponentType, NUM_COLUMNS> &
|
||||||
operator[](vtkm::IdComponent rowIndex) {
|
operator[](vtkm::IdComponent rowIndex) {
|
||||||
|
VTKM_ASSERT(rowIndex >= 0);
|
||||||
|
VTKM_ASSERT(rowIndex < this->NUM_ROWS);
|
||||||
return this->Components[rowIndex];
|
return this->Components[rowIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,6 +82,10 @@ public:
|
|||||||
VTKM_EXEC_CONT_EXPORT
|
VTKM_EXEC_CONT_EXPORT
|
||||||
const ComponentType &
|
const ComponentType &
|
||||||
operator()(vtkm::IdComponent rowIndex, vtkm::IdComponent colIndex) const {
|
operator()(vtkm::IdComponent rowIndex, vtkm::IdComponent colIndex) const {
|
||||||
|
VTKM_ASSERT(rowIndex >= 0);
|
||||||
|
VTKM_ASSERT(rowIndex < this->NUM_ROWS);
|
||||||
|
VTKM_ASSERT(colIndex >= 0);
|
||||||
|
VTKM_ASSERT(colIndex < this->NUM_COLUMNS);
|
||||||
return (*this)[rowIndex][colIndex];
|
return (*this)[rowIndex][colIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,6 +95,10 @@ public:
|
|||||||
VTKM_EXEC_CONT_EXPORT
|
VTKM_EXEC_CONT_EXPORT
|
||||||
ComponentType &
|
ComponentType &
|
||||||
operator()(vtkm::IdComponent rowIndex, vtkm::IdComponent colIndex) {
|
operator()(vtkm::IdComponent rowIndex, vtkm::IdComponent colIndex) {
|
||||||
|
VTKM_ASSERT(rowIndex >= 0);
|
||||||
|
VTKM_ASSERT(rowIndex < this->NUM_ROWS);
|
||||||
|
VTKM_ASSERT(colIndex >= 0);
|
||||||
|
VTKM_ASSERT(colIndex < this->NUM_COLUMNS);
|
||||||
return (*this)[rowIndex][colIndex];
|
return (*this)[rowIndex][colIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@
|
|||||||
#include <vtkm/internal/Configure.h>
|
#include <vtkm/internal/Configure.h>
|
||||||
#include <vtkm/internal/ExportMacros.h>
|
#include <vtkm/internal/ExportMacros.h>
|
||||||
|
|
||||||
|
#include <vtkm/Assert.h>
|
||||||
|
|
||||||
VTKM_THIRDPARTY_PRE_INCLUDE
|
VTKM_THIRDPARTY_PRE_INCLUDE
|
||||||
#include <boost/mpl/or.hpp>
|
#include <boost/mpl/or.hpp>
|
||||||
#include <boost/type_traits/is_floating_point.hpp>
|
#include <boost/type_traits/is_floating_point.hpp>
|
||||||
@ -806,11 +808,15 @@ public:
|
|||||||
VTKM_EXEC_CONT_EXPORT
|
VTKM_EXEC_CONT_EXPORT
|
||||||
const ComponentType &operator[](vtkm::IdComponent idx) const
|
const ComponentType &operator[](vtkm::IdComponent idx) const
|
||||||
{
|
{
|
||||||
|
VTKM_ASSERT(idx >= 0);
|
||||||
|
VTKM_ASSERT(idx < this->NUM_COMPONENTS);
|
||||||
return this->Components[idx];
|
return this->Components[idx];
|
||||||
}
|
}
|
||||||
VTKM_EXEC_CONT_EXPORT
|
VTKM_EXEC_CONT_EXPORT
|
||||||
ComponentType &operator[](vtkm::IdComponent idx)
|
ComponentType &operator[](vtkm::IdComponent idx)
|
||||||
{
|
{
|
||||||
|
VTKM_ASSERT(idx >= 0);
|
||||||
|
VTKM_ASSERT(idx < this->NUM_COMPONENTS);
|
||||||
return this->Components[idx];
|
return this->Components[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#ifndef vtk_m_VecVariable_h
|
#ifndef vtk_m_VecVariable_h
|
||||||
#define vtk_m_VecVariable_h
|
#define vtk_m_VecVariable_h
|
||||||
|
|
||||||
|
#include <vtkm/Assert.h>
|
||||||
#include <vtkm/Math.h>
|
#include <vtkm/Math.h>
|
||||||
#include <vtkm/Types.h>
|
#include <vtkm/Types.h>
|
||||||
#include <vtkm/TypeTraits.h>
|
#include <vtkm/TypeTraits.h>
|
||||||
@ -48,6 +49,7 @@ public:
|
|||||||
VecVariable(const vtkm::VecVariable<ComponentType,SrcSize> &src)
|
VecVariable(const vtkm::VecVariable<ComponentType,SrcSize> &src)
|
||||||
: NumComponents(src.GetNumberOfComponents())
|
: NumComponents(src.GetNumberOfComponents())
|
||||||
{
|
{
|
||||||
|
VTKM_ASSERT(this->NumComponents <= MaxSize);
|
||||||
for (vtkm::IdComponent index = 0; index < this->NumComponents; index++)
|
for (vtkm::IdComponent index = 0; index < this->NumComponents; index++)
|
||||||
{
|
{
|
||||||
this->Data[index] = src[index];
|
this->Data[index] = src[index];
|
||||||
@ -59,6 +61,7 @@ public:
|
|||||||
VecVariable(const vtkm::Vec<ComponentType,SrcSize> &src)
|
VecVariable(const vtkm::Vec<ComponentType,SrcSize> &src)
|
||||||
: NumComponents(SrcSize)
|
: NumComponents(SrcSize)
|
||||||
{
|
{
|
||||||
|
VTKM_ASSERT(this->NumComponents <= MaxSize);
|
||||||
for (vtkm::IdComponent index = 0; index < this->NumComponents; index++)
|
for (vtkm::IdComponent index = 0; index < this->NumComponents; index++)
|
||||||
{
|
{
|
||||||
this->Data[index] = src[index];
|
this->Data[index] = src[index];
|
||||||
@ -96,6 +99,7 @@ public:
|
|||||||
VTKM_EXEC_CONT_EXPORT
|
VTKM_EXEC_CONT_EXPORT
|
||||||
void Append(ComponentType value)
|
void Append(ComponentType value)
|
||||||
{
|
{
|
||||||
|
VTKM_ASSERT(this->NumComponents < MaxSize);
|
||||||
this->Data[this->NumComponents] = value;
|
this->Data[this->NumComponents] = value;
|
||||||
this->NumComponents++;
|
this->NumComponents++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user