summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/include/sm/assert.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/include/sm/assert.h')
-rw-r--r--contrib/sendmail/include/sm/assert.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/contrib/sendmail/include/sm/assert.h b/contrib/sendmail/include/sm/assert.h
new file mode 100644
index 0000000..6b86536
--- /dev/null
+++ b/contrib/sendmail/include/sm/assert.h
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
+ * All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ *
+ * $Id: assert.h,v 1.10 2001/06/07 20:04:53 ca Exp $
+ */
+
+/*
+** libsm abnormal program termination and assertion checking
+** See libsm/assert.html for documentation.
+*/
+
+#ifndef SM_ASSERT_H
+# define SM_ASSERT_H
+
+# include <sm/gen.h>
+# include <sm/debug.h>
+
+/*
+** abnormal program termination
+*/
+
+typedef void (*SM_ABORT_HANDLER_T) __P((const char *, int, const char *));
+
+extern SM_DEAD(void
+sm_abort_at __P((
+ const char *,
+ int,
+ const char *)));
+
+extern void
+sm_abort_sethandler __P((
+ SM_ABORT_HANDLER_T));
+
+extern SM_DEAD(void PRINTFLIKE(1, 2)
+sm_abort __P((
+ char *,
+ ...)));
+
+/*
+** assertion checking
+*/
+
+# ifndef SM_CHECK_ALL
+# define SM_CHECK_ALL 1
+# endif /* ! SM_CHECK_ALL */
+
+# ifndef SM_CHECK_REQUIRE
+# define SM_CHECK_REQUIRE SM_CHECK_ALL
+# endif /* ! SM_CHECK_REQUIRE */
+
+# ifndef SM_CHECK_ENSURE
+# define SM_CHECK_ENSURE SM_CHECK_ALL
+# endif /* ! SM_CHECK_ENSURE */
+
+# ifndef SM_CHECK_ASSERT
+# define SM_CHECK_ASSERT SM_CHECK_ALL
+# endif /* ! SM_CHECK_ASSERT */
+
+# if SM_CHECK_REQUIRE
+# if defined(__STDC__) || defined(__cplusplus)
+# define SM_REQUIRE(cond) \
+ ((void) ((cond) || (sm_abort_at(__FILE__, __LINE__, \
+ "SM_REQUIRE(" #cond ") failed"), 0)))
+# else /* defined(__STDC__) || defined(__cplusplus) */
+# define SM_REQUIRE(cond) \
+ ((void) ((cond) || (sm_abort_at(__FILE__, __LINE__, \
+ "SM_REQUIRE(cond) failed"), 0)))
+# endif /* defined(__STDC__) || defined(__cplusplus) */
+# else /* SM_CHECK_REQUIRE */
+# define SM_REQUIRE(cond) ((void) 0)
+# endif /* SM_CHECK_REQUIRE */
+
+# define SM_REQUIRE_ISA(obj, magic) \
+ SM_REQUIRE((obj) != NULL && (obj)->sm_magic == (magic))
+
+# if SM_CHECK_ENSURE
+# if defined(__STDC__) || defined(__cplusplus)
+# define SM_ENSURE(cond) \
+ ((void) ((cond) || (sm_abort_at(__FILE__, __LINE__, \
+ "SM_ENSURE(" #cond ") failed"), 0)))
+# else /* defined(__STDC__) || defined(__cplusplus) */
+# define SM_ENSURE(cond) \
+ ((void) ((cond) || (sm_abort_at(__FILE__, __LINE__, \
+ "SM_ENSURE(cond) failed"), 0)))
+# endif /* defined(__STDC__) || defined(__cplusplus) */
+# else /* SM_CHECK_ENSURE */
+# define SM_ENSURE(cond) ((void) 0)
+# endif /* SM_CHECK_ENSURE */
+
+# if SM_CHECK_ASSERT
+# if defined(__STDC__) || defined(__cplusplus)
+# define SM_ASSERT(cond) \
+ ((void) ((cond) || (sm_abort_at(__FILE__, __LINE__, \
+ "SM_ASSERT(" #cond ") failed"), 0)))
+# else /* defined(__STDC__) || defined(__cplusplus) */
+# define SM_ASSERT(cond) \
+ ((void) ((cond) || (sm_abort_at(__FILE__, __LINE__, \
+ "SM_ASSERT(cond) failed"), 0)))
+# endif /* defined(__STDC__) || defined(__cplusplus) */
+# else /* SM_CHECK_ASSERT */
+# define SM_ASSERT(cond) ((void) 0)
+# endif /* SM_CHECK_ASSERT */
+
+extern SM_DEBUG_T SmExpensiveRequire;
+extern SM_DEBUG_T SmExpensiveEnsure;
+extern SM_DEBUG_T SmExpensiveAssert;
+
+#endif /* ! SM_ASSERT_H */
OpenPOWER on IntegriCloud