Sha256: b250f2338786e6cf5e640635d98861946c6ef01106551b682e8c1c018abb4d6f
Contents?: true
Size: 1.99 KB
Versions: 3
Compression:
Stored size: 1.99 KB
Contents
require_relative "../gen/erbpp_gsl" class DefInterp < DefGslClass include ErbppGsl types = ErbppGsl.read_type INTERP_TYPES = types.select{|s| /gsl_interp_/ =~ s} INTERP2D_TYPES = types.select{|s| /gsl_interp2d_/ =~ s} def lookup(h) dblbk = [dbl, /\[\]$/] case h when FM(name:/_free$/); false when FM(tp,*[dblbk]*3,szt,szt,name:/_init$/); "interp2d_new" when FM(tp,*[dblbk]*2,szt,name:/_init$/); "interp_new" when FM(name:"gsl_interp_bsearch"); "interp_bsearch" when FM(tp, type:str); "c_str_f_void" when FM(tp, type:uint); "c_uint_f_void" when FM(tp, dbl, /accel/, type:dbl); "spline_eval" when FM(tp,*[dbl]*2, /accel/, type:dbl); "spline_integ" when FM(tp,*[dbl]*2,*[/accel/]*2,type:dbl); "spline2d_eval" when FM(name:"gsl_interp_accel_alloc"); "c_new_void" when FM(tp); "c_self_f_void" end end def check_func(h) if t = lookup(h) m = h[:func_name].sub(/^gsl_[^_]+_(accel_)?/,"") DefMethod.new(self, t, name:m, **h) def_type_new(h) return true end $stderr.puts "skip #{h[:func_name]}" false end def def_type_new(h) case h[:func_name] when "gsl_interp_init" t = "interp_type_new" INTERP_TYPES.each do |v| st = v.sub(/^gsl_interp_/,"") DefSubclassNew.new(self, t, v, st, **h) end when "gsl_spline_init" t = "interp_type_new" INTERP_TYPES.each do |v| st = v.sub(/^gsl_interp_/,"") DefSubclassNew.new(self, t, v, st, **h) end when "gsl_interp2d_init" t = "interp2d_type_new" INTERP2D_TYPES.each do |v| st = v.sub(/^gsl_interp2d_/,"") DefSubclassNew.new(self, t, v, st, **h) end when "gsl_spline2d_init" t = "interp2d_type_new" INTERP2D_TYPES.each do |v| st = v.sub(/^gsl_interp2d_/,"") DefSubclassNew.new(self, t, v, st, **h) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
numo-gsl-0.1.2 | ext/numo/gsl/interp/parse_interp.rb |
numo-gsl-0.1.1 | ext/numo/gsl/interp/parse_interp.rb |
numo-gsl-0.1.0 | ext/numo/gsl/interp/parse_interp.rb |