From e88d2cec1f896a5f23550dcdd5d1f7994e687b79 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 28 Feb 2002 06:53:33 +0000 Subject: * eval.c (rb_mod_include): load modules in argument order. * st.c (st_init_table_with_size): num_bins should be prime numbers (no decrement). * st.c (rehash): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2147 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 + eval.c | 10 +- ext/tk/lib/tk.rb | 471 ++++++++++++++++++++++++++++++++----------------- ext/tk/lib/tkcanvas.rb | 148 ++++------------ ext/tk/lib/tkentry.rb | 16 +- ext/tk/lib/tkfont.rb | 2 +- ext/tk/lib/tktext.rb | 125 ++----------- marshal.c | 1 + st.c | 13 +- 9 files changed, 397 insertions(+), 398 deletions(-) diff --git a/ChangeLog b/ChangeLog index 58827d24db..a58d25f919 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Wed Feb 27 16:30:50 2002 Yukihiro Matsumoto + + * eval.c (rb_mod_include): load modules in argument order. + + * st.c (st_init_table_with_size): num_bins should be prime numbers + (no decrement). + + * st.c (rehash): ditto. + Wed Feb 27 13:18:49 2002 WATANABE Hirofumi * io.c (READ_DATA_PENDING): uClibc support. diff --git a/eval.c b/eval.c index 14eae43ea6..7c6343fa41 100644 --- a/eval.c +++ b/eval.c @@ -5791,12 +5791,12 @@ rb_mod_include(argc, argv, module) VALUE *argv; VALUE module; { - int i; + while (argc--) { + VALUE m = argv[argc]; - for (i=0; ival}) + tagfont_configure(index, {key=>val}) else tk_call 'itemconfigure', index, "-#{key}", val end @@ -2995,109 +3228,15 @@ class TkListbox @@ -9,116 +9,18 @@ require "tk" require 'tkfont' module TkTreatCItemFont - def tagfont_configinfo(tagOrId) - if tagOrId.kind_of?(TkcItem) || tagOrId.kind_of?(TkcTag) - pathname = self.path + ';' + tagOrId.id.to_s - else - pathname = self.path + ';' + tagOrId.to_s - end - ret = TkFont.used_on(pathname) - if ret == nil - ret = TkFont.init_widget_font(pathname, - self.path, 'itemconfigure', tagOrId) - end - ret - end - alias tagfontobj tagfont_configinfo + include TkTreatItemFont - def tagfont_configure(tagOrId, slot) - if tagOrId.kind_of?(TkcItem) || tagOrId.kind_of?(TkcTag) - pathname = self.path + ';' + tagOrId.id.to_s - else - pathname = self.path + ';' + tagOrId.to_s - end - if (fnt = slot.delete('font')) - if fnt.kind_of? TkFont - return fnt.call_font_configure(pathname, - self.path,'itemconfigure',tagOrId,slot) - else - latintagfont_configure(tagOrId, fnt) if fnt - end - end - if (ltn = slot.delete('latinfont')) - latintagfont_configure(tagOrId, ltn) if ltn - end - if (ltn = slot.delete('asciifont')) - latintagfont_configure(tagOrId, ltn) if ltn - end - if (knj = slot.delete('kanjifont')) - kanjitagfont_configure(tagOrId, knj) if knj - end - - tk_call(self.path, 'itemconfigure', tagOrId, *hash_kv(slot)) if slot != {} - self + ItemCMD = ['itemconfigure', TkComm::None] + def __conf_cmd(idx) + ItemCMD[idx] end - def latintagfont_configure(tagOrId, ltn, keys=nil) - fobj = tagfontobj(tagOrId) - if ltn.kind_of? TkFont - conf = {} - ltn.latin_configinfo.each{|key,val| conf[key] = val if val != []} - if conf == {} - fobj.latin_replace(ltn) - fobj.latin_configure(keys) if keys - elsif keys - fobj.latin_configure(conf.update(keys)) - else - fobj.latin_configure(conf) - end - else - fobj.latin_replace(ltn) - end - end - alias asciitagfont_configure latintagfont_configure - - def kanjitagfont_configure(tagOrId, knj, keys=nil) - fobj = tagfontobj(tagOrId) - if knj.kind_of? TkFont - conf = {} - knj.kanji_configinfo.each{|key,val| conf[key] = val if val != []} - if conf == {} - fobj.kanji_replace(knj) - fobj.kanji_configure(keys) if keys - elsif keys - fobj.kanji_configure(conf.update(keys)) - else - fobj.kanji_configure(conf) - end - else - fobj.kanji_replace(knj) - end - end - - def tagfont_copy(tagOrId, window, wintag=nil) - if wintag - window.tagfontobj(wintag).configinfo.each{|key,value| - tagfontobj(tagOrId).configure(key,value) - } - tagfontobj(tagOrId).replace(window.tagfontobj(wintag).latin_font, - window.tagfontobj(wintag).kanji_font) - else - window.tagfont(tagOrId).configinfo.each{|key,value| - tagfontobj(tagOrId).configure(key,value) - } - tagfontobj(tagOrId).replace(window.fontobj.latin_font, - window.fontobj.kanji_font) - end - end - - def latintagfont_copy(tagOrId, window, wintag=nil) - if wintag - tagfontobj(tagOrId).latin_replace(window.tagfontobj(wintag).latin_font) - else - tagfontobj(tagOrId).latin_replace(window.fontobj.latin_font) - end - end - alias asciitagfont_copy latintagfont_copy - - def kanjitagfont_copy(tagOrId, window, wintag=nil) - if wintag - tagfontobj(tagOrId).kanji_replace(window.tagfontobj(wintag).kanji_font) + def __item_pathname(tagOrId) + if tagOrId.kind_of?(TkcItem) || tagOrId.kind_of?(TkcTag) + self.path + ';' + tagOrId.id.to_s else - tagfontobj(tagOrId).kanji_replace(window.fontobj.kanji_font) + self.path + ';' + tagOrId.to_s end end end @@ -133,8 +35,12 @@ class TkCanvasval}) + tagfont_configure(tag, {key=>val}) else tk_send 'tag', 'configure', tag, "-#{key}", val end diff --git a/marshal.c b/marshal.c index 28f54642a3..17d3a6979b 100644 --- a/marshal.c +++ b/marshal.c @@ -836,6 +836,7 @@ r_object(arg) case TYPE_FALSE: v = Qfalse; + break; case TYPE_FIXNUM: { diff --git a/st.c b/st.c index 5380a81e03..ebf398fd79 100644 --- a/st.c +++ b/st.c @@ -165,7 +165,7 @@ st_init_table_with_size(type, size) tbl = alloc(st_table); tbl->type = type; tbl->num_entries = 0; - tbl->num_bins = size-1; + tbl->num_bins = size; tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*)); return tbl; @@ -211,7 +211,7 @@ st_free_table(table) register st_table_entry *ptr, *next; int i; - for(i = 0; i <= table->num_bins; i++) { + for(i = 0; i < table->num_bins; i++) { ptr = table->bins[i]; while (ptr != 0) { next = ptr->next; @@ -267,7 +267,7 @@ st_lookup(table, key, value) #define ADD_DIRECT(table, key, value, hash_val, bin_pos)\ {\ st_table_entry *entry;\ - if (table->num_entries/(table->num_bins+1) > ST_DEFAULT_MAX_DENSITY) {\ + if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\ rehash(table);\ bin_pos = hash_val % table->num_bins;\ }\ @@ -328,8 +328,7 @@ rehash(table) new_num_bins = new_size(old_num_bins+1); new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*)); - new_num_bins--; - for(i = 0; i <= old_num_bins; i++) { + for(i = 0; i < old_num_bins; i++) { ptr = table->bins[i]; while (ptr != 0) { next = ptr->next; @@ -350,7 +349,7 @@ st_copy(old_table) { st_table *new_table; st_table_entry *ptr, *entry; - int i, num_bins = old_table->num_bins+1; + int i, num_bins = old_table->num_bins; new_table = alloc(st_table); if (new_table == 0) { @@ -487,7 +486,7 @@ st_foreach(table, func, arg) enum st_retval retval; int i; - for(i = 0; i <= table->num_bins; i++) { + for(i = 0; i < table->num_bins; i++) { last = 0; for(ptr = table->bins[i]; ptr != 0;) { retval = (*func)(ptr->key, ptr->record, arg); -- cgit v1.2.3