source: BAORadio/libindi/v1.0.1/BAOControl/exception.h@ 616

Last change on this file since 616 was 502, checked in by frichard, 15 years ago

-BAOControl : petite interface permettant de contrôler les antennes via le pilote indi_BAO
-Le pilote indi_BAO utilise désormais indilib v 0.7

File size: 851 bytes
Line 
1/* exception.h */
2#include <stdio.h>
3#include <stdlib.h>
4#include <setjmp.h>
5
6#ifndef __EXCEPTION__
7#define __EXCEPTION__ 1
8
9/* exceptions de base */
10
11#define ERR_MALLOC 10
12#define NULL_POINTEUR 11
13#define ERR_FOPEN 12
14
15/*prototypes*/
16
17/* definition des structures de donnees de gestion de la pile des contextes
18 et des macros TRY, CATCH, et ENDTRY */
19
20
21/* liste chainee des contextes */
22typedef struct except_ctx
23{
24 jmp_buf ctx;
25 struct except_ctx* super;
26} except;
27extern except* _exceptions;
28
29/* les macros */
30#define TRY { \
31 int exc; \
32 push_exc(); \
33 exc = setjmp(_exceptions->ctx); \
34 switch(exc){ \
35 case 0:
36
37#define CATCH(X) \
38 break; \
39 case(X): \
40 exc = 0;
41
42#define ENDTRY \
43 break; \
44 default: \
45 pop_exc(exc); }\
46 }
47
48#define THROW(X) longjmp(_exceptions->ctx, X)
49
50
51void push_exc();
52void pop_exc(int);
53
54#endif
Note: See TracBrowser for help on using the repository browser.