extract_curves 0.0.1-i586-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CVS/Entries +4 -0
- data/CVS/Repository +1 -0
- data/CVS/Root +1 -0
- data/bin/CVS/Entries +5 -0
- data/bin/CVS/Repository +1 -0
- data/bin/CVS/Root +1 -0
- data/bin/ec_rect2polar.rb +22 -0
- data/bin/ec_rev_lines.rb +5 -0
- data/bin/ec_sph_area.rb +30 -0
- data/bin/extract_curves.rb +2145 -0
- data/ruby_ext/CVS/Entries +1 -0
- data/ruby_ext/CVS/Repository +1 -0
- data/ruby_ext/CVS/Root +1 -0
- data/ruby_ext/pav/CVS/Entries +14 -0
- data/ruby_ext/pav/CVS/Repository +1 -0
- data/ruby_ext/pav/CVS/Root +1 -0
- data/ruby_ext/pav/extconf.rb +22 -0
- data/ruby_ext/pav/pav.so +0 -0
- data/ruby_libs/CVS/Entries +1 -0
- data/ruby_libs/CVS/Repository +1 -0
- data/ruby_libs/CVS/Root +1 -0
- data/ruby_libs/pav/CVS/Entries +20 -0
- data/ruby_libs/pav/CVS/Repository +1 -0
- data/ruby_libs/pav/CVS/Root +1 -0
- data/ruby_libs/pav/attr_cache.rb +211 -0
- data/ruby_libs/pav/attr_cache.t1.rb +32 -0
- data/ruby_libs/pav/cache.rb +31 -0
- data/ruby_libs/pav/dbg_log.rb +458 -0
- data/ruby_libs/pav/floatsio.rb +53 -0
- data/ruby_libs/pav/generator_cache.rb +165 -0
- data/ruby_libs/pav/gtk/CVS/Entries +4 -0
- data/ruby_libs/pav/gtk/CVS/Repository +1 -0
- data/ruby_libs/pav/gtk/CVS/Root +1 -0
- data/ruby_libs/pav/gtk/button.rb +130 -0
- data/ruby_libs/pav/gtk/icons.rb +87 -0
- data/ruby_libs/pav/gtk/toolbar.rb +192 -0
- data/ruby_libs/pav/heap.rb +54 -0
- data/ruby_libs/pav/icons/CVS/Entries +17 -0
- data/ruby_libs/pav/icons/CVS/Repository +1 -0
- data/ruby_libs/pav/icons/CVS/Root +1 -0
- data/ruby_libs/pav/icons/alt_handle.xpm +3832 -0
- data/ruby_libs/pav/icons/alt_handle_hover.xpm +3368 -0
- data/ruby_libs/pav/icons/alt_handle_pressed.xpm +3828 -0
- data/ruby_libs/pav/icons/extract_curves/CVS/Entries +6 -0
- data/ruby_libs/pav/icons/extract_curves/CVS/Repository +1 -0
- data/ruby_libs/pav/icons/extract_curves/CVS/Root +1 -0
- data/ruby_libs/pav/icons/extract_curves/extract_curves-icon-rgb.ppm +14 -0
- data/ruby_libs/pav/icons/extract_curves/extract_curves-logo-rgb.gif +0 -0
- data/ruby_libs/pav/icons/extract_curves/trace_mark.xpm +38 -0
- data/ruby_libs/pav/icons/handle.xpm +213 -0
- data/ruby_libs/pav/icons/next.xpm +29 -0
- data/ruby_libs/pav/icons/next_hover.xpm +315 -0
- data/ruby_libs/pav/icons/next_pressed.xpm +144 -0
- data/ruby_libs/pav/icons/prev.xpm +29 -0
- data/ruby_libs/pav/icons/prev_hover.xpm +315 -0
- data/ruby_libs/pav/icons/prev_pressed.xpm +144 -0
- data/ruby_libs/pav/icons/vnext.xpm +29 -0
- data/ruby_libs/pav/icons/vprev.xpm +29 -0
- data/ruby_libs/pav/numeric/CVS/Entries +2 -0
- data/ruby_libs/pav/numeric/CVS/Repository +1 -0
- data/ruby_libs/pav/numeric/CVS/Root +1 -0
- data/ruby_libs/pav/numeric/ext.rb +13 -0
- data/ruby_libs/pav/pav_find.rb +90 -0
- data/ruby_libs/pav/pix/CVS/Entries +11 -0
- data/ruby_libs/pav/pix/CVS/Repository +1 -0
- data/ruby_libs/pav/pix/CVS/Root +1 -0
- data/ruby_libs/pav/pix/aapix.rb +378 -0
- data/ruby_libs/pav/pix/blob.rb +543 -0
- data/ruby_libs/pav/pix/circle.rb +73 -0
- data/ruby_libs/pav/pix/contour/CVS/Entries +5 -0
- data/ruby_libs/pav/pix/contour/CVS/Repository +1 -0
- data/ruby_libs/pav/pix/contour/CVS/Root +1 -0
- data/ruby_libs/pav/pix/contour/calc_situations.rb +9 -0
- data/ruby_libs/pav/pix/contour/carp_calc.rb +212 -0
- data/ruby_libs/pav/pix/contour/situations.dmp +0 -0
- data/ruby_libs/pav/pix/contour/situations.rb +21 -0
- data/ruby_libs/pav/pix/contour.rb +644 -0
- data/ruby_libs/pav/pix/curve.rb +1508 -0
- data/ruby_libs/pav/pix/img_obj.rb +751 -0
- data/ruby_libs/pav/pix/node.rb +712 -0
- data/ruby_libs/pav/pix/node_grp.rb +853 -0
- data/ruby_libs/pav/pix/shaved_core.rb +534 -0
- data/ruby_libs/pav/pix/subpix.rb +212 -0
- data/ruby_libs/pav/pix.rb +402 -0
- data/ruby_libs/pav/rand_accessible.rb +16 -0
- data/ruby_libs/pav/rangeset.rb +63 -0
- data/ruby_libs/pav/search.rb +210 -0
- data/ruby_libs/pav/set.rb +20 -0
- data/ruby_libs/pav/string/CVS/Entries +6 -0
- data/ruby_libs/pav/string/CVS/Repository +1 -0
- data/ruby_libs/pav/string/CVS/Root +1 -0
- data/ruby_libs/pav/string/bits.rb +523 -0
- data/ruby_libs/pav/string/ext.rb +58 -0
- data/ruby_libs/pav/string/observable.rb +155 -0
- data/ruby_libs/pav/string/text.rb +79 -0
- data/ruby_libs/pav/string/words.rb +42 -0
- data/ruby_libs/pav/sub_arr.rb +55 -0
- data/ruby_libs/pav/traced_obj.rb +79 -0
- metadata +147 -0
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            D/pav////
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            extract-curves/ruby_ext
         | 
    
        data/ruby_ext/CVS/Root
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            :ext:pavpen@rubyforge.org:/var/cvs/extract-curves
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            /Makefile/1.1.1.1/Tue Nov 15 17:32:09 2005//
         | 
