diff options
| author | Daniel Bovensiepen <[email protected]> | 2012-11-08 17:23:51 +0900 |
|---|---|---|
| committer | Daniel Bovensiepen <[email protected]> | 2012-11-08 17:23:51 +0900 |
| commit | e1e369470eb41453cb79abdbbbdb9158489e2d26 (patch) | |
| tree | 0e4dce8c16af6f8519869a71c9c44f3ee2f3595b /include | |
| parent | cdb72a05a294eb8521dd40c011160228496312cb (diff) | |
| parent | 1c95f4eb82d525d7d5eacd214904d262554bf93d (diff) | |
| download | mruby-e1e369470eb41453cb79abdbbbdb9158489e2d26.tar.gz mruby-e1e369470eb41453cb79abdbbbdb9158489e2d26.zip | |
Merge new change
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby.h | 19 | ||||
| -rw-r--r-- | include/mruby/class.h | 1 | ||||
| -rw-r--r-- | include/mruby/object.h | 52 | ||||
| -rw-r--r-- | include/mruby/value.h | 63 |
4 files changed, 45 insertions, 90 deletions
diff --git a/include/mruby.h b/include/mruby.h index 94fa393ea..4a5b5ce88 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -46,8 +46,6 @@ typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud); #ifndef MRB_ARENA_SIZE #define MRB_ARENA_SIZE 1024 #endif -#define ruby_debug (mrb_nil_value()) -#define ruby_verbose (mrb_nil_value()) typedef struct { mrb_sym mid; @@ -304,23 +302,6 @@ void mrb_bug(const char *fmt, ...); #define E_KEY_ERROR (mrb_class_obj_get(mrb, "KeyError")) -#define SYM2ID(x) ((x).value.sym) - -#define NUM2CHR_internal(x) (((mrb_type(x) == MRB_TT_STRING)&&(RSTRING_LEN(x)>=1))?\ - RSTRING_PTR(x)[0]:(char)(mrb_fixnum_number(x)&0xff)) -#ifdef __GNUC__ -# define NUM2CHR(x) __extension__ ({mrb_value num2chr_x = (x); NUM2CHR_internal(num2chr_x);}) -#else -/* TODO: there is no definitions of RSTRING_* here, so cannot compile. -static inline char -NUM2CHR(mrb_value x) -{ - return NUM2CHR_internal(x); -} -*/ -#define NUM2CHR(x) NUM2CHR_internal(x) -#endif - mrb_value mrb_yield(mrb_state *mrb, mrb_value v, mrb_value blk); mrb_value mrb_yield_argv(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv); mrb_value mrb_class_new_instance(mrb_state *mrb, int, mrb_value*, struct RClass *); diff --git a/include/mruby/class.h b/include/mruby/class.h index 3eae31f4e..eda54dff9 100644 --- a/include/mruby/class.h +++ b/include/mruby/class.h @@ -64,6 +64,7 @@ struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym); void mrb_define_method_vm(mrb_state*, struct RClass*, mrb_sym, mrb_value); void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, struct RProc *); void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, int aspec); +void mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b); struct RClass *mrb_class_outer_module(mrb_state*, struct RClass *); struct RProc *mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym); diff --git a/include/mruby/object.h b/include/mruby/object.h deleted file mode 100644 index afdce5546..000000000 --- a/include/mruby/object.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -** mruby/object.h - Object, NilClass, TrueClass, FalseClass class -** -** See Copyright Notice in mruby.h -*/ - -#ifndef MRUBY_OBJECT_H -#define MRUBY_OBJECT_H - -#define MRB_OBJECT_HEADER \ - enum mrb_vtype tt:8;\ - unsigned int color:3;\ - unsigned int flags:21;\ - struct RClass *c;\ - struct RBasic *gcnext - -/* white: 011, black: 100, gray: 000 */ -#define MRB_GC_GRAY 0 -#define MRB_GC_WHITE_A 1 -#define MRB_GC_WHITE_B (1 << 1) -#define MRB_GC_BLACK (1 << 2) -#define MRB_GC_WHITES (MRB_GC_WHITE_A | MRB_GC_WHITE_B) -#define MRB_GC_COLOR_MASK 7 - -#define paint_gray(o) ((o)->color = MRB_GC_GRAY) -#define paint_black(o) ((o)->color = MRB_GC_BLACK) -#define paint_white(o) ((o)->color = MRB_GC_WHITES) -#define paint_partial_white(s, o) ((o)->color = (s)->current_white_part) -#define is_gray(o) ((o)->color == MRB_GC_GRAY) -#define is_white(o) ((o)->color & MRB_GC_WHITES) -#define is_black(o) ((o)->color & MRB_GC_BLACK) -#define is_dead(s, o) (((o)->color & other_white_part(s) & MRB_GC_WHITES) || (o)->tt == MRB_TT_FREE) -#define flip_white_part(s) ((s)->current_white_part = other_white_part(s)) -#define other_white_part(s) ((s)->current_white_part ^ MRB_GC_WHITES) - -struct RBasic { - MRB_OBJECT_HEADER; -}; - -struct RObject { - MRB_OBJECT_HEADER; - struct iv_tbl *iv; -}; - -#define mrb_obj_ptr(v) ((struct RObject*)((v).value.p)) -#define RBASIC(obj) ((struct RBasic*)((obj).value.p)) -#define RBASIC_KLASS(v) ((struct RClass *)(((struct RBasic*)((v).value.p))->c)) -#define ROBJECT(v) ((struct RObject*)((v).value.p)) -#define ROBJECT_IVPTR(v) (((struct RObject*)((v).value.p))->iv) -#define ROBJECT_NUMIV(v) (ROBJECT_IVPTR(v) ? ROBJECT_IVPTR(v)->size : 0) - -#endif /* MRUBY_OBJECT_H */ diff --git a/include/mruby/value.h b/include/mruby/value.h index 70e0e9b3f..90c011a7e 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -149,31 +149,56 @@ mrb_float_value(mrb_float f) #define mrb_fixnum(o) (o).value.i #define mrb_symbol(o) (o).value.sym #define mrb_object(o) ((struct RBasic *) (o).value.p) -#define FIXNUM_P(o) (mrb_type(o) == MRB_TT_FIXNUM) +#define mrb_fixnum_p(o) (mrb_type(o) == MRB_TT_FIXNUM) +#define mrb_float_p(o) (mrb_type(o) == MRB_TT_FLOAT) #define mrb_undef_p(o) (mrb_type(o) == MRB_TT_UNDEF) #define mrb_nil_p(o) (mrb_type(o) == MRB_TT_FALSE && !(o).value.i) +#define mrb_symbol_p(o) (mrb_type(o) == MRB_TT_SYMBOL) +#define mrb_array_p(o) (mrb_type(o) == MRB_TT_ARRAY) +#define mrb_string_p(o) (mrb_type(o) == MRB_TT_STRING) +#define mrb_hash_p(o) (mrb_type(o) == MRB_TT_HASH) #define mrb_test(o) (mrb_type(o) != MRB_TT_FALSE) -#include "mruby/object.h" +#define MRB_OBJECT_HEADER \ + enum mrb_vtype tt:8;\ + unsigned int color:3;\ + unsigned int flags:21;\ + struct RClass *c;\ + struct RBasic *gcnext + +/* white: 011, black: 100, gray: 000 */ +#define MRB_GC_GRAY 0 +#define MRB_GC_WHITE_A 1 +#define MRB_GC_WHITE_B (1 << 1) +#define MRB_GC_BLACK (1 << 2) +#define MRB_GC_WHITES (MRB_GC_WHITE_A | MRB_GC_WHITE_B) +#define MRB_GC_COLOR_MASK 7 + +#define paint_gray(o) ((o)->color = MRB_GC_GRAY) +#define paint_black(o) ((o)->color = MRB_GC_BLACK) +#define paint_white(o) ((o)->color = MRB_GC_WHITES) +#define paint_partial_white(s, o) ((o)->color = (s)->current_white_part) +#define is_gray(o) ((o)->color == MRB_GC_GRAY) +#define is_white(o) ((o)->color & MRB_GC_WHITES) +#define is_black(o) ((o)->color & MRB_GC_BLACK) +#define is_dead(s, o) (((o)->color & other_white_part(s) & MRB_GC_WHITES) || (o)->tt == MRB_TT_FREE) +#define flip_white_part(s) ((s)->current_white_part = other_white_part(s)) +#define other_white_part(s) ((s)->current_white_part ^ MRB_GC_WHITES) + +struct RBasic { + MRB_OBJECT_HEADER; +}; -#define IMMEDIATE_P(x) (mrb_type(x) <= MRB_TT_MAIN) -#define SPECIAL_CONST_P(x) IMMEDIATE_P(x) -#define SYMBOL_P(o) (mrb_type(o) == MRB_TT_SYMBOL) -#define RTEST(o) mrb_test(o) +#define mrb_basic(v) ((struct RBasic*)((v).value.p)) -#define FL_ABLE(x) (!SPECIAL_CONST_P(x)) -#define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0) -#define FL_ANY(x,f) FL_TEST(x,f) -#define FL_ALL(x,f) (FL_TEST(x,f) == (f)) -#define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0) -#define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0) +struct RObject { + MRB_OBJECT_HEADER; + struct iv_tbl *iv; +}; -static inline mrb_int -mrb_special_const_p(mrb_value obj) -{ - if (SPECIAL_CONST_P(obj)) return 1; - return 0; -} +#define mrb_obj_ptr(v) ((struct RObject*)((v).value.p)) +#define mrb_immediate_p(x) (mrb_type(x) <= MRB_TT_MAIN) +#define mrb_special_const_p(x) mrb_immediate_p(x) static inline mrb_value mrb_fixnum_value(mrb_int i) @@ -197,7 +222,7 @@ static inline mrb_value mrb_obj_value(void *p) { mrb_value v; - struct RBasic *b = (struct RBasic*) p; + struct RBasic *b = (struct RBasic*)p; MRB_SET_VALUE(v, b->tt, value.p, p); return v; |
