Kokkos Core Kernels Package Version of the Day
Loading...
Searching...
No Matches
Kokkos_Assert.hpp
1//@HEADER
2// ************************************************************************
3//
4// Kokkos v. 4.0
5// Copyright (2022) National Technology & Engineering
6// Solutions of Sandia, LLC (NTESS).
7//
8// Under the terms of Contract DE-NA0003525 with NTESS,
9// the U.S. Government retains certain rights in this software.
10//
11// Part of Kokkos, under the Apache License v2.0 with LLVM Exceptions.
12// See https://kokkos.org/LICENSE for license information.
13// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
14//
15//@HEADER
16
17#ifndef KOKKOS_ASSERT_HPP
18#define KOKKOS_ASSERT_HPP
19
20#include <Kokkos_Macros.hpp>
21#include <Kokkos_Abort.hpp>
22
23#if !defined(NDEBUG) || defined(KOKKOS_ENFORCE_CONTRACTS) || \
24 defined(KOKKOS_ENABLE_DEBUG)
25#define KOKKOS_EXPECTS(...) \
26 { \
27 if (!bool(__VA_ARGS__)) { \
28 ::Kokkos::abort( \
29 "Kokkos contract violation:\n " \
30 " Expected precondition `" #__VA_ARGS__ \
31 "` evaluated false.\n" \
32 "Error at " KOKKOS_IMPL_TOSTRING(__FILE__) ":" KOKKOS_IMPL_TOSTRING( \
33 __LINE__) " \n"); \
34 } \
35 }
36#define KOKKOS_ENSURES(...) \
37 { \
38 if (!bool(__VA_ARGS__)) { \
39 ::Kokkos::abort( \
40 "Kokkos contract violation:\n " \
41 " Ensured postcondition `" #__VA_ARGS__ \
42 "` evaluated false.\n" \
43 "Error at " KOKKOS_IMPL_TOSTRING(__FILE__) ":" KOKKOS_IMPL_TOSTRING( \
44 __LINE__) " \n"); \
45 } \
46 }
47#define KOKKOS_ASSERT(...) \
48 { \
49 if (!bool(__VA_ARGS__)) { \
50 ::Kokkos::abort( \
51 "Kokkos contract violation:\n " \
52 " Asserted condition `" #__VA_ARGS__ \
53 "` evaluated false.\n" \
54 "Error at " KOKKOS_IMPL_TOSTRING(__FILE__) ":" KOKKOS_IMPL_TOSTRING( \
55 __LINE__) " \n"); \
56 } \
57 }
58#else // not debug mode
59#define KOKKOS_EXPECTS(...)
60#define KOKKOS_ENSURES(...)
61#ifndef KOKKOS_ASSERT
62#define KOKKOS_ASSERT(...)
63#endif // ifndef KOKKOS_ASSERT
64#endif // end debug mode ifdefs
65
66#endif /* #ifndef KOKKOS_ASSERT_HPP */