| 2 | 
            +
            /Makefile.mingw32/1.1.1.1/Tue Nov 15 17:32:09 2005//
         | 
| 3 | 
            +
            /cstr.c/1.1.1.1/Tue Nov 15 17:32:09 2005//
         | 
| 4 | 
            +
            /cstr.h/1.1.1.1/Tue Nov 15 17:32:08 2005//
         | 
| 5 | 
            +
            /extconf.rb/1.1.1.1/Tue Nov 15 17:32:08 2005//
         | 
| 6 | 
            +
            /pav.c/1.1.1.1/Tue Nov 15 17:32:09 2005//
         | 
| 7 | 
            +
            /pgtk.c/1.1.1.1/Tue Nov 15 17:32:08 2005//
         | 
| 8 | 
            +
            /pgtk.h/1.1.1.1/Tue Nov 15 17:32:09 2005//
         | 
| 9 | 
            +
            /pix.c/1.1.1.1/Tue Nov 15 17:32:08 2005//
         | 
| 10 | 
            +
            /pix.h/1.1.1.1/Tue Nov 15 17:32:09 2005//
         | 
| 11 | 
            +
            /rbconfig.rb/1.1.1.1/Tue Nov 15 17:32:09 2005//
         | 
| 12 | 
            +
            /t.rb/1.1.1.1/Tue Nov 15 17:32:08 2005//
         | 
| 13 | 
            +
            /t1.rb/1.1.1.1/Tue Nov 15 17:32:09 2005//
         | 
