diff options
| author | take_cheeze <[email protected]> | 2014-02-25 18:47:28 +0900 |
|---|---|---|
| committer | take_cheeze <[email protected]> | 2014-03-01 20:05:29 +0900 |
| commit | 78915f96017a12e8c3c40a4a2714543c10d0d070 (patch) | |
| tree | 9db022c63ebd09aec5d1164141a0bdb85cc93d3f /include | |
| parent | 5ff9c1d2861609fc98f03ec2d768e0b4f1559a09 (diff) | |
| download | mruby-78915f96017a12e8c3c40a4a2714543c10d0d070.tar.gz mruby-78915f96017a12e8c3c40a4a2714543c10d0d070.zip | |
support c++ exception
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby.h | 4 | ||||
| -rw-r--r-- | include/mruby/compile.h | 5 | ||||
| -rw-r--r-- | include/mruby/error.h | 1 | ||||
| -rw-r--r-- | include/mruby/khash.h | 5 |
4 files changed, 10 insertions, 5 deletions
diff --git a/include/mruby.h b/include/mruby.h index 4ef1d326e..3c8f33b2b 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -97,8 +97,10 @@ enum gc_state { GC_STATE_SWEEP }; +struct mrb_jmpbuf; + typedef struct mrb_state { - void *jmp; + struct mrb_jmpbuf *jmp; mrb_allocf allocf; /* memory allocation function */ diff --git a/include/mruby/compile.h b/include/mruby/compile.h index 6717f001e..c22f8079a 100644 --- a/include/mruby/compile.h +++ b/include/mruby/compile.h @@ -12,7 +12,8 @@ extern "C" { #endif #include "mruby.h" -#include <setjmp.h> + +struct mrb_jmpbuf; struct mrb_parser_state; /* load context */ @@ -147,7 +148,7 @@ struct mrb_parser_state { size_t filename_table_length; int current_filename_index; - jmp_buf jmp; + struct mrb_jmpbuf* jmp; }; struct mrb_parser_state* mrb_parser_new(mrb_state*); diff --git a/include/mruby/error.h b/include/mruby/error.h index 96c4092b5..078937981 100644 --- a/include/mruby/error.h +++ b/include/mruby/error.h @@ -12,7 +12,6 @@ mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str); mrb_value mrb_make_exception(mrb_state *mrb, int argc, mrb_value *argv); mrb_value mrb_format(mrb_state *mrb, const char *format, ...); void mrb_exc_print(mrb_state *mrb, struct RObject *exc); -void mrb_longjmp(mrb_state *mrb); void mrb_print_backtrace(mrb_state *mrb); mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc); mrb_value mrb_get_backtrace(mrb_state *mrb); diff --git a/include/mruby/khash.h b/include/mruby/khash.h index ad228c8e1..14d1bfa1f 100644 --- a/include/mruby/khash.h +++ b/include/mruby/khash.h @@ -97,7 +97,7 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len) { \ khint_t sz = h->n_buckets; \ int len = sizeof(khkey_t) + (kh_is_map ? sizeof(khval_t) : 0); \ - uint8_t *p = mrb_malloc(mrb, sizeof(uint8_t)*sz/4+len*sz); \ + uint8_t *p = (uint8_t*)mrb_malloc(mrb, sizeof(uint8_t)*sz/4+len*sz); \ h->size = h->n_occupied = 0; \ h->upper_bound = UPPER_BOUND(sz); \ h->keys = (khkey_t *)p; \ @@ -128,6 +128,7 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len) } \ void kh_clear_##name(mrb_state *mrb, kh_##name##_t *h) \ { \ + (void)mrb; \ if (h && h->ed_flags) { \ kh_fill_flags(h->ed_flags, 0xaa, h->n_buckets/4); \ h->size = h->n_occupied = 0; \ @@ -135,6 +136,7 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len) } \ khint_t kh_get_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key) \ { \ + (void)mrb; \ khint_t k = __hash_func(mrb,key) & (h->mask); \ while (!__ac_isempty(h->ed_flags, k)) { \ if (!__ac_isdel(h->ed_flags, k)) { \ @@ -194,6 +196,7 @@ kh_fill_flags(uint8_t *p, uint8_t c, size_t len) } \ void kh_del_##name(mrb_state *mrb, kh_##name##_t *h, khint_t x) \ { \ + (void)mrb; \ h->ed_flags[x/4] |= __m_del[x%4]; \ h->size--; \ } \ |
