summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authortake_cheeze <[email protected]>2014-02-25 18:47:28 +0900
committertake_cheeze <[email protected]>2014-03-01 20:05:29 +0900
commit78915f96017a12e8c3c40a4a2714543c10d0d070 (patch)
tree9db022c63ebd09aec5d1164141a0bdb85cc93d3f /include
parent5ff9c1d2861609fc98f03ec2d768e0b4f1559a09 (diff)
downloadmruby-78915f96017a12e8c3c40a4a2714543c10d0d070.tar.gz
mruby-78915f96017a12e8c3c40a4a2714543c10d0d070.zip
support c++ exception
Diffstat (limited to 'include')
-rw-r--r--include/mruby.h4
-rw-r--r--include/mruby/compile.h5
-rw-r--r--include/mruby/error.h1
-rw-r--r--include/mruby/khash.h5
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--; \
} \