| 14 | 
            +
            D
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            extract-curves/ruby_ext/pav
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            :ext:pavpen@rubyforge.org:/var/cvs/extract-curves
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            #!/usr/bin/ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # To cross-compile for Win32 on Linux:
         | 
| 4 | 
            +
            # 	shell$ export PKG_CONFIG_PATH=/devel/target/mswin32/lib/pkgconfig
         | 
| 5 | 
            +
            # 	shell$ export TARGET_PLATFORM_RUBYLIB=/devel/target/mswin32/lib/ruby/site_ruby/1.8:/devel/target/mswin32/lib/ruby/site_ruby/1.8/i386-msvcrt:/devel/target/mswin32/lib/ruby/1.8:/devel/target/mswin32/lib/ruby/1.8/i386-target-mswin32
         | 
| 6 | 
            +
            # 	shell$ ruby1.8 extconf.rb
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            if targ_rb_lib_paths = ENV['TARGET_PLATFORM_RUBYLIB']
         | 
| 9 | 
            +
            	targ_rb_lib_paths.split(':').reverse_each { |lpath| $:.unshift(lpath) }
         | 
| 10 | 
            +
            end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            #require 'rbconfig'
         | 
| 13 | 
            +
            #Config::CONFIG.keys.sort.each { |k| puts "#{k} = #{Config::CONFIG[k]}" }
         | 
| 14 | 
            +
            #puts Config::DESTDIR
         | 
| 15 | 
            +
            #puts Config::TOPDIR
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            require 'mkmf'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            have_header('string.h')
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            pkg_config('gobject-2.0 gdk-pixbuf-2.0 glib-2.0')
         | 
| 22 | 
            +
            create_makefile('pav')
         | 
    
        data/ruby_ext/pav/pav.so
    ADDED
    
    | Binary file | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            D/pav////
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            extract-curves/ruby_libs
         | 
    
        data/ruby_libs/CVS/Root
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            :ext:pavpen@rubyforge.org:/var/cvs/extract-curves
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            /attr_cache.rb/1.1.1.1/Tue Nov 15 17:32:12 2005//
         | 
| 2 | 
            +
            /attr_cache.t1.rb/1.1.1.1/Tue Nov 15 17:32:11 2005//
         | 
| 3 | 
            +
            /cache.rb/1.1.1.1/Tue Nov 15 17:32:12 2005//
         | 
| 4 | 
            +
            /dbg_log.rb/1.1.1.1/Tue Nov 15 17:32:12 2005//
         | 
| 5 | 
            +
            /floatsio.rb/1.1.1.1/Tue Nov 15 17:32:11 2005//
         | 
| 6 | 
            +
            /generator_cache.rb/1.1.1.1/Tue Nov 15 17:32:12 2005//
         | 
| 7 | 
            +
            /heap.rb/1.1.1.1/Tue Nov 15 17:32:11 2005//
         | 
| 8 | 
            +
            /pav_find.rb/1.1.1.1/Tue Nov 15 17:32:11 2005//
         | 
| 9 | 
            +
            /pix.rb/1.1.1.1/Tue Nov 15 17:32:12 2005//
         | 
| 10 | 
            +
            /rand_accessible.rb/1.1.1.1/Tue Nov 15 17:32:11 2005//
         | 
| 11 | 
            +
            /rangeset.rb/1.1.1.1/Tue Nov 15 17:32:12 2005//
         | 
| 12 | 
            +
            /search.rb/1.1.1.1/Tue Nov 15 17:32:12 2005//
         | 
| 13 | 
            +
            /set.rb/1.1.1.1/Tue Nov 15 17:32:11 2005//
         | 
| 14 | 
            +
            /sub_arr.rb/1.1.1.1/Tue Nov 15 17:32:12 2005//
         | 
| 15 | 
            +
            /traced_obj.rb/1.1.1.1/Tue Nov 15 17:32:11 2005//
         | 
| 16 | 
            +
            D/gtk////
         | 
| 17 | 
            +
            D/icons////
         | 
| 18 | 
            +
            D/numeric////
         | 
| 19 | 
            +
            D/pix////
         | 
| 20 | 
            +
            D/string////
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            extract-curves/ruby_libs/pav
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            :ext:pavpen@rubyforge.org:/var/cvs/extract-curves
         | 
| @@ -0,0 +1,211 @@ | |
| 1 | 
            +
            require 'pav/dbg_log'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class Module
         | 
