summaryrefslogtreecommitdiffhomepage
path: root/src/object.c
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-06-20 11:11:37 +0900
committerdearblue <[email protected]>2021-06-20 11:11:37 +0900
commit0c5c04d7c8a64b10290c63c2d83b6055f99815f4 (patch)
tree85a51512c6e8da2a0aadc7568b91e9ae8dba4c5d /src/object.c
parentcc95e346fd9cc26bb6fc3fb7b1082d7d011ef664 (diff)
downloadmruby-0c5c04d7c8a64b10290c63c2d83b6055f99815f4.tar.gz
mruby-0c5c04d7c8a64b10290c63c2d83b6055f99815f4.zip
Use `MRB_VTYPE_FOREACH()` in `src/object.c`
Diffstat (limited to 'src/object.c')
-rw-r--r--src/object.c39
1 files changed, 5 insertions, 34 deletions
diff --git a/src/object.c b/src/object.c
index 7e2748018..8fe4688ac 100644
--- a/src/object.c
+++ b/src/object.c
@@ -316,44 +316,15 @@ mrb_init_object(mrb_state *mrb)
mrb_define_method(mrb, f, "inspect", false_to_s, MRB_ARGS_NONE());
}
-static const struct types {
- const enum mrb_vtype type;
- const char *name;
-} builtin_types[] = {
-/* {MRB_TT_NIL, "nil"}, */
- {MRB_TT_FALSE, "false"},
- {MRB_TT_TRUE, "true"},
- {MRB_TT_INTEGER,"Integer"},
- {MRB_TT_SYMBOL, "Symbol"}, /* :symbol */
- {MRB_TT_MODULE, "Module"},
- {MRB_TT_OBJECT, "Object"},
- {MRB_TT_CLASS, "Class"},
- {MRB_TT_ICLASS, "iClass"}, /* internal use: mixed-in module holder */
- {MRB_TT_SCLASS, "SClass"},
- {MRB_TT_PROC, "Proc"},
-#ifndef MRB_NO_FLOAT
- {MRB_TT_FLOAT, "Float"},
-#endif
- {MRB_TT_ARRAY, "Array"},
- {MRB_TT_HASH, "Hash"},
- {MRB_TT_STRING, "String"},
- {MRB_TT_RANGE, "Range"},
-/* {MRB_TT_BIGNUM, "Bignum"}, */
- {MRB_TT_DATA, "Data"}, /* internal use: wrapped C pointers */
-/* {MRB_TT_UNDEF, "undef"}, */ /* internal use: #undef; should not happen */
- {MRB_TT_MAXDEFINE, 0}
-};
-
static const char*
type_name(enum mrb_vtype t)
{
- const struct types *type = builtin_types;
-
- while (type->type < MRB_TT_MAXDEFINE) {
- if (type->type == t) return type->name;
- type++;
+ switch (t) {
+#define MRB_VTYPE_NAME(tt, type, name) case tt: return name;
+ MRB_VTYPE_FOREACH(MRB_VTYPE_NAME)
+#undef MRB_VTYPE_NAME
+ default: return NULL;
}
- return NULL;
}
static mrb_value