ruby-dcl 1.6.2
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +321 -0
- data/GenWrapper/Makefile +14 -0
- data/GenWrapper/cproto2init.rb +41 -0
- data/GenWrapper/dcl_narrayed_funcs.rb +181 -0
- data/GenWrapper/dcl_rb_footing +29 -0
- data/GenWrapper/dcl_rb_heading +129 -0
- data/GenWrapper/def.rb +20 -0
- data/GenWrapper/elim_ary_size.rb +398 -0
- data/GenWrapper/etc/Mk_proto +375 -0
- data/GenWrapper/etc/dcl_gen +13 -0
- data/GenWrapper/etc/p_header +63 -0
- data/GenWrapper/etc/p_init +410 -0
- data/GenWrapper/pparse.rb +137 -0
- data/GenWrapper/proto/Makefile +35 -0
- data/GenWrapper/proto/grph1_00 +17 -0
- data/GenWrapper/proto/grph1_csgi.fp +27 -0
- data/GenWrapper/proto/grph1_scpack.fp +442 -0
- data/GenWrapper/proto/grph1_sgpack.fp +1406 -0
- data/GenWrapper/proto/grph1_slpack.fp +316 -0
- data/GenWrapper/proto/grph1_stpack.fp +411 -0
- data/GenWrapper/proto/grph1_swpack.fp +746 -0
- data/GenWrapper/proto/grph2_00 +16 -0
- data/GenWrapper/proto/grph2_grpack.fp +139 -0
- data/GenWrapper/proto/grph2_ucpack.fp +522 -0
- data/GenWrapper/proto/grph2_udpack.fp +692 -0
- data/GenWrapper/proto/grph2_uepack.fp +601 -0
- data/GenWrapper/proto/grph2_ugpack.fp +436 -0
- data/GenWrapper/proto/grph2_uhpack.fp +246 -0
- data/GenWrapper/proto/grph2_ulpack.fp +516 -0
- data/GenWrapper/proto/grph2_umpack.fp +676 -0
- data/GenWrapper/proto/grph2_uspack.fp +989 -0
- data/GenWrapper/proto/grph2_uupack.fp +663 -0
- data/GenWrapper/proto/grph2_uvpack.fp +246 -0
- data/GenWrapper/proto/grph2_uwpack.fp +203 -0
- data/GenWrapper/proto/grph2_uxpack.fp +295 -0
- data/GenWrapper/proto/grph2_uypack.fp +295 -0
- data/GenWrapper/proto/grph2_uzpack.fp +574 -0
- data/GenWrapper/proto/math1_00 +12 -0
- data/GenWrapper/proto/math1_blklib.fp +58 -0
- data/GenWrapper/proto/math1_chrlib.fp +83 -0
- data/GenWrapper/proto/math1_fnclib.fp +79 -0
- data/GenWrapper/proto/math1_gnmlib.fp +118 -0
- data/GenWrapper/proto/math1_gt2dlib.fp +144 -0
- data/GenWrapper/proto/math1_ifalib.fp +123 -0
- data/GenWrapper/proto/math1_indxlib.fp +222 -0
- data/GenWrapper/proto/math1_intlib.fp +46 -0
- data/GenWrapper/proto/math1_lrllib.fp +276 -0
- data/GenWrapper/proto/math1_maplib.fp +24 -0
- data/GenWrapper/proto/math1_oslib.fp +28 -0
- data/GenWrapper/proto/math1_rfalib.fp +420 -0
- data/GenWrapper/proto/math1_rfblib.fp +51 -0
- data/GenWrapper/proto/math1_sublib.fp +60 -0
- data/GenWrapper/proto/math1_syslib.fp +767 -0
- data/GenWrapper/proto/math1_vialib.fp +339 -0
- data/GenWrapper/proto/math1_viblib.fp +264 -0
- data/GenWrapper/proto/math1_vralib.fp +339 -0
- data/GenWrapper/proto/math1_vrblib.fp +264 -0
- data/GenWrapper/proto/math1_xfclib.fp +68 -0
- data/GenWrapper/proto/math2_00 +12 -0
- data/GenWrapper/proto/math2_fftlib.fp +803 -0
- data/GenWrapper/proto/math2_intrlib.fp +32 -0
- data/GenWrapper/proto/math2_odelib.fp_notused +568 -0
- data/GenWrapper/proto/math2_rnmlib.fp +54 -0
- data/GenWrapper/proto/math2_shtlib.fp +1292 -0
- data/GenWrapper/proto/math2_shtlib.fp_old +1294 -0
- data/GenWrapper/proto/math2_vstlib.fp +84 -0
- data/GenWrapper/proto/misc1_00 +17 -0
- data/GenWrapper/proto/misc1_chnlib.fp +47 -0
- data/GenWrapper/proto/misc1_datelib.fp +352 -0
- data/GenWrapper/proto/misc1_fmtlib.fp +19 -0
- data/GenWrapper/proto/misc1_misclib.fp +26 -0
- data/GenWrapper/proto/misc1_randlib.fp +36 -0
- data/GenWrapper/proto/misc1_timelib.fp +151 -0
- data/GenWrapper/proto2c.rb +13 -0
- data/GenWrapper/prototype.rb +209 -0
- data/GenWrapper/util.rb +9 -0
- data/GenWrapper/variable.rb +671 -0
- data/README +29 -0
- data/Rakefile +44 -0
- data/ToDo +2 -0
- data/dcl_cary2obj.c +354 -0
- data/dcl_narrayed_funcs.c +518 -0
- data/dcl_obj2cary.c +512 -0
- data/dcl_rubydcloriginal.c +129 -0
- data/demo/gokuraku/hop/hop.rb +26 -0
- data/demo/gokuraku/jump/jump1.rb +64 -0
- data/demo/gokuraku/jump/jump2.rb +50 -0
- data/demo/gokuraku/layout/lay1.rb +46 -0
- data/demo/gokuraku/layout/lay2.rb +44 -0
- data/demo/gokuraku/step/step0.rb +34 -0
- data/demo/gokuraku/step/step1.rb +84 -0
- data/demo/gokuraku/step/step2.rb +62 -0
- data/demo/gokuraku/u1d/u1d1.rb +37 -0
- data/demo/gokuraku/u1d/u1d2.rb +50 -0
- data/demo/gokuraku/u2d/u2d1.rb +46 -0
- data/demo/gokuraku/u2d/u2d2.rb +49 -0
- data/demo/gokuraku/u2d/u2d3.rb +45 -0
- data/demo/gokuraku/u2d/u2d4.rb +61 -0
- data/demo/grph1/scpack/scpkt2.rb +40 -0
- data/demo/grph1/scpack/scpkt3.rb +102 -0
- data/demo/grph1/scpack/scpkt6.rb +84 -0
- data/demo/grph1/scpack/scpkt7.rb +59 -0
- data/demo/grph1/scpack/scpkt8.rb +60 -0
- data/demo/grph1/scpack/t810630.dat +296 -0
- data/demo/grph1/scpack/t811231.dat +296 -0
- data/demo/grph1/sgpack/sgfont.rb +52 -0
- data/demo/grph1/sgpack/sgfonz.rb +53 -0
- data/demo/grph1/sgpack/sgksx1.rb +44 -0
- data/demo/grph1/sgpack/sgksx2.rb +90 -0
- data/demo/grph1/sgpack/sgksx3.rb +75 -0
- data/demo/grph1/sgpack/sglidx.rb +40 -0
- data/demo/grph1/sgpack/sgltyp.rb +48 -0
- data/demo/grph1/sgpack/sgpk01.rb +39 -0
- data/demo/grph1/sgpack/sgpk02.rb +79 -0
- data/demo/grph1/sgpack/sgpk03.rb +107 -0
- data/demo/grph1/sgpack/sgpk04.rb +86 -0
- data/demo/grph1/sgpack/sgpk05.rb +66 -0
- data/demo/grph1/sgpack/sgpk06.rb +91 -0
- data/demo/grph1/sgpack/sgpk07.rb +66 -0
- data/demo/grph1/sgpack/sgpk08.rb +67 -0
- data/demo/grph1/sgpack/sgpk09.rb +61 -0
- data/demo/grph1/sgpack/sgpk10.rb +58 -0
- data/demo/grph1/sgpack/sgtclr.rb +59 -0
- data/demo/grph1/sgpack/sgtone.rb +70 -0
- data/demo/grph1/sgpack/sgtonz.rb +66 -0
- data/demo/grph1/slpack/slpk01.rb +37 -0
- data/demo/grph1/slpack/slpk02.rb +29 -0
- data/demo/grph1/slpack/slpk03.rb +36 -0
- data/demo/grph1/slpack/slpk04.rb +36 -0
- data/demo/grph2/g2pack/g2pk01.rb +78 -0
- data/demo/grph2/g2pack/g2pk02.rb +75 -0
- data/demo/grph2/grpack/grpk01.rb +65 -0
- data/demo/grph2/ucpack/ucpk01.rb +95 -0
- data/demo/grph2/ucpack/ucpk02.rb +95 -0
- data/demo/grph2/udegpk/u2df01.rb +50 -0
- data/demo/grph2/udegpk/u2df02.rb +76 -0
- data/demo/grph2/udegpk/u2df03.rb +80 -0
- data/demo/grph2/udegpk/u2df04.rb +52 -0
- data/demo/grph2/udegpk/u2df05.rb +70 -0
- data/demo/grph2/udegpk/u2df06.rb +59 -0
- data/demo/grph2/udegpk/u2df07.rb +68 -0
- data/demo/grph2/udegpk/u2df08.rb +91 -0
- data/demo/grph2/udegpk/u2df09b.rb +88 -0
- data/demo/grph2/udegpk/u2df09c.rb +89 -0
- data/demo/grph2/udegpk/u2df09e.rb +88 -0
- data/demo/grph2/udegpk/u2df09f.rb +89 -0
- data/demo/grph2/ulpack/ulpk01.rb +111 -0
- data/demo/grph2/ulpack/ulpk01n.rb +111 -0
- data/demo/grph2/ulpack/ulpk02.rb +111 -0
- data/demo/grph2/ulpack/ulpk02n.rb +111 -0
- data/demo/grph2/umpack/t811231.dat +296 -0
- data/demo/grph2/umpack/test01.rb +69 -0
- data/demo/grph2/umpack/test02.rb +64 -0
- data/demo/grph2/umpack/test03.rb +84 -0
- data/demo/grph2/umpack/test04.rb +54 -0
- data/demo/grph2/umpack/test05.rb +85 -0
- data/demo/grph2/umpack/test06.rb +44 -0
- data/demo/grph2/umpack/test07.rb +43 -0
- data/demo/grph2/umpack/test08.rb +37 -0
- data/demo/grph2/umpack/test09.rb +86 -0
- data/demo/grph2/umpack/test10.rb +52 -0
- data/demo/grph2/umpack/umpk01.rb +65 -0
- data/demo/grph2/umpack/umpk02.rb +54 -0
- data/demo/grph2/umpack/umpk03.rb +46 -0
- data/demo/grph2/umpack/umpk04.rb +65 -0
- data/demo/grph2/umpack/umpk05.rb +84 -0
- data/demo/grph2/uspack/uspk01.rb +39 -0
- data/demo/grph2/uspack/uspk02.rb +47 -0
- data/demo/grph2/uspack/uspk03.rb +38 -0
- data/demo/grph2/uspack/uspk04.rb +64 -0
- data/demo/grph2/uspack/uspk05.rb +68 -0
- data/demo/grph2/uspack/uspk06.rb +43 -0
- data/demo/grph2/uspack/uspk07.rb +62 -0
- data/demo/grph2/uspack/uspk08.rb +46 -0
- data/demo/grph2/uspack/uspk09.rb +89 -0
- data/demo/grph2/uspack/uspk10.rb +48 -0
- data/demo/grph2/uspack/uspk11.rb +71 -0
- data/demo/grph2/uspack/uspk12.rb +51 -0
- data/demo/grph2/uupack/uupk01.rb +50 -0
- data/demo/grph2/uupack/uupk02.rb +74 -0
- data/demo/grph2/uupack/uupk03.rb +56 -0
- data/demo/grph2/uupack/uupk04.rb +84 -0
- data/demo/grph2/uupack/uupk05.rb +74 -0
- data/demo/grph2/uupack/uupk06.rb +77 -0
- data/demo/grph2/uupack/uupk07.rb +88 -0
- data/demo/grph2/uxyzpk/uxyz01.rb +38 -0
- data/demo/grph2/uxyzpk/uxyz02.rb +36 -0
- data/demo/grph2/uxyzpk/uxyz03.rb +37 -0
- data/demo/grph2/uxyzpk/uxyz04.rb +54 -0
- data/demo/grph2/uxyzpk/uxyz05.rb +41 -0
- data/demo/grph2/uxyzpk/uxyz06.rb +42 -0
- data/demo/grph2/uxyzpk/uxyz07.rb +38 -0
- data/demo/grph2/uxyzpk/uxyz08.rb +60 -0
- data/demo/grph2/uxyzpk/uxyz09.rb +52 -0
- data/demo/grph2/uxyzpk/uxyz10.rb +57 -0
- data/demo/grph2/ximage/MEMO +23 -0
- data/demo/grph2/ximage/tomsclm.dat +1344 -0
- data/demo/grph2/ximage/ximg01.rb +145 -0
- data/demo/math1/gt2dlib/gt2d01.rb +33 -0
- data/demo/math2/fftlib/fftl01.rb +28 -0
- data/demo/math2/fftlib/fftl02.rb +224 -0
- data/demo/math2/intrlib/intr01.rb +22 -0
- data/demo/math2/rnmlib/rnml01.rb +21 -0
- data/demo/math2/vstlib/vstl01.rb +29 -0
- data/demo/math2/vstlib/vstl02.rb +38 -0
- data/demo/rakuraku/color/color1.rb +61 -0
- data/demo/rakuraku/color/color2.rb +57 -0
- data/demo/rakuraku/color/color3.rb +81 -0
- data/demo/rakuraku/kihon/kihon1.rb +39 -0
- data/demo/rakuraku/kihon/kihon2.rb +56 -0
- data/demo/rakuraku/kihon/kihon3.rb +57 -0
- data/demo/rakuraku/kihon/kihon4.rb +70 -0
- data/demo/rakuraku/kihon/kihon5.rb +56 -0
- data/demo/rakuraku/kihon/kihon6.rb +40 -0
- data/demo/rakuraku/kihon/kihon7.rb +98 -0
- data/demo/rakuraku/kihon/kihon8.rb +93 -0
- data/demo/rakuraku/kihon/kihon9.rb +77 -0
- data/demo/rakuraku/kihon/kihona.rb +123 -0
- data/demo/rakuraku/kihon/kihonb.rb +73 -0
- data/demo/rakuraku/kihon/kihonc.rb +110 -0
- data/demo/rakuraku/layout/lay1.rb +29 -0
- data/demo/rakuraku/layout/lay2.rb +28 -0
- data/demo/rakuraku/layout/lay3.rb +29 -0
- data/demo/rakuraku/map3d/map3d1.rb +68 -0
- data/demo/rakuraku/map3d/map3d2.rb +67 -0
- data/demo/rakuraku/map3d/map3d3.rb +66 -0
- data/demo/rakuraku/map3d/map3d4.rb +107 -0
- data/demo/rakuraku/map3d/map3d5.rb +118 -0
- data/demo/rakuraku/map3d/map3d6.rb +96 -0
- data/demo/rakuraku/map3d/map3d7.rb +98 -0
- data/demo/rakuraku/miss/miss1.rb +76 -0
- data/demo/rakuraku/miss/miss2.rb +60 -0
- data/demo/rakuraku/quick/quick1.rb +35 -0
- data/demo/rakuraku/quick/quick2.rb +33 -0
- data/demo/rakuraku/quick/quick3.rb +46 -0
- data/demo/rakuraku/quick/quick4.rb +47 -0
- data/demo/rakuraku/quick/quick5.rb +46 -0
- data/demo/rakuraku/u2d/u2d1.rb +50 -0
- data/demo/rakuraku/u2d/u2d2.rb +51 -0
- data/demo/rakuraku/u2d/u2d3.rb +70 -0
- data/demo/rakuraku/u2d/u2d4.rb +59 -0
- data/demo/rakuraku/u2d/u2d5.rb +61 -0
- data/demo/rakuraku/u2d/u2d6.rb +57 -0
- data/demo/rakuraku/u2d/u2d7.rb +103 -0
- data/demo/rakuraku/uspack/uspac1.rb +35 -0
- data/demo/rakuraku/uspack/uspac2.rb +66 -0
- data/demo/rakuraku/uspack/uspac3.rb +37 -0
- data/demo/rakuraku/uspack/uspac4.rb +49 -0
- data/demo/rakuraku/uxyz/uxyz1.rb +37 -0
- data/demo/rakuraku/uxyz/uxyz2.rb +35 -0
- data/demo/rakuraku/uxyz/uxyz3.rb +38 -0
- data/demo/rakuraku/uxyz/uxyz4.rb +36 -0
- data/demo/rakuraku/uxyz/uxyz5.rb +57 -0
- data/demo/rakuraku/uxyz/uxyz6.rb +43 -0
- data/demo/rakuraku/uxyz/uxyz7.rb +39 -0
- data/demo/rakuraku/uxyz/uxyz8.rb +56 -0
- data/demo/rubydcloriginal/uemrkz1.rb +37 -0
- data/dummy.c +9 -0
- data/extconf.rb +133 -0
- data/grph1_csgi.c +119 -0
- data/grph1_scpack.c +1388 -0
- data/grph1_sgpack.c +3876 -0
- data/grph1_slpack.c +432 -0
- data/grph1_stpack.c +1044 -0
- data/grph1_swpack.c +1922 -0
- data/grph1_zgpack.c.org +141 -0
- data/grph2_grpack.c +368 -0
- data/grph2_ucpack.c +1232 -0
- data/grph2_udpack.c +1404 -0
- data/grph2_uepack.c +1443 -0
- data/grph2_ugpack.c +1073 -0
- data/grph2_uhpack.c +943 -0
- data/grph2_ulpack.c +1304 -0
- data/grph2_umpack.c +1540 -0
- data/grph2_uspack.c +2481 -0
- data/grph2_uupack.c +1689 -0
- data/grph2_uvpack.c +943 -0
- data/grph2_uwpack.c +552 -0
- data/grph2_uxpack.c +555 -0
- data/grph2_uypack.c +555 -0
- data/grph2_uzpack.c +1455 -0
- data/init.c.default +187 -0
- data/init.c.gtk +189 -0
- data/lib/dcl.rb +5084 -0
- data/math1_blklib.c +227 -0
- data/math1_chrlib.c +239 -0
- data/math1_fnclib.c +254 -0
- data/math1_gnmlib.c +356 -0
- data/math1_gt2dlib.c +514 -0
- data/math1_ifalib.c +427 -0
- data/math1_indxlib.c +709 -0
- data/math1_intlib.c +167 -0
- data/math1_lrllib.c +817 -0
- data/math1_maplib.c +172 -0
- data/math1_oslib.c +111 -0
- data/math1_rfalib.c +1417 -0
- data/math1_rfblib.c +232 -0
- data/math1_sublib.c +221 -0
- data/math1_syslib.c +2025 -0
- data/math1_vialib.c +1156 -0
- data/math1_viblib.c +1027 -0
- data/math1_vralib.c +1156 -0
- data/math1_vrblib.c +1027 -0
- data/math1_xfclib.c +142 -0
- data/math2_fftlib.c +833 -0
- data/math2_intrlib.c +138 -0
- data/math2_rnmlib.c +226 -0
- data/math2_shtlib.c +1568 -0
- data/math2_vstlib.c +366 -0
- data/misc1_chnlib.c +179 -0
- data/misc1_datelib.c +953 -0
- data/misc1_fmtlib.c +99 -0
- data/misc1_misclib.c +118 -0
- data/misc1_randlib.c +142 -0
- data/misc1_timelib.c +380 -0
- data/obsolete/README +2 -0
- data/obsolete/dcl_ext.html +112 -0
- data/obsolete/dcl_ext.rb +313 -0
- metadata +433 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
# //// Ruby-DCL original extention methods ////
|
2
|
+
|
3
|
+
alias __uemrkz uemrkz
|
4
|
+
def uemrkz( upx,upy,z,itype,index,rsize )
|
5
|
+
|
6
|
+
#< extract array size(s) (which was(were) formerly an argument(s)) >
|
7
|
+
if ! ( upx == nil || upx.is_a?(Float) && lreq( upx, glrget("RUNDEF") ) )
|
8
|
+
len_upx_0 = upx.length
|
9
|
+
n = len_upx_0
|
10
|
+
else
|
11
|
+
upx = glrget("RUNDEF") if ( upx == nil )
|
12
|
+
len_upy_0 = upy.length
|
13
|
+
n = len_upy_0
|
14
|
+
end
|
15
|
+
|
16
|
+
#< check array size(s) >
|
17
|
+
raise "Invalid array length: upx.length != n" if \
|
18
|
+
upx!=nil && !( upx.is_a?(Float) && lreq(upx,glrget("RUNDEF")) ) && upx.length != (n)
|
19
|
+
raise "Invalid array length: upy.length != n" if \
|
20
|
+
upy!=nil && !( upy.is_a?(Float) && lreq(upy,glrget("RUNDEF")) ) && upy.length != (n)
|
21
|
+
raise "Invalid array length: z.length != n" if \
|
22
|
+
z!=nil && !( z.is_a?(Float) && lreq(z,glrget("RUNDEF")) ) && z.length != (n)
|
23
|
+
|
24
|
+
#< call the original method >
|
25
|
+
__uemrkz( n,upx,upy,z,itype,index,rsize )
|
26
|
+
end
|
27
|
+
module_function :uemrkz, :__uemrkz
|
28
|
+
private_class_method :__uemrkz
|
29
|
+
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require "narray"
|
2
|
+
if /cygwin|mingw|darwin/ =~ RUBY_PLATFORM
|
3
|
+
begin
|
4
|
+
require "glib2"
|
5
|
+
rescue LoadError
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
require "numru/dcl_raw"
|
10
|
+
module NumRu
|
11
|
+
module DCL
|
12
|
+
init_arg($0,ARGV) if DCLVERSION >= "5.3.2"
|
13
|
+
|
14
|
+
#<<< private functions >>>
|
15
|
+
|
16
|
+
def not_nary( na )
|
17
|
+
if defined?(NArrayMiss)
|
18
|
+
!na.is_a?(NArray) && !na.is_a?(NArrayMiss)
|
19
|
+
else
|
20
|
+
!na.is_a?(NArray)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
module_function :not_nary
|
24
|
+
private_class_method :not_nary
|
25
|
+
|
26
|
+
#<<< ??p(set|stx|get) >>>
|
27
|
+
|
28
|
+
%w!gl sl sg uc ud ue ug ul um uu uz!.each do |pkg|
|
29
|
+
%w!set stx!.each do |set|
|
30
|
+
eval <<-EOS
|
31
|
+
def #{pkg}p#{set}( name, value )
|
32
|
+
case name
|
33
|
+
when /^l/i
|
34
|
+
DCL.#{pkg}l#{set}(name,value)
|
35
|
+
when /^[i-n]/i
|
36
|
+
DCL.#{pkg}i#{set}(name,value)
|
37
|
+
else
|
38
|
+
DCL.#{pkg}r#{set}(name,value)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
module_function :#{pkg}p#{set}
|
42
|
+
EOS
|
43
|
+
end
|
44
|
+
eval <<-EOS
|
45
|
+
def #{pkg}pget( name )
|
46
|
+
case name
|
47
|
+
when /^l/i
|
48
|
+
DCL.#{pkg}lget(name)
|
49
|
+
when /^[i-n]/i
|
50
|
+
DCL.#{pkg}iget(name)
|
51
|
+
else
|
52
|
+
DCL.#{pkg}rget(name)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
module_function :#{pkg}pget
|
56
|
+
EOS
|
57
|
+
end
|
58
|
+
|
59
|
+
%w!us!.each do |pkg|
|
60
|
+
%w!set stx!.each do |set|
|
61
|
+
eval <<-EOS
|
62
|
+
def #{pkg}p#{set}( name, value )
|
63
|
+
case name
|
64
|
+
when /^c/i
|
65
|
+
DCL.#{pkg}c#{set}(name,value)
|
66
|
+
when /^l/i
|
67
|
+
DCL.#{pkg}l#{set}(name,value)
|
68
|
+
when /^[i-n]/i
|
69
|
+
DCL.#{pkg}i#{set}(name,value)
|
70
|
+
else
|
71
|
+
DCL.#{pkg}r#{set}(name,value)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
module_function :#{pkg}p#{set}
|
75
|
+
EOS
|
76
|
+
end
|
77
|
+
eval <<-EOS
|
78
|
+
def #{pkg}pget( name )
|
79
|
+
case name
|
80
|
+
when /^c/i
|
81
|
+
DCL.#{pkg}cget(name)
|
82
|
+
when /^l/i
|
83
|
+
DCL.#{pkg}lget(name)
|
84
|
+
when /^[i-n]/i
|
85
|
+
DCL.#{pkg}iget(name)
|
86
|
+
else
|
87
|
+
DCL.#{pkg}rget(name)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
module_function :#{pkg}pget
|
91
|
+
EOS
|
92
|
+
end
|
93
|
+
|
94
|
+
@@sw_char_params = [/^WSNAME/i,/^FONT/i,/^CL2TN$/i,/^FNAME$/i,/^TITLE$/i,
|
95
|
+
/^CLRMAP$/i,/^LPR$/i]
|
96
|
+
%w!set stx!.each do |set|
|
97
|
+
eval <<-EOS
|
98
|
+
def swp#{set}(name, value)
|
99
|
+
case name
|
100
|
+
when *@@sw_char_params
|
101
|
+
DCL.swc#{set}(name,value)
|
102
|
+
when /^l/i
|
103
|
+
DCL.swl#{set}(name,value)
|
104
|
+
when /^[i-n]/i
|
105
|
+
DCL.swi#{set}(name,value)
|
106
|
+
else
|
107
|
+
DCL.swr#{set}(name,value)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
module_function :swp#{set}
|
111
|
+
EOS
|
112
|
+
end
|
113
|
+
def swpget( name )
|
114
|
+
case name
|
115
|
+
when *@@sw_char_params
|
116
|
+
DCL.swcget(name)
|
117
|
+
when /^l/i
|
118
|
+
DCL.swlget(name)
|
119
|
+
when /^[i-n]/i
|
120
|
+
DCL.swiget(name)
|
121
|
+
else
|
122
|
+
DCL.swrget(name)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
module_function :swpget
|
126
|
+
|
127
|
+
|
128
|
+
#<<< to eliminate array length arguments >>>
|
129
|
+
|
data/GenWrapper/def.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# def.rb
|
2
|
+
# $Id: def.rb,v 1.1.1.1 2011-02-23 07:21:28 horinout Exp $
|
3
|
+
|
4
|
+
OBJ2CCHARARY = "dcl_obj2ccharary"
|
5
|
+
OBJ2CINTEGERARY = "dcl_obj2cintegerary"
|
6
|
+
OBJ2CREALARY = "dcl_obj2crealary"
|
7
|
+
OBJ2CCOMPLEXARY = "dcl_obj2ccomplexary"
|
8
|
+
OBJ2CLOGICALARY = "dcl_obj2clogicalary"
|
9
|
+
|
10
|
+
CCHARARY2OBJ = "dcl_ccharary2obj"
|
11
|
+
CINTEGERARY2OBJ = "dcl_cintegerary2obj"
|
12
|
+
CREALARY2OBJ = "dcl_crealary2obj"
|
13
|
+
CCOMPLEXARY2OBJ = "dcl_ccomplexary2obj"
|
14
|
+
CLOGICALARY2OBJ = "dcl_clogicalary2obj"
|
15
|
+
|
16
|
+
FREECCHARARY = "dcl_freeccharary"
|
17
|
+
FREECINTEGERARY = "dcl_freecintegerary"
|
18
|
+
FREECREALARY = "dcl_freecrealary"
|
19
|
+
FREECCOMPLEXARY = "dcl_freeccomplexary"
|
20
|
+
FREECLOGICALARY = "dcl_freeclogicalary"
|
@@ -0,0 +1,398 @@
|
|
1
|
+
# Eliminate array size arguments
|
2
|
+
# May 13, 2002 T. Horinouchi
|
3
|
+
#
|
4
|
+
# Usage:
|
5
|
+
# % ruby generate_new_rbdcl.rb proto_files
|
6
|
+
# where files are grph2_uvpack.fp math2_fftlib.fb etc (in the proto directory)
|
7
|
+
|
8
|
+
class Variable
|
9
|
+
def initialize(decl)
|
10
|
+
name, *tmp = decl.split.reverse
|
11
|
+
tmp.reverse!
|
12
|
+
attr = (tmp[-1] =~ /^[a-z]+$/ ? tmp.pop : "i")
|
13
|
+
ary = (tmp[-1] =~ /^\((.*)\)/ ? (tmp.pop; $1.downcase) : false)
|
14
|
+
vtype = tmp.pop
|
15
|
+
if (/(\d+)|\*\((.*)\)/ =~ vtype)
|
16
|
+
charlen = ($1||$2).downcase # may be charcter length
|
17
|
+
vtype = vtype.scan(/\w+/)[0]
|
18
|
+
else
|
19
|
+
charlen = nil
|
20
|
+
end
|
21
|
+
@name = name.downcase
|
22
|
+
@attr = attr
|
23
|
+
@ary = ary
|
24
|
+
@vtype = vtype.downcase
|
25
|
+
end
|
26
|
+
|
27
|
+
attr_reader(:name, :attr, :ary, :vtype)
|
28
|
+
end
|
29
|
+
|
30
|
+
def pre_filter(decl)
|
31
|
+
case $method_name
|
32
|
+
when /(^ud|^ue)/
|
33
|
+
# replace MX with NX
|
34
|
+
decl.gsub!('MX','NX')
|
35
|
+
when /^ug/
|
36
|
+
# replace MU & MV with NX
|
37
|
+
decl.gsub!(/(MU|MV)/,'NX')
|
38
|
+
end
|
39
|
+
decl
|
40
|
+
end
|
41
|
+
|
42
|
+
def extract_args(proto)
|
43
|
+
args_org = []
|
44
|
+
while ( decl = proto.gets )
|
45
|
+
break if decl =~ /^ *\)$/
|
46
|
+
decl = pre_filter(decl)
|
47
|
+
if ( decl !~ /^\s*$/ )
|
48
|
+
print decl if $DEBUG
|
49
|
+
var = Variable.new(decl)
|
50
|
+
p var if var.ary if $DEBUG
|
51
|
+
if var.attr != "o" && var.attr != "t"
|
52
|
+
args_org.push(var)
|
53
|
+
else
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
args_org
|
58
|
+
end
|
59
|
+
|
60
|
+
def has_array?( args )
|
61
|
+
args.each do |v|
|
62
|
+
return true if v.ary
|
63
|
+
end
|
64
|
+
false
|
65
|
+
end
|
66
|
+
|
67
|
+
def new_args( args_org )
|
68
|
+
del_argname = []
|
69
|
+
args_org.each do |v|
|
70
|
+
if ( (shape = v.ary) )
|
71
|
+
shape = shape.split(',')
|
72
|
+
shape.each do |lendef|
|
73
|
+
lpos = lendef.index(/([a-z]\w*)/)
|
74
|
+
m = $1
|
75
|
+
if ( lpos )
|
76
|
+
lpos2 = lendef.index(/([a-z]\w*)/,lpos+m.length)
|
77
|
+
if (!lpos2)
|
78
|
+
# to be deleted only when unambiguous
|
79
|
+
del_argname.push(m) if m && !del_argname.include?(m)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
args_new = args_org.clone
|
86
|
+
del_argname.each do |nm|
|
87
|
+
args_new.delete_if {|v|
|
88
|
+
v.name == nm
|
89
|
+
}
|
90
|
+
end
|
91
|
+
print " ORG: ", args_org.collect{|i| i.name}.join(','),"\n" if $DEBUG
|
92
|
+
print " NEW: ", args_new.collect{|i| i.name}.join(','),"\n" if $DEBUG
|
93
|
+
print " args deleted: ",del_argname.join(','),"\n" if $DEBUG
|
94
|
+
[args_new, del_argname]
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
def new_def( args_org, args_new, del_argname )
|
99
|
+
method_def = <<-EOS
|
100
|
+
alias __#{$method_name} #{$method_name}
|
101
|
+
def #{$method_name}( #{args_new.collect{|i| i.name}.join(',')} )
|
102
|
+
EOS
|
103
|
+
method_def.concat( del_arg_deriv( args_new, del_argname ) )
|
104
|
+
args_org_names = args_org.collect{|arg| arg.name}
|
105
|
+
method_def.concat( check_array_size( args_new, args_org_names ) )
|
106
|
+
method_def.concat( <<-EOS
|
107
|
+
|
108
|
+
#< call the original method >
|
109
|
+
__#{$method_name}( #{args_org.collect{|i| i.name}.join(',')} )
|
110
|
+
end
|
111
|
+
module_function :#{$method_name}, :__#{$method_name}
|
112
|
+
private_class_method :__#{$method_name}
|
113
|
+
|
114
|
+
EOS
|
115
|
+
)
|
116
|
+
|
117
|
+
#print '*** ',method_def
|
118
|
+
method_def
|
119
|
+
end
|
120
|
+
|
121
|
+
#def wrap_in_rundef_rescue(
|
122
|
+
# if ( #{v.name}.is_a(Float) && x == glrget("RMISS") )
|
123
|
+
#end
|
124
|
+
|
125
|
+
def del_arg_deriv( args_new, del_argname )
|
126
|
+
deriv = ""
|
127
|
+
first = true
|
128
|
+
del_argname.each do |nm|
|
129
|
+
ary = []
|
130
|
+
args_new.each do |v|
|
131
|
+
if v.ary && v.ary =~ /\W*#{nm}\W*/
|
132
|
+
ary.push( [ v.name, inv_deriv(nm, v.ary, v.name) ] )
|
133
|
+
if (!possibly_rundef?(nm, v.name))
|
134
|
+
break
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
if(first)
|
139
|
+
deriv = <<-EOS
|
140
|
+
|
141
|
+
#< extract array size(s) (which was(were) formerly an argument(s)) >
|
142
|
+
EOS
|
143
|
+
first = false
|
144
|
+
end
|
145
|
+
deriv.concat( recursive_join( ary ) )
|
146
|
+
end
|
147
|
+
deriv
|
148
|
+
end
|
149
|
+
|
150
|
+
def possibly_rundef?(argname, varname)
|
151
|
+
case $method_name
|
152
|
+
when /(^usgrph|^usspnt)/
|
153
|
+
if( argname == 'n' && varname == 'x' )
|
154
|
+
return true
|
155
|
+
elsif ( argname == nil )
|
156
|
+
return true
|
157
|
+
end
|
158
|
+
when /(^uulin|^uumrk|^uv|^uh)/
|
159
|
+
if ( argname == 'n' &&
|
160
|
+
( varname == 'upx' || varname == 'upy' ||
|
161
|
+
varname == 'upx1' || varname == 'upx2' ||
|
162
|
+
varname == 'upy1' || varname == 'upy2' ) )
|
163
|
+
return true
|
164
|
+
elsif ( argname == nil )
|
165
|
+
return true
|
166
|
+
end
|
167
|
+
end
|
168
|
+
false
|
169
|
+
end
|
170
|
+
|
171
|
+
def recursive_join( ary )
|
172
|
+
first = ary.shift
|
173
|
+
if( ary.length > 0)
|
174
|
+
str = <<-EOS
|
175
|
+
if ! ( #{first[0]} == nil || #{first[0]}.is_a?(Float) && lreq( #{first[0]}, glrget("RUNDEF") ) )
|
176
|
+
#{first[1].gsub(/^/," ").chop}
|
177
|
+
else
|
178
|
+
EOS
|
179
|
+
str += <<-EOS
|
180
|
+
#{first[0]} = glrget("RUNDEF") if ( #{first[0]} == nil )
|
181
|
+
#{recursive_join(ary).gsub(/^/," ").chop}
|
182
|
+
end
|
183
|
+
EOS
|
184
|
+
else
|
185
|
+
first[1]
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
|
190
|
+
def inv_arithm(lendef, varname)
|
191
|
+
case lendef
|
192
|
+
when varname
|
193
|
+
form = "LEN"
|
194
|
+
when /^(\w+) *\* *#{varname}$/
|
195
|
+
form = "LEN / #{$1}"
|
196
|
+
when /^#{varname} *\/ *(\w+)$/
|
197
|
+
form = "LEN * #{$1}"
|
198
|
+
when /^#{varname} *\+ *(\w+)$/
|
199
|
+
form = "LEN - #{$1}"
|
200
|
+
when /^\(*(\w+) *\* *#{varname} *\+ *(\w+)\)*$/
|
201
|
+
form = "( LEN - #{$2} ) / #{$1}"
|
202
|
+
else
|
203
|
+
raise 'unsuppoerted dimension specification : '+lendef
|
204
|
+
end
|
205
|
+
form
|
206
|
+
end
|
207
|
+
|
208
|
+
def inv_deriv(argname, shape, aryname)
|
209
|
+
deriv = ""
|
210
|
+
shape = shape.split(',')
|
211
|
+
multiD = ( shape.length > 1 )
|
212
|
+
shape.each_index do |i|
|
213
|
+
if (lendef=shape[i]) =~ /\W*#{argname}\W*/
|
214
|
+
idim = i
|
215
|
+
form = inv_arithm( lendef, argname )
|
216
|
+
form.sub!('LEN',"len_#{aryname}_#{idim}")
|
217
|
+
if multiD
|
218
|
+
deriv = <<-EOS
|
219
|
+
if ( not_nary(#{aryname}) || (#{aryname}.rank < #{idim+1}) )
|
220
|
+
raise "#{aryname} must be a NArray of rank == #{shape.length}"
|
221
|
+
end
|
222
|
+
len_#{aryname}_#{idim} = #{aryname}.shape[#{idim}]
|
223
|
+
EOS
|
224
|
+
else
|
225
|
+
deriv = <<-EOS
|
226
|
+
len_#{aryname}_#{idim} = #{aryname}.length
|
227
|
+
EOS
|
228
|
+
end
|
229
|
+
deriv.concat( <<-EOS
|
230
|
+
#{argname} = #{form}
|
231
|
+
EOS
|
232
|
+
)
|
233
|
+
print deriv if $DEBUG
|
234
|
+
break
|
235
|
+
end
|
236
|
+
end
|
237
|
+
deriv
|
238
|
+
end
|
239
|
+
|
240
|
+
def aster2dimlen_if_possible( varname, dimlen )
|
241
|
+
if $method_name =~ /(^rvmax|^rvmin)/ && varname == 'rx'
|
242
|
+
dimlen.replace('(len=1; ns.each{|i| len*=i}; len)')
|
243
|
+
true
|
244
|
+
else
|
245
|
+
raise $!
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
def consist_of_names?(str, names)
|
250
|
+
ary = str.split(/\W/).uniq
|
251
|
+
names.each{|str| ary.delete(str)}
|
252
|
+
ary.each do |str|
|
253
|
+
return false if (/^\d*$/ !~ str)
|
254
|
+
end
|
255
|
+
true
|
256
|
+
end
|
257
|
+
|
258
|
+
def check_array_size( args_new, args_org_names )
|
259
|
+
body = <<-EOS
|
260
|
+
|
261
|
+
#< check array size(s) >
|
262
|
+
EOS
|
263
|
+
args_new.each do |v|
|
264
|
+
if ( v.ary )
|
265
|
+
shape = v.ary.split(',')
|
266
|
+
if ( shape.length == 1 )
|
267
|
+
arylen_replaced = false
|
268
|
+
if ( shape[0] == '*' )
|
269
|
+
begin
|
270
|
+
raise "Array #{v.name} is declared using *"
|
271
|
+
rescue
|
272
|
+
arylen_replaced = aster2dimlen_if_possible( v.name, shape[0] )
|
273
|
+
end
|
274
|
+
end
|
275
|
+
if possibly_rundef?(nil, v.name)
|
276
|
+
ins = "\\\n #{v.name}!=nil && !( #{v.name}.is_a?(Float) && lreq(#{v.name},glrget(\"RUNDEF\")) ) && "
|
277
|
+
else
|
278
|
+
ins = ""
|
279
|
+
end
|
280
|
+
if arylen_replaced || consist_of_names?(shape[0], args_org_names )
|
281
|
+
body.concat( <<-EOS
|
282
|
+
raise "Invalid array length: #{v.name}.length != #{shape[0]}" if #{ins}#{v.name}.length != (#{shape[0]})
|
283
|
+
EOS
|
284
|
+
)
|
285
|
+
end
|
286
|
+
else
|
287
|
+
shape.each_index do |i|
|
288
|
+
if ( shape[i] == '*' )
|
289
|
+
raise "Array #{v.name}'s #{i}-th dim is declared using *"
|
290
|
+
end
|
291
|
+
body.concat( <<-EOS
|
292
|
+
raise "Invalid array shape: #{v.name}.shape[#{i}] != #{shape[i]}" if #{v.name}.shape[#{i}] != (#{shape[i]})
|
293
|
+
EOS
|
294
|
+
)
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
298
|
+
end
|
299
|
+
body
|
300
|
+
end
|
301
|
+
|
302
|
+
def head
|
303
|
+
f = File.open('dcl_rb_heading')
|
304
|
+
heading = f .readlines
|
305
|
+
f.close
|
306
|
+
heading
|
307
|
+
end
|
308
|
+
|
309
|
+
def foot
|
310
|
+
f = File.open('dcl_rb_footing')
|
311
|
+
footing = f .readlines
|
312
|
+
f.close
|
313
|
+
footing
|
314
|
+
end
|
315
|
+
|
316
|
+
def close
|
317
|
+
return <<-EOS
|
318
|
+
end
|
319
|
+
end
|
320
|
+
EOS
|
321
|
+
end
|
322
|
+
|
323
|
+
def post_filter( ndf )
|
324
|
+
if $method_name == 'udcntz'
|
325
|
+
ndf.sub!(/,nbr2/,'')
|
326
|
+
add = <<-EOS
|
327
|
+
# derivation of nbr2 is provied aditionally in the method post_filter:
|
328
|
+
nbr2 = (nx+2)*(ny+2)*6/32+4
|
329
|
+
|
330
|
+
EOS
|
331
|
+
ndf =~ /(^ *\#.*check array size.*$)/
|
332
|
+
ndf[$1] = add + $1
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
def delete_comment(src) # [ruby-list:32030] [ruby-list:32049]
|
337
|
+
src.gsub(%r@ ([\'\"])(\\.|.)*?\1
|
338
|
+
| (/\*.*?\*/)
|
339
|
+
| (//)[^\n]*$
|
340
|
+
@mx) {
|
341
|
+
if $3
|
342
|
+
s = $3.delete("^\n")
|
343
|
+
s = ' ' if s.empty?
|
344
|
+
s
|
345
|
+
elsif $4
|
346
|
+
''
|
347
|
+
else
|
348
|
+
$&
|
349
|
+
end
|
350
|
+
}
|
351
|
+
end
|
352
|
+
|
353
|
+
##################### (main) ###########################
|
354
|
+
require "tempfile"
|
355
|
+
files = ARGV
|
356
|
+
ofilename = "../lib/dcl.rb"
|
357
|
+
ofile = open( ofilename, "w+" )
|
358
|
+
ofile.puts( head() )
|
359
|
+
for f in files
|
360
|
+
print "processing file #{f}\n"
|
361
|
+
#proto = open("| cat #{f} | gcc -E -", "r+")
|
362
|
+
#proto.close_write
|
363
|
+
fl = File.open(f)
|
364
|
+
proto = Tempfile.new('proto', '.')
|
365
|
+
proto.print( delete_comment(fl.read) )
|
366
|
+
proto.sync
|
367
|
+
proto.rewind
|
368
|
+
fl.close
|
369
|
+
while ( line = proto.gets )
|
370
|
+
case line
|
371
|
+
when /^ *SUBROUTINE *(\w+)|^ *\w+ *FUNCTION *(\w+)/
|
372
|
+
$method_name = ( $1 || $2 ).downcase
|
373
|
+
print $method_name+"\n" if $DEBUG
|
374
|
+
args_org = extract_args(proto)
|
375
|
+
if ( has_array?(args_org) )
|
376
|
+
# redefine the method
|
377
|
+
args_new, del_argname = new_args( args_org )
|
378
|
+
ndf = new_def( args_org, args_new, del_argname )
|
379
|
+
post_filter( ndf )
|
380
|
+
ofile.puts( ndf )
|
381
|
+
end
|
382
|
+
when /^#if *DCLVER *([<=>]+) *(\d\d\d)/
|
383
|
+
op = $1
|
384
|
+
ver = "'"+$2.split(//).join('.')+"'" # "'5.3.1'" etc
|
385
|
+
ver.sub!(/\.0/,'')
|
386
|
+
ofile.print(" if DCLVERSION #{op} #{ver}\n")
|
387
|
+
when /^#endif/
|
388
|
+
ofile.print(" end\n\n")
|
389
|
+
end
|
390
|
+
end
|
391
|
+
proto.close
|
392
|
+
end
|
393
|
+
|
394
|
+
ofile.puts( foot() )
|
395
|
+
ofile.puts( close() )
|
396
|
+
ofile.close
|
397
|
+
|
398
|
+
print "generated the DCL module file #{ofilename}\n"
|