| 4 | 
            +
            	# Like +once+ from the Ruby Book (Pragmatic Programmer's Guide):
         | 
| 5 | 
            +
            	def cache_attr!(*ids)
         | 
| 6 | 
            +
            	  res = []
         | 
| 7 | 
            +
            	  for id in ids
         | 
| 8 | 
            +
            	  	id_orig = "__ca_#{id.to_i}_o__".to_sym
         | 
| 9 | 
            +
            		id_val = "@__ca_#{id.to_i}_val__".to_sym
         | 
| 10 | 
            +
            		self.module_eval <<-"end_eval"
         | 
| 11 | 
            +
            		  #{if self.public_instance_methods.member?(id_orig.id2name)
         | 
| 12 | 
            +
            		  	res << id
         | 
| 13 | 
            +
            		  	"" 
         | 
| 14 | 
            +
            		  else
         | 
| 15 | 
            +
            		  	"alias_method #{id_orig.inspect}, #{id.inspect}"
         | 
| 16 | 
            +
            		  end}
         | 
| 17 | 
            +
            		  def #{id.id2name}(*args, &block)
         | 
| 18 | 
            +
            			tc = Thread::critical=(true)
         | 
| 19 | 
            +
            			def self.#{id.id2name}(*args, &block)
         | 
| 20 | 
            +
            				#{id_val.id2name}
         | 
| 21 | 
            +
            			end
         | 
| 22 | 
            +
            			$PDbgLog.sig_wrapped_call
         | 
| 23 | 
            +
            			#{id_val.id2name} = #{id_orig.id2name}(*args, &block)
         | 
| 24 | 
            +
            			$PDbgLog.sig_wrapped_return
         | 
| 25 | 
            +
            			Thread::critical = tc
         | 
| 26 | 
            +
            			#{id_val.id2name}
         | 
| 27 | 
            +
            		  end
         | 
| 28 | 
            +
            		end_eval
         | 
| 29 | 
            +
            	  end
         | 
| 30 | 
            +
            	  res
         | 
| 31 | 
            +
            	end
         | 
| 32 | 
            +
            	
         | 
| 33 | 
            +
            	def freeze_cache_attr!(*ids)
         | 
| 34 | 
            +
            	  res = []
         | 
| 35 | 
            +
            	  for id in ids
         | 
| 36 | 
            +
            	  	id_orig = "__ca_#{id.to_i}_o__".to_sym
         | 
| 37 | 
            +
            		id_val = "@__ca_#{id.to_i}_val__".to_sym
         | 
| 38 | 
            +
            		self.module_eval <<-"end_eval"
         | 
| 39 | 
            +
            		  #{if self.public_instance_methods.member?(id_orig.id2name)
         | 
| 40 | 
            +
            		  	res << id
         | 
| 41 | 
            +
            		  	"" 
         | 
| 42 | 
            +
            		  else
         | 
| 43 | 
            +
            		  	"alias_method #{id_orig.inspect}, #{id.inspect}"
         | 
| 44 | 
            +
            		  end}
         | 
| 45 | 
            +
            		  def #{id.id2name}(*args, &block)
         | 
| 46 | 
            +
            			tc = Thread::critical=(true)
         | 
| 47 | 
            +
            			def self.#{id.id2name}(*args, &block)
         | 
| 48 | 
            +
            				#{id_val.id2name}
         | 
| 49 | 
            +
            			end
         | 
| 50 | 
            +
            			$PDbgLog.sig_wrapped_call
         | 
| 51 | 
            +
            			#{id_val.id2name} = #{id_orig.id2name}(*args, &block)
         | 
| 52 | 
            +
            			$PDbgLog.sig_wrapped_return
         | 
| 53 | 
            +
            			#{id_val.id2name}.freeze
         | 
| 54 | 
            +
            			Thread::critical = tc
         | 
| 55 | 
            +
            			#{id_val.id2name}
         | 
| 56 | 
            +
            		  end
         | 
| 57 | 
            +
            		end_eval
         | 
| 58 | 
            +
            	  end
         | 
| 59 | 
            +
            	  res
         | 
| 60 | 
            +
            	end
         | 
| 61 | 
            +
            	
         | 
| 62 | 
            +
            	def uncache_attr!(*ids)
         | 
| 63 | 
            +
            	  res = []
         | 
