remove \r
[extl.git] / extl / platform / utility / assert.h
blob58f49e414f2b2893cd1547921ddd266a3880f0f6
1 /* ///////////////////////////////////////////////////////////////////////
2 * File: assert.h
4 * Created: 08.02.02
5 * Updated: 08.05.05
7 * Brief: platform assertion
9 * [<Home>]
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
12 #ifndef EXTL_PLATFORM_UTILITY_ASSERT_H
13 #define EXTL_PLATFORM_UTILITY_ASSERT_H
15 /* ///////////////////////////////////////////////////////////////////////
16 * Includes
18 #include "../../config/config.h"
19 #include "../../type/typedef.h"
21 /* ///////////////////////////////////////////////////////////////////////
22 * Macros
25 #ifndef EXTL_ASSERT_DISABLE
26 # define EXTL_ASSERT(expr) ((expr)? ((void)0): \
27 EXTL_NS(EXTL_NS_PLATFORM(g_assertion_failed_proc)) \
28 (EXTL_LINENUM, #expr, EXTL_CURRENT_FUNCTION, EXTL_FILENAME))
30 # define EXTL_MESSAGE_ASSERT(expr, msg) EXTL_ASSERT(expr && msg)
31 # define EXTL_SET_ASSERT_FAILED_PROC(func) EXTL_NS(EXTL_NS_PLATFORM(set_assertion_failed_proc))(func)
32 #else
33 # define EXTL_ASSERT(expr)
34 # define EXTL_MESSAGE_ASSERT(expr, msg)
35 # define EXTL_SET_ASSERT_FAILED_PROC(func)
36 #endif
38 /* The maximum size of the assertion-failed message text */
39 #define EXTL_ASSERT_MSG_SIZE_MAX 256
41 /* Includes */
42 #if defined(EXTL_PLATFORM_IS_UNIX)
43 # include "../../unix/utility/assert_failed.h"
44 #elif defined(EXTL_PLATFORM_IS_WIN)
45 # include "../../win/utility/assert_failed.h"
46 #endif
48 /* ///////////////////////////////////////////////////////////////////////
49 * extl::platform namespace
51 EXTL_PLATFORM_BEGIN_WHOLE_NAMESPACE
53 /* using extl::platform::::win/unix::assertion_failed; */
54 #if defined(EXTL_PLATFORM_IS_UNIX)
55 EXTL_NS_USING(EXTL_NS(EXTL_NS_PLATFORM(EXTL_NS_UNIX(assertion_failed))))
56 #elif defined(EXTL_PLATFORM_IS_WIN)
57 EXTL_NS_USING(EXTL_NS(EXTL_NS_PLATFORM(EXTL_NS_WIN(assertion_failed))))
58 #endif
60 /* The assertion-failed handle function */
61 typedef void (*EXTL_ASSERTION_FAILED_PROC)(e_uint_t const_ref nLine,
62 e_char_t const *pszExpr,
63 e_char_t const *pszFunc,
64 e_char_t const *pszFile);
66 static EXTL_ASSERTION_FAILED_PROC g_assertion_failed_proc = assertion_failed;
68 /* Sets the assertion-failed handle function */
69 EXTL_INLINE EXTL_ASSERTION_FAILED_PROC set_assertion_failed_proc(EXTL_ASSERTION_FAILED_PROC passertion_failedProc)
71 EXTL_ASSERTION_FAILED_PROC pOldassertion_failedProc = g_assertion_failed_proc;
72 g_assertion_failed_proc = (passertion_failedProc == NULL)? assertion_failed : passertion_failedProc;
73 return pOldassertion_failedProc;
76 /* ///////////////////////////////////////////////////////////////////////
77 * extl::platform namespace
79 EXTL_PLATFORM_END_WHOLE_NAMESPACE
81 /* //////////////////////////////////////////////////////////////////// */
82 #endif /* EXTL_PLATFORM_UTILITY_ASSERT_H */
83 /* //////////////////////////////////////////////////////////////////// */