ruby-dcl 1.6.2

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.
Files changed (319) hide show
  1. data/ChangeLog +321 -0
  2. data/GenWrapper/Makefile +14 -0
  3. data/GenWrapper/cproto2init.rb +41 -0
  4. data/GenWrapper/dcl_narrayed_funcs.rb +181 -0
  5. data/GenWrapper/dcl_rb_footing +29 -0
  6. data/GenWrapper/dcl_rb_heading +129 -0
  7. data/GenWrapper/def.rb +20 -0
  8. data/GenWrapper/elim_ary_size.rb +398 -0
  9. data/GenWrapper/etc/Mk_proto +375 -0
  10. data/GenWrapper/etc/dcl_gen +13 -0
  11. data/GenWrapper/etc/p_header +63 -0
  12. data/GenWrapper/etc/p_init +410 -0
  13. data/GenWrapper/pparse.rb +137 -0
  14. data/GenWrapper/proto/Makefile +35 -0
  15. data/GenWrapper/proto/grph1_00 +17 -0
  16. data/GenWrapper/proto/grph1_csgi.fp +27 -0
  17. data/GenWrapper/proto/grph1_scpack.fp +442 -0
  18. data/GenWrapper/proto/grph1_sgpack.fp +1406 -0
  19. data/GenWrapper/proto/grph1_slpack.fp +316 -0
  20. data/GenWrapper/proto/grph1_stpack.fp +411 -0
  21. data/GenWrapper/proto/grph1_swpack.fp +746 -0
  22. data/GenWrapper/proto/grph2_00 +16 -0
  23. data/GenWrapper/proto/grph2_grpack.fp +139 -0
  24. data/GenWrapper/proto/grph2_ucpack.fp +522 -0
  25. data/GenWrapper/proto/grph2_udpack.fp +692 -0
  26. data/GenWrapper/proto/grph2_uepack.fp +601 -0
  27. data/GenWrapper/proto/grph2_ugpack.fp +436 -0
  28. data/GenWrapper/proto/grph2_uhpack.fp +246 -0
  29. data/GenWrapper/proto/grph2_ulpack.fp +516 -0
  30. data/GenWrapper/proto/grph2_umpack.fp +676 -0
  31. data/GenWrapper/proto/grph2_uspack.fp +989 -0
  32. data/GenWrapper/proto/grph2_uupack.fp +663 -0
  33. data/GenWrapper/proto/grph2_uvpack.fp +246 -0
  34. data/GenWrapper/proto/grph2_uwpack.fp +203 -0
  35. data/GenWrapper/proto/grph2_uxpack.fp +295 -0
  36. data/GenWrapper/proto/grph2_uypack.fp +295 -0
  37. data/GenWrapper/proto/grph2_uzpack.fp +574 -0
  38. data/GenWrapper/proto/math1_00 +12 -0
  39. data/GenWrapper/proto/math1_blklib.fp +58 -0
  40. data/GenWrapper/proto/math1_chrlib.fp +83 -0
  41. data/GenWrapper/proto/math1_fnclib.fp +79 -0
  42. data/GenWrapper/proto/math1_gnmlib.fp +118 -0
  43. data/GenWrapper/proto/math1_gt2dlib.fp +144 -0
  44. data/GenWrapper/proto/math1_ifalib.fp +123 -0
  45. data/GenWrapper/proto/math1_indxlib.fp +222 -0
  46. data/GenWrapper/proto/math1_intlib.fp +46 -0
  47. data/GenWrapper/proto/math1_lrllib.fp +276 -0
  48. data/GenWrapper/proto/math1_maplib.fp +24 -0
  49. data/GenWrapper/proto/math1_oslib.fp +28 -0
  50. data/GenWrapper/proto/math1_rfalib.fp +420 -0
  51. data/GenWrapper/proto/math1_rfblib.fp +51 -0
  52. data/GenWrapper/proto/math1_sublib.fp +60 -0
  53. data/GenWrapper/proto/math1_syslib.fp +767 -0
  54. data/GenWrapper/proto/math1_vialib.fp +339 -0
  55. data/GenWrapper/proto/math1_viblib.fp +264 -0
  56. data/GenWrapper/proto/math1_vralib.fp +339 -0
  57. data/GenWrapper/proto/math1_vrblib.fp +264 -0
  58. data/GenWrapper/proto/math1_xfclib.fp +68 -0
  59. data/GenWrapper/proto/math2_00 +12 -0
  60. data/GenWrapper/proto/math2_fftlib.fp +803 -0
  61. data/GenWrapper/proto/math2_intrlib.fp +32 -0
  62. data/GenWrapper/proto/math2_odelib.fp_notused +568 -0
  63. data/GenWrapper/proto/math2_rnmlib.fp +54 -0
  64. data/GenWrapper/proto/math2_shtlib.fp +1292 -0
  65. data/GenWrapper/proto/math2_shtlib.fp_old +1294 -0
  66. data/GenWrapper/proto/math2_vstlib.fp +84 -0
  67. data/GenWrapper/proto/misc1_00 +17 -0
  68. data/GenWrapper/proto/misc1_chnlib.fp +47 -0
  69. data/GenWrapper/proto/misc1_datelib.fp +352 -0
  70. data/GenWrapper/proto/misc1_fmtlib.fp +19 -0
  71. data/GenWrapper/proto/misc1_misclib.fp +26 -0
  72. data/GenWrapper/proto/misc1_randlib.fp +36 -0
  73. data/GenWrapper/proto/misc1_timelib.fp +151 -0
  74. data/GenWrapper/proto2c.rb +13 -0
  75. data/GenWrapper/prototype.rb +209 -0
  76. data/GenWrapper/util.rb +9 -0
  77. data/GenWrapper/variable.rb +671 -0
  78. data/README +29 -0
  79. data/Rakefile +44 -0
  80. data/ToDo +2 -0
  81. data/dcl_cary2obj.c +354 -0
  82. data/dcl_narrayed_funcs.c +518 -0
  83. data/dcl_obj2cary.c +512 -0
  84. data/dcl_rubydcloriginal.c +129 -0
  85. data/demo/gokuraku/hop/hop.rb +26 -0
  86. data/demo/gokuraku/jump/jump1.rb +64 -0
  87. data/demo/gokuraku/jump/jump2.rb +50 -0
  88. data/demo/gokuraku/layout/lay1.rb +46 -0
  89. data/demo/gokuraku/layout/lay2.rb +44 -0
  90. data/demo/gokuraku/step/step0.rb +34 -0
  91. data/demo/gokuraku/step/step1.rb +84 -0
  92. data/demo/gokuraku/step/step2.rb +62 -0
  93. data/demo/gokuraku/u1d/u1d1.rb +37 -0
  94. data/demo/gokuraku/u1d/u1d2.rb +50 -0
  95. data/demo/gokuraku/u2d/u2d1.rb +46 -0
  96. data/demo/gokuraku/u2d/u2d2.rb +49 -0
  97. data/demo/gokuraku/u2d/u2d3.rb +45 -0
  98. data/demo/gokuraku/u2d/u2d4.rb +61 -0
  99. data/demo/grph1/scpack/scpkt2.rb +40 -0
  100. data/demo/grph1/scpack/scpkt3.rb +102 -0
  101. data/demo/grph1/scpack/scpkt6.rb +84 -0
  102. data/demo/grph1/scpack/scpkt7.rb +59 -0
  103. data/demo/grph1/scpack/scpkt8.rb +60 -0
  104. data/demo/grph1/scpack/t810630.dat +296 -0
  105. data/demo/grph1/scpack/t811231.dat +296 -0
  106. data/demo/grph1/sgpack/sgfont.rb +52 -0
  107. data/demo/grph1/sgpack/sgfonz.rb +53 -0
  108. data/demo/grph1/sgpack/sgksx1.rb +44 -0
  109. data/demo/grph1/sgpack/sgksx2.rb +90 -0
  110. data/demo/grph1/sgpack/sgksx3.rb +75 -0
  111. data/demo/grph1/sgpack/sglidx.rb +40 -0
  112. data/demo/grph1/sgpack/sgltyp.rb +48 -0
  113. data/demo/grph1/sgpack/sgpk01.rb +39 -0
  114. data/demo/grph1/sgpack/sgpk02.rb +79 -0
  115. data/demo/grph1/sgpack/sgpk03.rb +107 -0
  116. data/demo/grph1/sgpack/sgpk04.rb +86 -0
  117. data/demo/grph1/sgpack/sgpk05.rb +66 -0
  118. data/demo/grph1/sgpack/sgpk06.rb +91 -0
  119. data/demo/grph1/sgpack/sgpk07.rb +66 -0
  120. data/demo/grph1/sgpack/sgpk08.rb +67 -0
  121. data/demo/grph1/sgpack/sgpk09.rb +61 -0
  122. data/demo/grph1/sgpack/sgpk10.rb +58 -0
  123. data/demo/grph1/sgpack/sgtclr.rb +59 -0
  124. data/demo/grph1/sgpack/sgtone.rb +70 -0
  125. data/demo/grph1/sgpack/sgtonz.rb +66 -0
  126. data/demo/grph1/slpack/slpk01.rb +37 -0
  127. data/demo/grph1/slpack/slpk02.rb +29 -0
  128. data/demo/grph1/slpack/slpk03.rb +36 -0
  129. data/demo/grph1/slpack/slpk04.rb +36 -0
  130. data/demo/grph2/g2pack/g2pk01.rb +78 -0
  131. data/demo/grph2/g2pack/g2pk02.rb +75 -0
  132. data/demo/grph2/grpack/grpk01.rb +65 -0
  133. data/demo/grph2/ucpack/ucpk01.rb +95 -0
  134. data/demo/grph2/ucpack/ucpk02.rb +95 -0
  135. data/demo/grph2/udegpk/u2df01.rb +50 -0
  136. data/demo/grph2/udegpk/u2df02.rb +76 -0
  137. data/demo/grph2/udegpk/u2df03.rb +80 -0
  138. data/demo/grph2/udegpk/u2df04.rb +52 -0
  139. data/demo/grph2/udegpk/u2df05.rb +70 -0
  140. data/demo/grph2/udegpk/u2df06.rb +59 -0
  141. data/demo/grph2/udegpk/u2df07.rb +68 -0
  142. data/demo/grph2/udegpk/u2df08.rb +91 -0
  143. data/demo/grph2/udegpk/u2df09b.rb +88 -0
  144. data/demo/grph2/udegpk/u2df09c.rb +89 -0
  145. data/demo/grph2/udegpk/u2df09e.rb +88 -0
  146. data/demo/grph2/udegpk/u2df09f.rb +89 -0
  147. data/demo/grph2/ulpack/ulpk01.rb +111 -0
  148. data/demo/grph2/ulpack/ulpk01n.rb +111 -0
  149. data/demo/grph2/ulpack/ulpk02.rb +111 -0
  150. data/demo/grph2/ulpack/ulpk02n.rb +111 -0
  151. data/demo/grph2/umpack/t811231.dat +296 -0
  152. data/demo/grph2/umpack/test01.rb +69 -0
  153. data/demo/grph2/umpack/test02.rb +64 -0
  154. data/demo/grph2/umpack/test03.rb +84 -0
  155. data/demo/grph2/umpack/test04.rb +54 -0
  156. data/demo/grph2/umpack/test05.rb +85 -0
  157. data/demo/grph2/umpack/test06.rb +44 -0
  158. data/demo/grph2/umpack/test07.rb +43 -0
  159. data/demo/grph2/umpack/test08.rb +37 -0
  160. data/demo/grph2/umpack/test09.rb +86 -0
  161. data/demo/grph2/umpack/test10.rb +52 -0
  162. data/demo/grph2/umpack/umpk01.rb +65 -0
  163. data/demo/grph2/umpack/umpk02.rb +54 -0
  164. data/demo/grph2/umpack/umpk03.rb +46 -0
  165. data/demo/grph2/umpack/umpk04.rb +65 -0
  166. data/demo/grph2/umpack/umpk05.rb +84 -0
  167. data/demo/grph2/uspack/uspk01.rb +39 -0
  168. data/demo/grph2/uspack/uspk02.rb +47 -0
  169. data/demo/grph2/uspack/uspk03.rb +38 -0
  170. data/demo/grph2/uspack/uspk04.rb +64 -0
  171. data/demo/grph2/uspack/uspk05.rb +68 -0
  172. data/demo/grph2/uspack/uspk06.rb +43 -0
  173. data/demo/grph2/uspack/uspk07.rb +62 -0
  174. data/demo/grph2/uspack/uspk08.rb +46 -0
  175. data/demo/grph2/uspack/uspk09.rb +89 -0
  176. data/demo/grph2/uspack/uspk10.rb +48 -0
  177. data/demo/grph2/uspack/uspk11.rb +71 -0
  178. data/demo/grph2/uspack/uspk12.rb +51 -0
  179. data/demo/grph2/uupack/uupk01.rb +50 -0
  180. data/demo/grph2/uupack/uupk02.rb +74 -0
  181. data/demo/grph2/uupack/uupk03.rb +56 -0
  182. data/demo/grph2/uupack/uupk04.rb +84 -0
  183. data/demo/grph2/uupack/uupk05.rb +74 -0
  184. data/demo/grph2/uupack/uupk06.rb +77 -0
  185. data/demo/grph2/uupack/uupk07.rb +88 -0
  186. data/demo/grph2/uxyzpk/uxyz01.rb +38 -0
  187. data/demo/grph2/uxyzpk/uxyz02.rb +36 -0
  188. data/demo/grph2/uxyzpk/uxyz03.rb +37 -0
  189. data/demo/grph2/uxyzpk/uxyz04.rb +54 -0
  190. data/demo/grph2/uxyzpk/uxyz05.rb +41 -0
  191. data/demo/grph2/uxyzpk/uxyz06.rb +42 -0
  192. data/demo/grph2/uxyzpk/uxyz07.rb +38 -0
  193. data/demo/grph2/uxyzpk/uxyz08.rb +60 -0
  194. data/demo/grph2/uxyzpk/uxyz09.rb +52 -0
  195. data/demo/grph2/uxyzpk/uxyz10.rb +57 -0
  196. data/demo/grph2/ximage/MEMO +23 -0
  197. data/demo/grph2/ximage/tomsclm.dat +1344 -0
  198. data/demo/grph2/ximage/ximg01.rb +145 -0
  199. data/demo/math1/gt2dlib/gt2d01.rb +33 -0
  200. data/demo/math2/fftlib/fftl01.rb +28 -0
  201. data/demo/math2/fftlib/fftl02.rb +224 -0
  202. data/demo/math2/intrlib/intr01.rb +22 -0
  203. data/demo/math2/rnmlib/rnml01.rb +21 -0
  204. data/demo/math2/vstlib/vstl01.rb +29 -0
  205. data/demo/math2/vstlib/vstl02.rb +38 -0
  206. data/demo/rakuraku/color/color1.rb +61 -0
  207. data/demo/rakuraku/color/color2.rb +57 -0
  208. data/demo/rakuraku/color/color3.rb +81 -0
  209. data/demo/rakuraku/kihon/kihon1.rb +39 -0
  210. data/demo/rakuraku/kihon/kihon2.rb +56 -0
  211. data/demo/rakuraku/kihon/kihon3.rb +57 -0
  212. data/demo/rakuraku/kihon/kihon4.rb +70 -0
  213. data/demo/rakuraku/kihon/kihon5.rb +56 -0
  214. data/demo/rakuraku/kihon/kihon6.rb +40 -0
  215. data/demo/rakuraku/kihon/kihon7.rb +98 -0
  216. data/demo/rakuraku/kihon/kihon8.rb +93 -0
  217. data/demo/rakuraku/kihon/kihon9.rb +77 -0
  218. data/demo/rakuraku/kihon/kihona.rb +123 -0
  219. data/demo/rakuraku/kihon/kihonb.rb +73 -0
  220. data/demo/rakuraku/kihon/kihonc.rb +110 -0
  221. data/demo/rakuraku/layout/lay1.rb +29 -0
  222. data/demo/rakuraku/layout/lay2.rb +28 -0
  223. data/demo/rakuraku/layout/lay3.rb +29 -0
  224. data/demo/rakuraku/map3d/map3d1.rb +68 -0
  225. data/demo/rakuraku/map3d/map3d2.rb +67 -0
  226. data/demo/rakuraku/map3d/map3d3.rb +66 -0
  227. data/demo/rakuraku/map3d/map3d4.rb +107 -0
  228. data/demo/rakuraku/map3d/map3d5.rb +118 -0
  229. data/demo/rakuraku/map3d/map3d6.rb +96 -0
  230. data/demo/rakuraku/map3d/map3d7.rb +98 -0
  231. data/demo/rakuraku/miss/miss1.rb +76 -0
  232. data/demo/rakuraku/miss/miss2.rb +60 -0
  233. data/demo/rakuraku/quick/quick1.rb +35 -0
  234. data/demo/rakuraku/quick/quick2.rb +33 -0
  235. data/demo/rakuraku/quick/quick3.rb +46 -0
  236. data/demo/rakuraku/quick/quick4.rb +47 -0
  237. data/demo/rakuraku/quick/quick5.rb +46 -0
  238. data/demo/rakuraku/u2d/u2d1.rb +50 -0
  239. data/demo/rakuraku/u2d/u2d2.rb +51 -0
  240. data/demo/rakuraku/u2d/u2d3.rb +70 -0
  241. data/demo/rakuraku/u2d/u2d4.rb +59 -0
  242. data/demo/rakuraku/u2d/u2d5.rb +61 -0
  243. data/demo/rakuraku/u2d/u2d6.rb +57 -0
  244. data/demo/rakuraku/u2d/u2d7.rb +103 -0
  245. data/demo/rakuraku/uspack/uspac1.rb +35 -0
  246. data/demo/rakuraku/uspack/uspac2.rb +66 -0
  247. data/demo/rakuraku/uspack/uspac3.rb +37 -0
  248. data/demo/rakuraku/uspack/uspac4.rb +49 -0
  249. data/demo/rakuraku/uxyz/uxyz1.rb +37 -0
  250. data/demo/rakuraku/uxyz/uxyz2.rb +35 -0
  251. data/demo/rakuraku/uxyz/uxyz3.rb +38 -0
  252. data/demo/rakuraku/uxyz/uxyz4.rb +36 -0
  253. data/demo/rakuraku/uxyz/uxyz5.rb +57 -0
  254. data/demo/rakuraku/uxyz/uxyz6.rb +43 -0
  255. data/demo/rakuraku/uxyz/uxyz7.rb +39 -0
  256. data/demo/rakuraku/uxyz/uxyz8.rb +56 -0
  257. data/demo/rubydcloriginal/uemrkz1.rb +37 -0
  258. data/dummy.c +9 -0
  259. data/extconf.rb +133 -0
  260. data/grph1_csgi.c +119 -0
  261. data/grph1_scpack.c +1388 -0
  262. data/grph1_sgpack.c +3876 -0
  263. data/grph1_slpack.c +432 -0
  264. data/grph1_stpack.c +1044 -0
  265. data/grph1_swpack.c +1922 -0
  266. data/grph1_zgpack.c.org +141 -0
  267. data/grph2_grpack.c +368 -0
  268. data/grph2_ucpack.c +1232 -0
  269. data/grph2_udpack.c +1404 -0
  270. data/grph2_uepack.c +1443 -0
  271. data/grph2_ugpack.c +1073 -0
  272. data/grph2_uhpack.c +943 -0
  273. data/grph2_ulpack.c +1304 -0
  274. data/grph2_umpack.c +1540 -0
  275. data/grph2_uspack.c +2481 -0
  276. data/grph2_uupack.c +1689 -0
  277. data/grph2_uvpack.c +943 -0
  278. data/grph2_uwpack.c +552 -0
  279. data/grph2_uxpack.c +555 -0
  280. data/grph2_uypack.c +555 -0
  281. data/grph2_uzpack.c +1455 -0
  282. data/init.c.default +187 -0
  283. data/init.c.gtk +189 -0
  284. data/lib/dcl.rb +5084 -0
  285. data/math1_blklib.c +227 -0
  286. data/math1_chrlib.c +239 -0
  287. data/math1_fnclib.c +254 -0
  288. data/math1_gnmlib.c +356 -0
  289. data/math1_gt2dlib.c +514 -0
  290. data/math1_ifalib.c +427 -0
  291. data/math1_indxlib.c +709 -0
  292. data/math1_intlib.c +167 -0
  293. data/math1_lrllib.c +817 -0
  294. data/math1_maplib.c +172 -0
  295. data/math1_oslib.c +111 -0
  296. data/math1_rfalib.c +1417 -0
  297. data/math1_rfblib.c +232 -0
  298. data/math1_sublib.c +221 -0
  299. data/math1_syslib.c +2025 -0
  300. data/math1_vialib.c +1156 -0
  301. data/math1_viblib.c +1027 -0
  302. data/math1_vralib.c +1156 -0
  303. data/math1_vrblib.c +1027 -0
  304. data/math1_xfclib.c +142 -0
  305. data/math2_fftlib.c +833 -0
  306. data/math2_intrlib.c +138 -0
  307. data/math2_rnmlib.c +226 -0
  308. data/math2_shtlib.c +1568 -0
  309. data/math2_vstlib.c +366 -0
  310. data/misc1_chnlib.c +179 -0
  311. data/misc1_datelib.c +953 -0
  312. data/misc1_fmtlib.c +99 -0
  313. data/misc1_misclib.c +118 -0
  314. data/misc1_randlib.c +142 -0
  315. data/misc1_timelib.c +380 -0
  316. data/obsolete/README +2 -0
  317. data/obsolete/dcl_ext.html +112 -0
  318. data/obsolete/dcl_ext.rb +313 -0
  319. 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"