9a9b91c940
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
46 lines
1.1 KiB
C
46 lines
1.1 KiB
C
|
|
#ifndef MLIBC_ENSURE_H
|
|
#define MLIBC_ENSURE_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef __MLIBC_ABI_ONLY
|
|
|
|
void __ensure_fail(const char *assertion, const char *file, unsigned int line,
|
|
const char *function);
|
|
|
|
void __ensure_warn(const char *assertion, const char *file, unsigned int line,
|
|
const char *function);
|
|
|
|
#endif /* !__MLIBC_ABI_ONLY */
|
|
|
|
#define __ensure(assertion) do { if(!(assertion)) \
|
|
__ensure_fail(#assertion, __FILE__, __LINE__, __func__); } while(0)
|
|
|
|
#define MLIBC_UNIMPLEMENTED() __ensure_fail("Functionality is not implemented", \
|
|
__FILE__, __LINE__, __func__)
|
|
|
|
#define MLIBC_MISSING_SYSDEP() __ensure_warn("Library function fails due to missing sysdep", \
|
|
__FILE__, __LINE__, __func__)
|
|
|
|
#define MLIBC_CHECK_OR_ENOSYS(sysdep, ret) ({ \
|
|
if (!(sysdep)) { \
|
|
__ensure_warn("Library function fails due to missing sysdep", \
|
|
__FILE__, __LINE__, __func__); \
|
|
errno = ENOSYS; \
|
|
return (ret); \
|
|
} \
|
|
sysdep; \
|
|
})
|
|
|
|
#define MLIBC_STUB_BODY ({ MLIBC_UNIMPLEMENTED(); __builtin_unreachable(); })
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* MLIBC_ENSURE_H */
|
|
|