From d7d1e344f5e2cb0f89f8d649544ad73df80fe01c Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 26 Dec 2014 06:28:29 +0000 Subject: 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 --- ext/tk/tcltklib.c | 55 +------------------------------------------------------ 1 file changed, 1 insertion(+), 54 deletions(-) (limited to 'ext') 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); -- cgit v1.2.3