summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-03-27 07:10:58 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-03-27 07:10:58 +0000
commitb60a365763c4abce061a49c2e68b1105f81fe598 (patch)
tree48db04333ba63f89121ba05c2bcdc3e765af5343
parent2559f0d90ddf45f6cbaadc69a7a2fd7a3bfbf8a0 (diff)
* eval.c (rb_mod_define_method): should have clear method cache.
* eval.c (rb_mod_define_method): should have raised exception for type error. * ruby.h: changed "extern INLINE" to "static inline". git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog11
-rw-r--r--configure.in3
-rw-r--r--eval.c3
-rw-r--r--ext/tk/lib/tk.rb104
-rw-r--r--ext/tk/lib/tkcanvas.rb8
-rw-r--r--ext/tk/lib/tkentry.rb2
-rw-r--r--ext/tk/lib/tktext.rb8
-rw-r--r--ruby.h20
-rw-r--r--util.c1
-rw-r--r--version.h4
10 files changed, 124 insertions, 40 deletions
diff --git a/ChangeLog b/ChangeLog
index 63a7e346d5..4da62af8f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Tue Mar 27 15:00:54 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_mod_define_method): should have clear method cache.
+
+ * eval.c (rb_mod_define_method): should have raised exception for
+ type error.
+
+Tue Mar 27 14:48:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: changed "extern INLINE" to "static inline".
+
Mon Mar 26 23:19:33 2001 WATANABE Hirofumi <eban@ruby-lang.org>
* time.c (rb_strftime): check whether strftime returns empty string.
diff --git a/configure.in b/configure.in
index 5d299d88f6..fc46d4e975 100644
--- a/configure.in
+++ b/configure.in
@@ -378,9 +378,6 @@ AC_C_BIGENDIAN
AC_C_CONST
AC_C_CHAR_UNSIGNED
AC_C_INLINE
-if test "$ac_cv_c_inline" = no; then
- AC_DEFINE(NO_C_INLINE)
-fi
AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
[AC_TRY_RUN([
diff --git a/eval.c b/eval.c
index 50c99aabb8..ffa465a6b1 100644
--- a/eval.c
+++ b/eval.c
@@ -6730,6 +6730,7 @@ rb_mod_define_method(argc, argv, mod)
}
if (TYPE(body) != T_DATA) {
/* type error */
+ rb_raise(rb_eTypeError, "wrong argument type (expected Proc)");
}
if (RDATA(body)->dmark == (RUBY_DATA_FUNC)bm_mark) {
rb_add_method(mod, id, NEW_DMETHOD(method_unbind(body)), NOEX_PUBLIC);
@@ -6739,8 +6740,10 @@ rb_mod_define_method(argc, argv, mod)
}
else {
/* type error */
+ rb_raise(rb_eTypeError, "wrong argument type (expected Proc)");
}
+ rb_clear_cache_by_id(id);
return body;
}
diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb
index a088d5c493..873c823910 100644
--- a/ext/tk/lib/tk.rb
+++ b/ext/tk/lib/tk.rb
@@ -651,12 +651,76 @@ module TkCore
end
end
+module TkPackage
+ include TkCore
+ extend TkPackage
+
+ def forget(package)
+ tk_call('package', 'forget', package)
+ nil
+ end
+
+ def names
+ tk_split_simplelist(tk_call('package', 'names'))
+ end
+
+ def provide(package, version=nil)
+ if version
+ tk_call('package', 'provide', package, version)
+ nil
+ else
+ tk_call('package', 'provide', package)
+ end
+ end
+
+ def present(package, version=None)
+ tk_call('package', 'present', package, version)
+ end
+
+ def present_exact(package, version)
+ tk_call('package', 'present', '-exact', package, version)
+ end
+
+ def require(package, version=None)
+ tk_call('package', 'require', package, version)
+ end
+
+ def require_exact(package, version)
+ tk_call('package', 'require', '-exact', package, version)
+ end
+
+ def versions(package)
+ tk_split_simplelist(tk_call('package', 'versions', package))
+ end
+
+ def vcompare(version1, version2)
+ Integer(tk_call('package', 'vcompare', version1, version2))
+ end
+
+ def vsatisfies(version1, version2)
+ bool(tk_call('package', 'vsatisfies', version1, version2))
+ end
+end
+
module Tk
include TkCore
extend Tk
TCL_VERSION = INTERP._invoke("info", "tclversion")
TK_VERSION = INTERP._invoke("set", "tk_version")
+
+ TCL_PATCHLEVEL = INTERP._invoke("info", "patchlevel")
+ TK_PATCHLEVEL = INTERP._invoke("set", "tk_patchLevel")
+
+ TCL_LIBRARY = INTERP._invoke("set", "tcl_library")
+ TK_LIBRARY = INTERP._invoke("set", "tk_library")
+ LIBRARY = INTERP._invoke("info", "library")
+
+ TCL_PACKAGE_PATH = INTERP._invoke("set", "tcl_pkgPath")
+ AUTO_PATH = tk_split_simplelist(INTERP._invoke("set", "auto_path"))
+
+ PLATFORM = Hash[*tk_split_simplelist(INTERP._eval('array get tcl_platform'))]
+
JAPANIZED_TK = (INTERP._invoke("info", "commands", "kanji") != "")
def root
@@ -680,6 +744,10 @@ module Tk
tk_tcl2ruby(tk_call('focus', '-lastfor', win))
end
+ def Tk.strictMotif(bool=None)
+ bool(tk_call('set', 'tk_strictMotif', bool))
+ end
+
def Tk.show_kinsoku(mode='both')
begin
if /^8\.*/ === TK_VERSION && JAPANIZED_TK
@@ -710,11 +778,11 @@ module Tk
end
end
- def toUTF8(str,encoding)
+ def Tk.toUTF8(str,encoding)
INTERP._toUTF8(str,encoding)
end
- def fromUTF8(str,encoding)
+ def Tk.fromUTF8(str,encoding)
INTERP._fromUTF8(str,encoding)
end
@@ -1446,7 +1514,7 @@ module TkXIM
end
def useinputmethods(value=nil)
- TkXIM.useinputmethods(self, value=nil)
+ TkXIM.useinputmethods(self, value)
end
def imconfigure(window, slot, value=None)
@@ -2370,7 +2438,7 @@ class TkWindow<TkObject
def grid_propagate(mode=nil)
if mode
- tk_call('grid', 'propagate', epath, bool)
+ tk_call('grid', 'propagate', epath, mode)
else
bool(tk_call('grid', 'propagate', epath))
end
@@ -2708,8 +2776,16 @@ class TkScale<TkWindow
tk_call 'scale', path
end
- def get
- number(tk_send('get'))
+ def get(x=None, y=None)
+ number(tk_send('get', x, y))
+ end
+
+ def coords(val=None)
+ tk_split_list(tk_send('coords', val))
+ end
+
+ def identify(x, y)
+ tk_send('identify', x, y)
end
def set(val)
@@ -2744,8 +2820,8 @@ class TkScrollbar<TkWindow
number(tk_send('fraction', x, y))
end
- def identify(x=None, y=None)
- tk_send('fraction', x, y)
+ def identify(x, y)
+ tk_send('identify', x, y)
end
def get
@@ -2760,6 +2836,10 @@ class TkScrollbar<TkWindow
def set(first, last)
tk_send "set", first, last
end
+
+ def activate(element=None)
+ tk_send('activate', element)
+ end
end
class TkTextWin<TkWindow
@@ -3033,12 +3113,12 @@ class TkMenu<TkWindow
tk_send 'invoke', index
end
def insert(index, type, keys=nil)
- tk_send 'add', index, type, *hash_kv(keys)
+ tk_send 'insert', index, type, *hash_kv(keys)
end
def delete(index, last=None)
tk_send 'delete', index, last
end
- def popup(x, y, index=nil)
+ def popup(x, y, index=None)
tk_call 'tk_popup', path, x, y, index
end
def post(x, y)
@@ -3128,12 +3208,12 @@ class TkMenu<TkWindow
end
class TkMenuClone<TkMenu
- def initialize(parent, type=nil)
+ def initialize(parent, type=None)
unless parent.kind_of?(TkMenu)
fail ArgumentError, "parent must be TkMenu"
end
@parent = parent
- install_win(@parent)
+ install_win(@parent.path)
tk_call @parent.path, 'clone', @path, type
end
end
diff --git a/ext/tk/lib/tkcanvas.rb b/ext/tk/lib/tkcanvas.rb
index ff06e9305a..9b323e9cbb 100644
--- a/ext/tk/lib/tkcanvas.rb
+++ b/ext/tk/lib/tkcanvas.rb
@@ -172,7 +172,7 @@ class TkCanvas<TkWindow
end
def bbox(tagOrId, *tags)
- list(tk_send('bbox', tagid(tagOrId), *tags))
+ list(tk_send('bbox', tagid(tagOrId), *tags.collect{|t| tagid(t)}))
end
def itembind(tag, context, cmd=Proc.new, args=nil)
@@ -207,7 +207,7 @@ class TkCanvas<TkWindow
end
def delete(*args)
- tk_send 'delete', *args
+ tk_send 'delete', *args.collect{|t| tagid(t)}
end
alias remove delete
@@ -375,7 +375,7 @@ class TkCanvas<TkWindow
end
def lower(tag, below=None)
- tk_send 'lower', tagid(tag), below
+ tk_send 'lower', tagid(tag), tagid(below)
end
def move(tag, x, y)
@@ -387,7 +387,7 @@ class TkCanvas<TkWindow
end
def raise(tag, above=None)
- tk_send 'raise', tagid(tag), above
+ tk_send 'raise', tagid(tag), tagid(above)
end
def scale(tag, x, y, xs, ys)
diff --git a/ext/tk/lib/tkentry.rb b/ext/tk/lib/tkentry.rb
index 6b25be376b..7af3f26748 100644
--- a/ext/tk/lib/tkentry.rb
+++ b/ext/tk/lib/tkentry.rb
@@ -136,7 +136,7 @@ class TkEntry<TkLabel
tk_send 'selection', 'from', index
end
def selection_present()
- tk_send('selection', 'present') == 1
+ bool(tk_send('selection', 'present'))
end
def selection_range(s, e)
tk_send 'selection', 'range', s, e
diff --git a/ext/tk/lib/tktext.rb b/ext/tk/lib/tktext.rb
index bb3d537bc4..51b5d82b60 100644
--- a/ext/tk/lib/tktext.rb
+++ b/ext/tk/lib/tktext.rb
@@ -189,6 +189,14 @@ class TkText<TkTextWin
}
end
+ def mark_next(index)
+ tagid2obj(tk_send('mark', 'next', index))
+ end
+
+ def mark_previous(index)
+ tagid2obj(tk_send('mark', 'previous', index))
+ end
+
def window_names
tk_send('window', 'names').collect{|elt|
tagid2obj(elt)
diff --git a/ruby.h b/ruby.h
index 2a875e008e..03c9b61f3d 100644
--- a/ruby.h
+++ b/ruby.h
@@ -541,18 +541,7 @@ EXTERN VALUE rb_eNameError;
EXTERN VALUE rb_eSyntaxError;
EXTERN VALUE rb_eLoadError;
-#ifdef INLINE_DEFINE
-#define INLINE
-#else
-#define INLINE inline
-#endif
-
-extern INLINE VALUE rb_class_of _((VALUE));
-extern INLINE int rb_type _((VALUE));
-extern INLINE int rb_special_const_p _((VALUE));
-
-#if !defined(NO_C_INLINE) || defined(INLINE_DEFINE)
-extern INLINE VALUE
+static inline VALUE
#if defined(__cplusplus)
rb_class_of(VALUE obj)
#else
@@ -569,7 +558,7 @@ rb_class_of(obj)
return RBASIC(obj)->klass;
}
-extern INLINE int
+static inline int
#if defined(__cplusplus)
rb_type(VALUE obj)
#else
@@ -586,7 +575,7 @@ rb_type(obj)
return BUILTIN_TYPE(obj);
}
-extern INLINE int
+static inline int
#if defined(__cplusplus)
rb_special_const_p(VALUE obj)
#else
@@ -597,9 +586,6 @@ rb_special_const_p(obj)
if (SPECIAL_CONST_P(obj)) return Qtrue;
return Qfalse;
}
-#endif
-
-#undef INLINE
#include "intern.h"
diff --git a/util.c b/util.c
index 56059d4dc6..5bb9c87f13 100644
--- a/util.c
+++ b/util.c
@@ -16,7 +16,6 @@
#include "missing/file.h"
#endif
-#define INLINE_DEFINE
#include "ruby.h"
#include "util.h"
diff --git a/version.h b/version.h
index a63876f4b7..1ba0f06af8 100644
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
#define RUBY_VERSION "1.7.0"
-#define RUBY_RELEASE_DATE "2001-03-26"
+#define RUBY_RELEASE_DATE "2001-03-27"
#define RUBY_VERSION_CODE 170
-#define RUBY_RELEASE_CODE 20010326
+#define RUBY_RELEASE_CODE 20010327