The Witchcraft Compiler Collection
WCC
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Macros
wsh
include
longjmp.h
Go to the documentation of this file.
1
8
/* Copyright (C) 2009-2015 Francesco Nidito
9
*
10
* Permission is hereby granted, free of charge, to any person obtaining a copy
11
* of this software and associated documentation files (the "Software"), to deal
12
* in the Software without restriction, including without limitation the rights to
13
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
14
* of the Software, and to permit persons to whom the Software is furnished to do
15
* so, subject to the following conditions:
16
*
17
* The above copyright notice and this permission notice shall be included in all
18
* copies or substantial portions of the Software.
19
*
20
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
* SOFTWARE.
27
*/
28
29
#ifndef _TRY_THROW_CATCH_H_
30
#define _TRY_THROW_CATCH_H_
31
32
#include <stdio.h>
33
#include <setjmp.h>
34
35
/* For the full documentation and explanation of the code below, please refer to
36
* /~nids/docs/longjump_try_trow_catch.html
37
*/
38
39
#define TRY do { jmp_buf ex_buf__; switch( setjmp(ex_buf__) ) { case 0: while(1) {
40
#define CATCH(x) break; case x:
41
#define FINALLY break; } default: {
42
#define ETRY break; } } }while(0)
43
#define THROW(x) longjmp(ex_buf__, x)
44
45
#endif
Generated on Fri Aug 12 2016 17:38:31 for The Witchcraft Compiler Collection by
1.8.6