From 871a17da7030aeb8c114406f82fa2fd674f5b970 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Sat, 2 Feb 2019 13:25:21 -0500 Subject: migrate to internals --- nonstd/assert.h | 67 --------------------------------------------------------- 1 file changed, 67 deletions(-) delete mode 100644 nonstd/assert.h (limited to 'nonstd/assert.h') diff --git a/nonstd/assert.h b/nonstd/assert.h deleted file mode 100644 index 50614d5b..00000000 --- a/nonstd/assert.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef __NONSTD_ASSERT_H__ -#define __NONSTD_ASSERT_H__ -#include "nonstd/types.h" - -#define __STDC_WANT_LIB_EXT1__ 1 - -#include -#include -#include - -typedef int errno_t; -typedef void (*constraint_handler_t)(const char * restrict msg, void * restrict ptr, errno_t error); - -#ifndef EFAULT -#define EFAULT 10 -#endif - -#ifndef NDEBUG - -# define ASSERT_NONNULL(_ptr) do { \ - if (!_ptr) { \ - struct __constraint_info _ci = {0}; \ - _ci.func = __func__; \ - __libc.stdlib.constraint_handler("Undefined behavior: " \ - "Parameter " #_ptr " can not be NULL", &_ci, EFAULT); \ - } \ -} while (0) - -# define ASSERT_NONZERO(_n) do { \ - if (!_n) { \ - struct __constraint_info _ci = {0}; \ - _ci.func = __func__; \ - __libc.stdlib.constraint_handler("Undefined behavior: " \ - "Parameter " #_n " can not be 0", &_ci, ERANGE); \ - } \ -} while (0) - -# define ASSERT_NOOVERLAP(x, y, s) do { \ - /* TODO */ \ -} while (0) - -# define ASSERT_REPRESENTABLE(_n, _min, _max, _type, _sentinel) do { \ - if (_sentinel && (_n != _sentinel && (_n < _min || _n > _max))) { \ - struct __constraint_info _ci = {0}; \ - _ci.func = __func__; \ - __libc.stdlib.constraint_handler("Undefined behavior: " \ - "Paramater " #_n " must be representable as a " #_type \ - "or be equal to " #_sentinel, &_ci, ERANGE); \ - } else if (_n < _min || _n > _max) { \ - struct __constraint_info _ci = {0}; \ - _ci.func = __func__; \ - __libc.stdlib.constraint_handler("Undefined behavior: " \ - "Parameter " #_n " must be representable as a " #_type, \ - &_ci, ERANGE); \ - } \ -} while (0) - -#else - -# define ASSERT_NONNULL(x) (void(0)) -# define ASSERT_NOOVERLAP(x, y, s) (void(0)) -# define ASSERT_REPRESENTABLE(n, min, max, type, sentinel) (void(0)) -# define ASSERT_NONZERO(n) - -#endif - -#endif -- cgit v1.2.1