Program listing for file numerics/src/tools/sn_error_handling.h

Program listing for file numerics/src/tools/sn_error_handling.h#

 1#ifndef ERROR_HANDLING_H
 2#define ERROR_HANDLING_H
 3
 4#include <setjmp.h>
 5#include "SiconosConfig.h"
 6
 7#define SN_SETJMP_INTERNAL_START setjmp(*sn_get_internal_jmp_buf())
 8#define SN_SETJMP_INTERNAL_STOP sn_release_internal_jmp_buf();
 9
10#define SN_SETJMP_EXTERNAL_START setjmp(*sn_get_jmp_buf())
11#define SN_SETJMP_EXTERNAL_STOP sn_release_jmp_buf();
12
13typedef enum { SN_NO_ERROR, SN_MEMORY_ALLOC_ERROR, SN_UNSUPPORTED_LINALG_OP, SN_PROBLEM_NOT_PROCESSABLE, SN_UNKOWN_ERROR, SN_NOT_COMPILED_ERROR } SN_ERROR_T;
14
15#if defined(__cplusplus) && !defined (BUILD_AS_CPP)
16extern "C"
17{
18#endif
19
20
21
22  jmp_buf* sn_get_jmp_buf(void);
23
24
25  void sn_release_jmp_buf(void);
26
27
28  jmp_buf* sn_get_internal_jmp_buf(void);
29
30
31  void sn_release_internal_jmp_buf(void);
32
33
34  void sn_fatal_error(SN_ERROR_T code, const char* msg);
35
36
37  const char* sn_fatal_error_msg(void);
38
39#if defined(__cplusplus) && !defined (BUILD_AS_CPP)
40}
41#endif
42
43#endif