diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-08-14 03:09:04 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-08-14 03:09:04 +0900 |
| commit | e74600c919cdadab1b4e605e50181f8cdafe7ab3 (patch) | |
| tree | 658b51260b2dc6609bdbde66cd09adad6a3a8756 | |
| parent | cda1709a35ad7d495ec1a08793cd88b78e20c444 (diff) | |
| download | mruby-e74600c919cdadab1b4e605e50181f8cdafe7ab3.tar.gz mruby-e74600c919cdadab1b4e605e50181f8cdafe7ab3.zip | |
move mrb_value def to mruby/value.h
| -rw-r--r-- | include/mruby.h | 149 | ||||
| -rw-r--r-- | include/mruby/object.h | 11 | ||||
| -rw-r--r-- | include/mruby/value.h | 159 |
3 files changed, 161 insertions, 158 deletions
diff --git a/include/mruby.h b/include/mruby.h index 380c5f24c..6257bee4d 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -35,154 +35,7 @@ extern "C" { #include <stdlib.h> #include "mrbconf.h" -enum mrb_vtype { - MRB_TT_FALSE = 0, /* 0 */ - MRB_TT_FREE, /* 1 */ - MRB_TT_TRUE, /* 2 */ - MRB_TT_FIXNUM, /* 3 */ - MRB_TT_SYMBOL, /* 4 */ - MRB_TT_UNDEF, /* 5 */ - MRB_TT_FLOAT, /* 6 */ - MRB_TT_OBJECT, /* 7 */ - MRB_TT_CLASS, /* 8 */ - MRB_TT_MODULE, /* 9 */ - MRB_TT_ICLASS, /* 10 */ - MRB_TT_SCLASS, /* 11 */ - MRB_TT_PROC, /* 12 */ - MRB_TT_ARRAY, /* 13 */ - MRB_TT_HASH, /* 14 */ - MRB_TT_STRING, /* 15 */ - MRB_TT_RANGE, /* 16 */ - MRB_TT_REGEX, /* 17 */ - MRB_TT_STRUCT, /* 18 */ - MRB_TT_EXCEPTION, /* 19 */ - MRB_TT_MATCH, /* 20 */ - MRB_TT_FILE, /* 21 */ - MRB_TT_ENV, /* 22 */ - MRB_TT_DATA, /* 23 */ - MRB_TT_MAXDEFINE /* 24 */ -}; - -typedef struct mrb_value { - union { - mrb_float f; - void *p; - mrb_int i; - mrb_sym sym; - } value; - enum mrb_vtype tt:8; -} mrb_value; - -#define mrb_type(o) (o).tt -#define mrb_nil_p(o) ((o).tt == MRB_TT_FALSE && !(o).value.i) -#define mrb_test(o) ((o).tt != MRB_TT_FALSE) -#define mrb_fixnum(o) (o).value.i -#define mrb_float(o) (o).value.f -#define mrb_symbol(o) (o).value.sym -#define mrb_object(o) ((struct RBasic *) (o).value.p) -#define FIXNUM_P(o) ((o).tt == MRB_TT_FIXNUM) -#define mrb_undef_p(o) ((o).tt == MRB_TT_UNDEF) - -#include "mruby/object.h" - -#define IMMEDIATE_P(x) (mrb_type(x) <= MRB_TT_FLOAT) -#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 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) - -static inline mrb_int -mrb_special_const_p(mrb_value obj) -{ - if (SPECIAL_CONST_P(obj)) return 1; - return 0; -} -static inline mrb_value -mrb_fixnum_value(mrb_int i) -{ - mrb_value v; - - v.tt = MRB_TT_FIXNUM; - v.value.i = i; - return v; -} - -static inline mrb_value -mrb_float_value(mrb_float f) -{ - mrb_value v; - - v.tt = MRB_TT_FLOAT; - v.value.f = f; - return v; -} - -static inline mrb_value -mrb_symbol_value(mrb_sym i) -{ - mrb_value v; - - v.tt = MRB_TT_SYMBOL; - v.value.sym = i; - return v; -} - -static inline mrb_value -mrb_obj_value(void *p) -{ - mrb_value v; - struct RBasic *b = (struct RBasic*) p; - - v.tt = b->tt; - v.value.p = p; - return v; -} - -static inline mrb_value -mrb_false_value(void) -{ - mrb_value v; - - v.tt = MRB_TT_FALSE; - v.value.i = 1; - return v; -} - -static inline mrb_value -mrb_nil_value(void) -{ - mrb_value v; - - v.tt = MRB_TT_FALSE; - v.value.i = 0; - return v; -} - -static inline mrb_value -mrb_true_value(void) -{ - mrb_value v; - - v.tt = MRB_TT_TRUE; - v.value.i = 1; - return v; -} - -static inline mrb_value -mrb_undef_value(void) -{ - mrb_value v; - - v.tt = MRB_TT_UNDEF; - v.value.i = 0; - return v; -} +#include "mruby/value.h" typedef int32_t mrb_code; diff --git a/include/mruby/object.h b/include/mruby/object.h index e42a5f428..19da3ebef 100644 --- a/include/mruby/object.h +++ b/include/mruby/object.h @@ -1,5 +1,5 @@ /* -** object.h - Object, NilClass, TrueClass, FalseClass class +** mruby/object.h - Object, NilClass, TrueClass, FalseClass class ** ** See Copyright Notice in mruby.h */ @@ -7,10 +7,6 @@ #ifndef MRUBY_OBJECT_H #define MRUBY_OBJECT_H -#if defined(__cplusplus) -extern "C" { -#endif - #define MRUBY_OBJECT_HEADER \ enum mrb_vtype tt:8; \ unsigned int color:3;\ @@ -18,7 +14,6 @@ extern "C" { struct RClass *c;\ struct RBasic *gcnext - /* white: 011, black: 100, gray: 000 */ #define MRB_GC_GRAY 0 #define MRB_GC_WHITE_A 1 @@ -54,8 +49,4 @@ struct RObject { #define ROBJECT_IVPTR(v) (((struct RObject*)((v).value.p))->iv) #define ROBJECT_NUMIV(v) (ROBJECT_IVPTR(v) ? ROBJECT_IVPTR(v)->size : 0) -#if defined(__cplusplus) -} /* extern "C" { */ -#endif - #endif /* MRUBY_OBJECT_H */ diff --git a/include/mruby/value.h b/include/mruby/value.h new file mode 100644 index 000000000..2c384fa4d --- /dev/null +++ b/include/mruby/value.h @@ -0,0 +1,159 @@ +/* +** mruby/value.h - mrb_value definition +** +** See Copyright Notice in mruby.h +*/ + +#ifndef MRUBY_VALUE_H +#define MRUBY_VALUE_H + +enum mrb_vtype { + MRB_TT_FALSE = 0, /* 0 */ + MRB_TT_FREE, /* 1 */ + MRB_TT_TRUE, /* 2 */ + MRB_TT_FIXNUM, /* 3 */ + MRB_TT_SYMBOL, /* 4 */ + MRB_TT_UNDEF, /* 5 */ + MRB_TT_FLOAT, /* 6 */ + MRB_TT_OBJECT, /* 7 */ + MRB_TT_CLASS, /* 8 */ + MRB_TT_MODULE, /* 9 */ + MRB_TT_ICLASS, /* 10 */ + MRB_TT_SCLASS, /* 11 */ + MRB_TT_PROC, /* 12 */ + MRB_TT_ARRAY, /* 13 */ + MRB_TT_HASH, /* 14 */ + MRB_TT_STRING, /* 15 */ + MRB_TT_RANGE, /* 16 */ + MRB_TT_REGEX, /* 17 */ + MRB_TT_STRUCT, /* 18 */ + MRB_TT_EXCEPTION, /* 19 */ + MRB_TT_MATCH, /* 20 */ + MRB_TT_FILE, /* 21 */ + MRB_TT_ENV, /* 22 */ + MRB_TT_DATA, /* 23 */ + MRB_TT_MAXDEFINE /* 24 */ +}; + +typedef struct mrb_value { + union { + mrb_float f; + void *p; + mrb_int i; + mrb_sym sym; + } value; + enum mrb_vtype tt:8; +} mrb_value; + +#define mrb_type(o) (o).tt +#define mrb_nil_p(o) ((o).tt == MRB_TT_FALSE && !(o).value.i) +#define mrb_test(o) ((o).tt != MRB_TT_FALSE) +#define mrb_fixnum(o) (o).value.i +#define mrb_float(o) (o).value.f +#define mrb_symbol(o) (o).value.sym +#define mrb_object(o) ((struct RBasic *) (o).value.p) +#define FIXNUM_P(o) ((o).tt == MRB_TT_FIXNUM) +#define mrb_undef_p(o) ((o).tt == MRB_TT_UNDEF) + +#include "mruby/object.h" + +#define IMMEDIATE_P(x) (mrb_type(x) <= MRB_TT_FLOAT) +#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 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) + +static inline mrb_int +mrb_special_const_p(mrb_value obj) +{ + if (SPECIAL_CONST_P(obj)) return 1; + return 0; +} +static inline mrb_value +mrb_fixnum_value(mrb_int i) +{ + mrb_value v; + + v.tt = MRB_TT_FIXNUM; + v.value.i = i; + return v; +} + +static inline mrb_value +mrb_float_value(mrb_float f) +{ + mrb_value v; + + v.tt = MRB_TT_FLOAT; + v.value.f = f; + return v; +} + +static inline mrb_value +mrb_symbol_value(mrb_sym i) +{ + mrb_value v; + + v.tt = MRB_TT_SYMBOL; + v.value.sym = i; + return v; +} + +static inline mrb_value +mrb_obj_value(void *p) +{ + mrb_value v; + struct RBasic *b = (struct RBasic*) p; + + v.tt = b->tt; + v.value.p = p; + return v; +} + +static inline mrb_value +mrb_false_value(void) +{ + mrb_value v; + + v.tt = MRB_TT_FALSE; + v.value.i = 1; + return v; +} + +static inline mrb_value +mrb_nil_value(void) +{ + mrb_value v; + + v.tt = MRB_TT_FALSE; + v.value.i = 0; + return v; +} + +static inline mrb_value +mrb_true_value(void) +{ + mrb_value v; + + v.tt = MRB_TT_TRUE; + v.value.i = 1; + return v; +} + +static inline mrb_value +mrb_undef_value(void) +{ + mrb_value v; + + v.tt = MRB_TT_UNDEF; + v.value.i = 0; + return v; +} + +#endif /* MRUBY_OBJECT_H */ |
