summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-12-26 06:28:29 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-12-26 06:28:29 +0000
commitd7d1e344f5e2cb0f89f8d649544ad73df80fe01c (patch)
tree879c1187fc84a05f6e803b6652d2586ff5b149b4 /ext
parent5fd0076871f6dedd95fdad539e9602a3d993e4a5 (diff)
tcltklib.c: rb_path2class
* ext/tk/tcltklib.c (ip_ruby_cmd_receiver_const_get): simply use rb_path2class() to get a class/module from its name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r--ext/tk/tcltklib.c55
1 files changed, 1 insertions, 54 deletions
diff --git a/ext/tk/tcltklib.c b/ext/tk/tcltklib.c
index 2d45f7511b..06b88af1d3 100644
--- a/ext/tk/tcltklib.c
+++ b/ext/tk/tcltklib.c
@@ -3489,58 +3489,11 @@ ip_ruby_cmd_core(arg)
return ret;
}
-#define SUPPORT_NESTED_CONST_AS_IP_RUBY_CMD_RECEIVER 1
-
static VALUE
ip_ruby_cmd_receiver_const_get(name)
char *name;
{
- volatile VALUE klass = rb_cObject;
-#if 0
- char *head, *tail;
-#endif
- int state;
-
-#if SUPPORT_NESTED_CONST_AS_IP_RUBY_CMD_RECEIVER
- klass = rb_eval_string_protect(name, &state);
- if (state) {
- return Qnil;
- } else {
- return klass;
- }
-#else
- return rb_const_get(klass, rb_intern(name));
-#endif
-
- /* TODO!!!!!! */
- /* support nest of classes/modules */
-
- /* return rb_eval_string(name); */
- /* return rb_eval_string_protect(name, &state); */
-
-#if 0 /* doesn't work!! (fail to autoload?) */
- /* duplicate */
- head = name = strdup(name);
-
- /* has '::' at head ? */
- if (*head == ':') head += 2;
- tail = head;
-
- /* search */
- while(*tail) {
- if (*tail == ':') {
- *tail = '\0';
- klass = rb_const_get(klass, rb_intern(head));
- tail += 2;
- head = tail;
- } else {
- tail++;
- }
- }
-
- free(name);
- return rb_const_get(klass, rb_intern(head));
-#endif
+ return rb_path2class(name);
}
static VALUE
@@ -3548,18 +3501,12 @@ ip_ruby_cmd_receiver_get(str)
char *str;
{
volatile VALUE receiver;
-#if !SUPPORT_NESTED_CONST_AS_IP_RUBY_CMD_RECEIVER
int state;
-#endif
if (str[0] == ':' || ('A' <= str[0] && str[0] <= 'Z')) {
/* class | module | constant */
-#if SUPPORT_NESTED_CONST_AS_IP_RUBY_CMD_RECEIVER
- receiver = ip_ruby_cmd_receiver_const_get(str);
-#else
receiver = rb_protect(ip_ruby_cmd_receiver_const_get, (VALUE)str, &state);
if (state) return Qnil;
-#endif
} else if (str[0] == '$') {
/* global variable */
receiver = rb_gv_get(str);