mbed I/F binding for mruby

Dependents:   mruby_mbed_web mirb_mbed

mbed-mruby

How to use

Class

Committer:
mzta
Date:
Mon Apr 13 05:20:15 2015 +0000
Revision:
1:8ccd1d494a4b
Parent:
0:158c61bb030f
- code refactoring.; - add SPI, SPISlave, I2C class to mruby-mbed (Incomplete).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mzta 0:158c61bb030f 1 /*
mzta 0:158c61bb030f 2 ** mrb_throw.h - mruby exception throwing handler
mzta 0:158c61bb030f 3 **
mzta 0:158c61bb030f 4 ** See Copyright Notice in mruby.h
mzta 0:158c61bb030f 5 */
mzta 0:158c61bb030f 6
mzta 0:158c61bb030f 7 #ifndef MRB_THROW_H
mzta 0:158c61bb030f 8 #define MRB_THROW_H
mzta 0:158c61bb030f 9
mzta 0:158c61bb030f 10 #ifdef MRB_ENABLE_CXX_EXCEPTION
mzta 0:158c61bb030f 11
mzta 0:158c61bb030f 12 #define MRB_TRY(buf) do { try {
mzta 0:158c61bb030f 13 #define MRB_CATCH(buf) } catch(mrb_jmpbuf_impl e) { if (e != (buf)->impl) { throw e; }
mzta 0:158c61bb030f 14 #define MRB_END_EXC(buf) } } while(0)
mzta 0:158c61bb030f 15
mzta 0:158c61bb030f 16 #define MRB_THROW(buf) throw((buf)->impl)
mzta 0:158c61bb030f 17 typedef mrb_int mrb_jmpbuf_impl;
mzta 0:158c61bb030f 18
mzta 0:158c61bb030f 19 #else
mzta 0:158c61bb030f 20
mzta 0:158c61bb030f 21 #include <setjmp.h>
mzta 0:158c61bb030f 22
mzta 0:158c61bb030f 23 #define MRB_TRY(buf) do { if (setjmp((buf)->impl) == 0) {
mzta 0:158c61bb030f 24 #define MRB_CATCH(buf) } else {
mzta 0:158c61bb030f 25 #define MRB_END_EXC(buf) } } while(0)
mzta 0:158c61bb030f 26
mzta 0:158c61bb030f 27 #define MRB_THROW(buf) longjmp((buf)->impl, 1);
mzta 0:158c61bb030f 28 #define mrb_jmpbuf_impl jmp_buf
mzta 0:158c61bb030f 29
mzta 0:158c61bb030f 30 #endif
mzta 0:158c61bb030f 31
mzta 0:158c61bb030f 32 struct mrb_jmpbuf {
mzta 0:158c61bb030f 33 mrb_jmpbuf_impl impl;
mzta 0:158c61bb030f 34
mzta 0:158c61bb030f 35 #ifdef MRB_ENABLE_CXX_EXCEPTION
mzta 0:158c61bb030f 36 static mrb_int jmpbuf_id;
mzta 0:158c61bb030f 37 mrb_jmpbuf() : impl(jmpbuf_id++) {}
mzta 0:158c61bb030f 38 #endif
mzta 0:158c61bb030f 39 };
mzta 0:158c61bb030f 40
mzta 0:158c61bb030f 41 #endif /* MRB_THROW_H */
mzta 0:158c61bb030f 42