| 64 | 
            +
            	  for id in ids
         | 
| 65 | 
            +
            	  	id_orig = "__ca_#{id.to_i}_o__".to_sym
         | 
| 66 | 
            +
            		if !self.public_instance_methods.member?(id_orig.id2name)
         | 
| 67 | 
            +
            			res << id
         | 
| 68 | 
            +
            			next
         | 
| 69 | 
            +
            		end
         | 
| 70 | 
            +
            		self.module_eval <<-"end_eval"
         | 
| 71 | 
            +
            		  alias_method #{id.inspect}, #{id_orig.inspect}
         | 
| 72 | 
            +
            		  remove_method #{id_orig.inspect}
         | 
| 73 | 
            +
            		end_eval
         | 
| 74 | 
            +
            	  end
         | 
| 75 | 
            +
            	  res
         | 
| 76 | 
            +
            	end
         | 
| 77 | 
            +
            	
         | 
| 78 | 
            +
            	def cache_get!(*ids)
         | 
| 79 | 
            +
            		for id in ids
         | 
| 80 | 
            +
            		  self.module_eval <<-end_eval
         | 
| 81 | 
            +
            			def #{id.to_s['get_'.length...id.to_s.length]}
         | 
| 82 | 
            +
            				if (tmp = @cache_#{id.to_s})
         | 
| 83 | 
            +
            					return tmp
         | 
| 84 | 
            +
            				end
         | 
| 85 | 
            +
            				@cache_#{id.to_s} = self.#{id.to_s}
         | 
| 86 | 
            +
            			end
         | 
| 87 | 
            +
            		  end_eval
         | 
| 88 | 
            +
            		end
         | 
| 89 | 
            +
            	end
         | 
| 90 | 
            +
            	
         | 
| 91 | 
            +
            	def cache_get_lm!(*ids)
         | 
| 92 | 
            +
            		for id in ids
         | 
| 93 | 
            +
            		  self.module_eval <<-end_eval
         | 
| 94 | 
            +
            			def #{id.to_s['get_'.length...id.to_s.length]}(lm)
         | 
| 95 | 
            +
            				if (tmp = @cache_#{id.to_s}[lm])
         | 
| 96 | 
            +
            					return tmp
         | 
| 97 | 
            +
            				end
         | 
| 98 | 
            +
            				@cache_#{id.to_s}[lm] = self.#{id.to_s}(lm)
         | 
| 99 | 
            +
            			end
         | 
| 100 | 
            +
            		  end_eval
         | 
| 101 | 
            +
            		end
         | 
| 102 | 
            +
            	end
         | 
| 103 | 
            +
            end
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            module AttrCache
         | 
| 106 | 
            +
            	def uncache_attr!(*ids)
         | 
| 107 | 
            +
            	  res = []
         | 
| 108 | 
            +
            	  for id in ids
         | 
| 109 | 
            +
            	  	id_orig = "__ca_#{id.to_i}_o__".to_sym
         | 
| 110 | 
            +
            		id_val = "@__ca_#{id.to_i}_val__".to_sym
         | 
| 111 | 
            +
            		if !self.instance_variables.member?(id_val.id2name)
         | 
| 112 | 
            +
            			res << id
         | 
| 113 | 
            +
            			next
         | 
| 114 | 
            +
            		end
         | 
| 115 | 
            +
            		self.instance_eval <<-"end_eval"
         | 
| 116 | 
            +
            		  class <<self
         | 
| 117 | 
            +
            		  	alias_method #{id.inspect}, #{id_orig.inspect}
         | 
| 118 | 
            +
            		  end
         | 
| 119 | 
            +
            		end_eval
         | 
| 120 | 
            +
            	    	remove_instance_variable id_val
         | 
| 121 | 
            +
            	  end
         | 
| 122 | 
            +
            	  res
         | 
| 123 | 
            +
            	end
         | 
| 124 | 
            +
            	
         | 
| 125 | 
            +
            	def cache_attr!(*ids)
         | 
| 126 | 
            +
            	  res = []
         | 
| 127 | 
            +
            	  for id in ids
         | 
| 128 | 
            +
            	  	id_orig = "__ca_#{id.to_i}_o__".to_sym
         | 
| 129 | 
            +
            		id_val = "@__ca_#{id.to_i}_val__".to_sym
         | 
| 130 | 
            +
            		if self.instance_variables.member?(id_val.id2name)
         | 
| 131 | 
            +
            			res << id
         | 
| 132 | 
            +
            			next
         | 
| 133 | 
            +
            		end
         | 
| 134 | 
            +
            		self.instance_eval <<-"end_eval"
         | 
| 135 | 
            +
            		  class <<self
         | 
| 136 | 
            +
            		    alias_method #{id_orig.inspect}, #{id.inspect}
         | 
| 137 | 
            +
            		    def #{id.id2name}(*args, &block)
         | 
| 138 | 
            +
            			tc = Thread::critical=(true)
         | 
| 139 | 
            +
            			def self.#{id.id2name}(*args, &block)
         | 
| 140 | 
            +
            				#{id_val.id2name}
         | 
| 141 | 
            +
            			end
         | 
| 142 | 
            +
            			$PDbgLog.sig_wrapped_call
         | 
| 143 | 
            +
            			#{id_val.id2name} = #{id_orig.id2name}(*args, &block)
         | 
| 144 | 
            +
            			$PDbgLog.sig_wrapped_return
         | 
| 145 | 
            +
            			Thread::critical = tc
         | 
| 146 | 
            +
            			#{id_val.id2name}
         | 
| 147 | 
            +
            		    end
         | 
| 148 | 
            +
            		  end
         | 
| 149 | 
            +
            		end_eval
         | 
| 150 | 
            +
            	  end
         | 
| 151 | 
            +
            	  res
         | 
| 152 | 
            +
            	end
         | 
| 153 | 
            +
            	
         | 
| 154 | 
            +
            	def freeze_cache_attr!(*ids)
         | 
| 155 | 
            +
            	  res = []
         | 
| 156 | 
            +
            	  for id in ids
         | 
| 157 | 
            +
            	  	id_orig = "__ca_#{id.to_i}_o__".to_sym
         | 
| 158 | 
            +
            		id_val = "@__ca_#{id.to_i}_val__".to_sym
         | 
| 159 | 
            +
            		if self.instance_variables.member?(id_val.id2name)
         | 
| 160 | 
            +
            			res << id
         | 
| 161 | 
            +
            			next
         | 
| 162 | 
            +
            		end
         | 
| 163 | 
            +
            		self.instance_eval <<-"end_eval"
         | 
| 164 | 
            +
            		  class <<self
         | 
| 165 | 
            +
            		    alias_method #{id_orig.inspect}, #{id.inspect}
         | 
| 166 | 
            +
            		    def #{id.id2name}(*args, &block)
         | 
| 167 | 
            +
            			tc = Thread::critical=(true)
         | 
| 168 | 
            +
            			def self.#{id.id2name}(*args, &block)
         | 
| 169 | 
            +
            				#{id_val.id2name}
         | 
| 170 | 
            +
            			end
         | 
| 171 | 
            +
            			$PDbgLog.sig_wrapped_call
         | 
| 172 | 
            +
            			#{id_val.id2name} = #{id_orig.id2name}(*args, &block)
         | 
| 173 | 
            +
            			$PDbgLog.sig_wrapped_return
         | 
| 174 | 
            +
            			#{id_val.id2name}.freeze
         | 
| 175 | 
            +
            			Thread::critical = tc
         | 
| 176 | 
            +
            			#{id_val.id2name}
         | 
| 177 | 
            +
            		    end
         | 
| 178 | 
            +
            		  end
         | 
| 179 | 
            +
            		end_eval
         | 
| 180 | 
            +
            	  end
         | 
| 181 | 
            +
            	  res
         | 
| 182 | 
            +
            	end
         | 
| 183 | 
            +
            	
         | 
| 184 | 
            +
            	def kill_attr_cache!(*ids)
         | 
| 185 | 
            +
            	  res = []
         | 
| 186 | 
            +
            	  for id in ids
         | 
| 187 | 
            +
            	  	id_orig = "__ca_#{id.to_i}_o__".to_sym
         | 
| 188 | 
            +
            		id_val = "@__ca_#{id.to_i}_val__".to_sym
         | 
| 189 | 
            +
            		if !self.instance_variables.member?(id_val.id2name)
         | 
| 190 | 
            +
            			res << id
         | 
| 191 | 
            +
            			next
         | 
| 192 | 
            +
            		end
         | 
| 193 | 
            +
            		self.instance_eval <<-"end_eval"
         | 
| 194 | 
            +
            		  class <<self
         | 
| 195 | 
            +
            		    def #{id.id2name}(*args, &block)
         | 
| 196 | 
            +
            			tc = Thread::critical=(true)
         | 
| 197 | 
            +
            			def self.#{id.id2name}(*args, &block)
         | 
| 198 | 
            +
            				#{id_val.id2name}
         | 
| 199 | 
            +
            			end
         | 
| 200 | 
            +
            			$PDbgLog.sig_wrapped_call
         | 
| 201 | 
            +
            			#{id_val.id2name} = #{id_orig.id2name}(*args, &block)
         | 
| 202 | 
            +
            			$PDbgLog.sig_wrapped_return
         | 
| 203 | 
            +
            			Thread::critical = tc
         | 
| 204 | 
            +
            			#{id_val.id2name}
         | 
| 205 | 
            +
            		    end
         | 
| 206 | 
            +
            		  end
         | 
| 207 | 
            +
            		end_eval
         | 
| 208 | 
            +
            	  end
         | 
| 209 | 
            +
            	  res
         | 
| 210 | 
            +
            	end
         | 
| 211 | 
            +
            end
         | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            require 'pav/attr_cache'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class C
         | 
| 4 | 
            +
            	include AttrCache
         | 
| 5 | 
            +
            	
         | 
| 6 | 
            +
            	def f(x)
         | 
| 7 | 
            +
            		x
         | 
| 8 | 
            +
            	end
         | 
| 9 | 
            +
            	
         | 
| 10 | 
            +
            	cache_attr! :f
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            a = C.new
         | 
| 14 | 
            +
            b = C.new
         | 
| 15 | 
            +
            p a.f("a")
         | 
| 16 | 
            +
            p b.f("b")
         | 
| 17 | 
            +
            c = C.new
         | 
| 18 | 
            +
            d = C.new
         | 
| 19 | 
            +
            p c.f("c")
         | 
| 20 | 
            +
            p a.f(1)
         | 
| 21 | 
            +
            p b.f(2)
         | 
| 22 | 
            +
            p c.f(3)
         | 
| 23 | 
            +
            p d.uncache_attr!(:f)
         | 
| 24 | 
            +
            a.uncache_attr!(:f)
         | 
| 25 | 
            +
            p a.f(0)
         | 
| 26 | 
            +
            p a.f(1)
         | 
| 27 | 
            +
            p a.cache_attr!(:f)
         | 
| 28 | 
            +
            p a.f(2)
         | 
| 29 | 
            +
            p a.f(3)
         | 
| 30 | 
            +
            p a.kill_attr_cache!(:f)
         | 
| 31 | 
            +
            p a.f(4)
         | 
| 32 | 
            +
            p a.f(5)
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            #begin
         | 
| 2 | 
            +
              require 'pav/pav'
         | 
| 3 | 
            +
            #rescue LoadError
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require 'weakref'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class PCache
         | 
| 8 | 
            +
            	attr_reader :tbl, :args
         | 
| 9 | 
            +
            	
         | 
| 10 | 
            +
            	def initialize(*args)
         | 
| 11 | 
            +
            		@args = args
         | 
| 12 | 
            +
            		#@tbl = WeakRef.new(Hash.new(*@args))
         | 
| 13 | 
            +
            	end
         | 
| 14 | 
            +
            	
         | 
| 15 | 
            +
            	def method_missing(id, *args)
         | 
| 16 | 
            +
            		return @args[0]
         | 
| 17 | 
            +
            		gc_dis = GC.disable
         | 
| 18 | 
            +
            		unless @tbl.weakref_alive?
         | 
| 19 | 
            +
            			@tbl = WeakRef.new(Hash.new(*@args))
         | 
| 20 | 
            +
            		end
         | 
| 21 | 
            +
            		begin
         | 
| 22 | 
            +
            			res = @tbl.send(id, *args)
         | 
| 23 | 
            +
            		rescue WeakRef::RefError
         | 
| 24 | 
            +
            			res = @args[0]
         | 
| 25 | 
            +
            		end
         | 
| 26 | 
            +
            		GC.enable unless gc_dis
         | 
| 27 | 
            +
            		res
         | 
| 28 | 
            +
            	end
         | 
| 29 | 
            +
            end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            #end # require 'pav/pav'
         |