stdgpu: stdgpu/contract.h Source File
stdgpu Latest
Efficient STL-like Data Structures on the GPU
|
Go to the documentation of this file.
16#ifndef STDGPU_CONTRACT_H
17#define STDGPU_CONTRACT_H
33#include <stdgpu/config.h>
39#if STDGPU_DEVICE_COMPILER == STDGPU_DEVICE_COMPILER_CUDACLANG
42STDGPU_CUDA_DEVICE_ONLY
void
71#define STDGPU_DETAIL_EMPTY_STATEMENT (void)0
74#if STDGPU_ENABLE_CONTRACT_CHECKS
76 #define STDGPU_DETAIL_HOST_CHECK(type, ...) \
79 printf("stdgpu : " type " failure :\n" \
82 " Condition : %s\n", \
85 static_cast<const char*>(STDGPU_FUNC), \
89 STDGPU_DETAIL_EMPTY_STATEMENT
91 #define STDGPU_DETAIL_HOST_EXPECTS(...) STDGPU_DETAIL_HOST_CHECK("Precondition", __VA_ARGS__)
92 #define STDGPU_DETAIL_HOST_ENSURES(...) STDGPU_DETAIL_HOST_CHECK("Postcondition", __VA_ARGS__)
93 #define STDGPU_DETAIL_HOST_ASSERT(...) STDGPU_DETAIL_HOST_CHECK("Assertion", __VA_ARGS__)
95 #define STDGPU_DETAIL_DEVICE_CHECK(...) assert((__VA_ARGS__))
97 #define STDGPU_DETAIL_DEVICE_EXPECTS(...) STDGPU_DETAIL_DEVICE_CHECK(__VA_ARGS__)
98 #define STDGPU_DETAIL_DEVICE_ENSURES(...) STDGPU_DETAIL_DEVICE_CHECK(__VA_ARGS__)
99 #define STDGPU_DETAIL_DEVICE_ASSERT(...) STDGPU_DETAIL_DEVICE_CHECK(__VA_ARGS__)
101 #if STDGPU_CODE == STDGPU_CODE_DEVICE
102 #define STDGPU_EXPECTS(...) STDGPU_DETAIL_DEVICE_EXPECTS(__VA_ARGS__)
103 #define STDGPU_ENSURES(...) STDGPU_DETAIL_DEVICE_ENSURES(__VA_ARGS__)
104 #define STDGPU_ASSERT(...) STDGPU_DETAIL_DEVICE_ASSERT(__VA_ARGS__)
106 #define STDGPU_EXPECTS(...) STDGPU_DETAIL_HOST_EXPECTS(__VA_ARGS__)
107 #define STDGPU_ENSURES(...) STDGPU_DETAIL_HOST_ENSURES(__VA_ARGS__)
108 #define STDGPU_ASSERT(...) STDGPU_DETAIL_HOST_ASSERT(__VA_ARGS__)
111 #define STDGPU_EXPECTS(...) STDGPU_DETAIL_EMPTY_STATEMENT
112 #define STDGPU_ENSURES(...) STDGPU_DETAIL_EMPTY_STATEMENT
113 #define STDGPU_ASSERT(...) STDGPU_DETAIL_EMPTY_STATEMENT