123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #ifndef KMP_I18N_H
- #define KMP_I18N_H
- #include "kmp_str.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "kmp_i18n_id.inc"
- void __kmp_i18n_catopen();
- void __kmp_i18n_catclose();
- char const *__kmp_i18n_catgets(kmp_i18n_id_t id);
- #define KMP_I18N_STR(id) __kmp_i18n_catgets(kmp_i18n_str_##id)
- enum kmp_msg_type {
- kmp_mt_dummy = 0,
- kmp_mt_mesg =
- 4,
- kmp_mt_hint = 5,
- kmp_mt_syserr = -1
- };
- typedef enum kmp_msg_type kmp_msg_type_t;
- struct kmp_msg {
- kmp_msg_type_t type;
- int num;
- char *str;
- size_t len;
- };
- typedef struct kmp_msg kmp_msg_t;
- extern kmp_msg_t __kmp_msg_null;
- kmp_msg_t __kmp_msg_format(unsigned id_arg, ...);
- kmp_msg_t __kmp_msg_error_code(int code);
- kmp_msg_t __kmp_msg_error_mesg(char const *mesg);
- #define KMP_MSG(...) __kmp_msg_format(kmp_i18n_msg_##__VA_ARGS__)
- #define KMP_HNT(...) __kmp_msg_format(kmp_i18n_hnt_##__VA_ARGS__)
- #define KMP_SYSERRCODE(code) __kmp_msg_error_code(code)
- #define KMP_SYSERRMESG(mesg) __kmp_msg_error_mesg(mesg)
- #define KMP_ERR KMP_SYSERRCODE
- enum kmp_msg_severity {
- kmp_ms_inform,
- kmp_ms_warning,
- kmp_ms_fatal
- };
- typedef enum kmp_msg_severity kmp_msg_severity_t;
- void __kmp_msg(kmp_msg_severity_t severity, kmp_msg_t message, ...);
- KMP_NORETURN void __kmp_fatal(kmp_msg_t message, ...);
- #define KMP_INFORM(...) \
- __kmp_msg(kmp_ms_inform, KMP_MSG(__VA_ARGS__), __kmp_msg_null)
- #define KMP_WARNING(...) \
- __kmp_msg(kmp_ms_warning, KMP_MSG(__VA_ARGS__), __kmp_msg_null)
- #define KMP_FATAL(...) __kmp_fatal(KMP_MSG(__VA_ARGS__), __kmp_msg_null)
- #define KMP_SYSFAIL(func, error) \
- __kmp_fatal(KMP_MSG(FunctionError, func), KMP_SYSERRCODE(error), \
- __kmp_msg_null)
- #define KMP_CHECK_SYSFAIL(func, error) \
- { \
- if (error) { \
- KMP_SYSFAIL(func, error); \
- } \
- }
- #define KMP_CHECK_SYSFAIL_ERRNO(func, status) \
- { \
- if (status != 0) { \
- int error = errno; \
- KMP_SYSFAIL(func, error); \
- } \
- }
- #ifdef KMP_DEBUG
- void __kmp_i18n_dump_catalog(kmp_str_buf_t *buffer);
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|