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,9 @@
1
+ # util.rb
2
+ # $Id: util.rb,v 1.1.1.1 2011-02-23 07:21:28 horinout Exp $
3
+
4
+ class String
5
+ def <<(str)
6
+ self.concat str.to_s
7
+ self
8
+ end
9
+ end
@@ -0,0 +1,671 @@
1
+ # variable.rb - Attribute specific modules
2
+ # $Id: variable.rb,v 1.1.1.1 2011-02-23 07:21:28 horinout Exp $
3
+
4
+ require "./util"
5
+ require "./def"
6
+
7
+ module Input
8
+ PREFIX = "i_"
9
+ def input?; true; end
10
+ end
11
+
12
+ module Output
13
+ PREFIX = "o_"
14
+ def output?; true; end
15
+ end
16
+
17
+ module Working
18
+ PREFIX = "w_"
19
+ def work?; true; end
20
+ end
21
+
22
+ module InputOutput
23
+ PREFIX = "io_"
24
+ def input?; true; end
25
+ def output?; true; end
26
+ end
27
+
28
+ def Variable(name, vtype, attr, ary, charlen)
29
+ vt = vtype.capitalize
30
+ at = case attr
31
+ when "i"
32
+ "Input"
33
+ when "o"
34
+ "Output"
35
+ when "io"
36
+ "InputOutput"
37
+ when "t"
38
+ "Working"
39
+ end
40
+ ar = ary ? "Array" : ""
41
+ klass = eval(vt + at + ar + "Variable")
42
+ klass.new(name, ary, charlen)
43
+ end
44
+
45
+ class Variable
46
+ def initialize(name, ary, *arg)
47
+ @name = name
48
+ @ary = ary
49
+ @arysize = nil
50
+ @aryrank = nil
51
+ end
52
+
53
+ attr_reader :name;
54
+ attr_reader :ary;
55
+ attr_reader :aryrank;
56
+
57
+ def prefix
58
+ self.class::PREFIX
59
+ end
60
+
61
+ def vartype
62
+ self.class::VARTYPE
63
+ end
64
+
65
+ def arg_name
66
+ "&" + prefix + name
67
+ end
68
+
69
+ def localvariable
70
+ [vartype, prefix+name]
71
+ end
72
+
73
+ def ftnlen
74
+ nil
75
+ end
76
+
77
+ def checktype
78
+ "/* checktype: not implemented for #{name} (#{self.class}) */\n"
79
+ end
80
+
81
+ def initialization
82
+ "/* initialization: not implemented for #{name} (#{self.class}) */\n"
83
+ end
84
+
85
+ def allocworkingarea
86
+ nil
87
+ end
88
+
89
+ def getresult
90
+ "/* getresult: not implemented for #{name} (#{self.class}) */\n"
91
+ end
92
+
93
+ def freecary
94
+ nil
95
+ end
96
+
97
+ def freeworkingarea
98
+ nil
99
+ end
100
+
101
+ def input?; false; end
102
+ def output?; false; end
103
+ def work?; false; end
104
+
105
+ end
106
+
107
+ ## Type specific modules
108
+
109
+ module DefaultType
110
+ def basic_r2c(r, c)
111
+ "/* not implemented */"
112
+ end
113
+
114
+ def basic_c2r(r, c)
115
+ "/* not implemented */"
116
+ end
117
+ end
118
+
119
+ module CharacterType
120
+ include DefaultType
121
+
122
+ VARTYPE = "char *"
123
+
124
+ def initialize(name, ary, *arg)
125
+ super
126
+ if arg[0]
127
+ @charlen = (arg[0] == "*") ? "DFLT_SIZE" : arg[0]
128
+ else
129
+ @charlen = "1"
130
+ end
131
+ end
132
+
133
+ def basic_r2c(r, c)
134
+ %Q$#{c} = StringValuePtr(#{r});\n$
135
+ end
136
+
137
+ def basic_r2c_copy(r, c)
138
+ type = self.vartype.gsub(/\s+\*$/, "")
139
+ %Q$#{c} = ALLOCA_N(#{type}, strlen(StringValuePtr(#{r}))+1);\n$ +
140
+ %Q$strcpy(#{c}, StringValuePtr(#{r}));\n$
141
+ end
142
+
143
+ def basic_c2r(r, c)
144
+ %Q$#{r} = rb_str_new2(#{c});\n$
145
+ end
146
+ end
147
+
148
+ module IntegerType
149
+ include DefaultType
150
+
151
+ VARTYPE = "integer"
152
+
153
+ def basic_r2c(r, c)
154
+ %Q$#{c} = NUM2INT(#{r});\n$
155
+ end
156
+
157
+ def basic_c2r(r, c)
158
+ %Q$#{r} = INT2NUM(#{c});\n$
159
+ end
160
+ end
161
+
162
+ module RealType
163
+ include DefaultType
164
+
165
+ VARTYPE = "real"
166
+
167
+ def basic_r2c(r, c)
168
+ %Q$#{c} = (#{VARTYPE})NUM2DBL(#{r});\n$
169
+ end
170
+
171
+ def basic_c2r(r, c)
172
+ %Q$#{r} = rb_float_new((double)#{c});\n$
173
+ end
174
+ end
175
+
176
+ module ComplexType
177
+ include DefaultType
178
+
179
+ VARTYPE = "complex"
180
+ end
181
+
182
+ module LogicalType
183
+ include DefaultType
184
+
185
+ VARTYPE = "logical"
186
+
187
+ def basic_r2c(r, c)
188
+ %Q$#{c} = ((#{r} == Qnil)||(#{r} == Qfalse)) ? FALSE_ : TRUE_;\n$
189
+ end
190
+
191
+ def basic_c2r(r, c)
192
+ %Q$#{r} = (#{c} == FALSE_) ? Qfalse : Qtrue;\n$
193
+ end
194
+ end
195
+
196
+ ## Basic Variables
197
+
198
+ class CharacterVariable < Variable
199
+ include CharacterType
200
+
201
+ def arg_name
202
+ "" + prefix + name
203
+ end
204
+
205
+ def ftnlen
206
+ if self.input?
207
+ "(ftnlen)strlen(#{prefix+name})"
208
+ else
209
+ "(ftnlen)#{@charlen}"
210
+ end
211
+ end
212
+
213
+ def checktype
214
+ "" +
215
+ %Q$if (TYPE(#{name}) != T_STRING) {\n$ +
216
+ %Q$ #{name} = rb_funcall(#{name}, rb_intern("to_str"), 0);\n$ +
217
+ %Q$}\n$
218
+ end
219
+
220
+ def initialization
221
+ if self.input? && self.output?
222
+ basic_r2c_copy(name, prefix+name)
223
+ else
224
+ basic_r2c(name, prefix+name)
225
+ end
226
+ end
227
+
228
+ def allocworkingarea # kuro: +1 need ?
229
+ type = vartype.gsub(/\s+\*$/, "")
230
+ len = (@charlen + "+1").gsub(/^1[+]1/,"2")
231
+ %Q$#{prefix+name}= ALLOCA_N(#{type}, (#{len}));\n$ +
232
+ %Q$memset(#{prefix+name}, '\\0', #{len});\n$
233
+ end
234
+
235
+ def getresult
236
+ basic_c2r(name, prefix+name)
237
+ end
238
+
239
+ def freeworkingarea
240
+ nil
241
+ end
242
+ end
243
+
244
+ class IntegerVariable < Variable
245
+ include IntegerType
246
+
247
+ def checktype
248
+ "" +
249
+ %Q$if ((TYPE(#{name}) != T_BIGNUM) || (TYPE(#{name}) != T_FIXNUM)) {\n$ +
250
+ %Q$ #{name} = rb_funcall(#{name}, rb_intern("to_i"), 0);\n$ +
251
+ %Q$}\n$
252
+ end
253
+
254
+ def initialization
255
+ basic_r2c(name, prefix+name)
256
+ end
257
+
258
+ def getresult
259
+ basic_c2r(name, prefix+name)
260
+ end
261
+ end
262
+
263
+ class RealVariable < Variable
264
+ include RealType
265
+
266
+ def checktype
267
+ "" +
268
+ %Q$if (TYPE(#{name}) != T_FLOAT) {\n$ +
269
+ %Q$ #{name} = rb_funcall(#{name}, rb_intern("to_f"), 0);\n$ +
270
+ %Q$}\n$
271
+ end
272
+
273
+ def initialization
274
+ basic_r2c(name, prefix+name)
275
+ end
276
+
277
+ def getresult
278
+ basic_c2r(name, prefix+name)
279
+ end
280
+ end
281
+
282
+ class ComplexVariable < Variable
283
+ include ComplexType
284
+
285
+ end
286
+
287
+ class LogicalVariable < Variable
288
+ include LogicalType
289
+
290
+ def checktype
291
+ nil
292
+ end
293
+
294
+ def initialization
295
+ basic_r2c(name, prefix+name)
296
+ end
297
+
298
+ def getresult
299
+ basic_c2r(name, prefix+name)
300
+ end
301
+ end
302
+
303
+ ### Character
304
+ class CharacterInputVariable < CharacterVariable
305
+ include Input
306
+ end
307
+
308
+ class CharacterOutputVariable < CharacterVariable
309
+ include Output
310
+ end
311
+
312
+ class CharacterInputOutputVariable < CharacterVariable
313
+ include InputOutput
314
+ end
315
+
316
+ class CharacterWorkingVariable < CharacterVariable
317
+ include Working
318
+ end
319
+
320
+ ### Integer
321
+ class IntegerInputVariable < IntegerVariable
322
+ include Input
323
+ end
324
+
325
+ class IntegerOutputVariable < IntegerVariable
326
+ include Output
327
+ end
328
+
329
+ class IntegerInputOutputVariable < IntegerVariable
330
+ include InputOutput
331
+ end
332
+
333
+ class IntegerWorkingVariable < IntegerVariable
334
+ include Working
335
+ end
336
+
337
+ ### Real
338
+ class RealInputVariable < RealVariable
339
+ include Input
340
+ end
341
+
342
+ class RealOutputVariable < RealVariable
343
+ include Output
344
+ end
345
+
346
+ class RealInputOutputVariable < RealVariable
347
+ include InputOutput
348
+ end
349
+
350
+ class RealWorkingVariable < RealVariable
351
+ include Working
352
+ end
353
+
354
+ ### Complex
355
+ class ComplexInputVariable < ComplexVariable
356
+ include Input
357
+ end
358
+
359
+ class ComplexOutputVariable < ComplexVariable
360
+ include Output
361
+ end
362
+
363
+ class ComplexInputOutputVariable < ComplexVariable
364
+ include InputOutput
365
+ end
366
+
367
+ class ComplexWorkingVariable < ComplexVariable
368
+ include Working
369
+ end
370
+
371
+ ### Logical
372
+ class LogicalInputVariable < LogicalVariable
373
+ include Input
374
+ end
375
+
376
+ class LogicalOutputVariable < LogicalVariable
377
+ include Output
378
+ end
379
+
380
+ class LogicalInputOutputVariable < LogicalVariable
381
+ include InputOutput
382
+ end
383
+
384
+ class LogicalWorkingVariable < LogicalVariable
385
+ include Working
386
+ end
387
+
388
+ ## Array Variables
389
+
390
+ class ArrayVariable < Variable
391
+
392
+ def setarysize(size)
393
+ @arysize = size
394
+ @aryrank = size.size
395
+ end
396
+
397
+ def arysize
398
+ if (@aryrank == 1)
399
+ if (@arysize[0].to_s !~ /\(/)
400
+ "(" + @arysize[0].to_s + ")"
401
+ else
402
+ @arysize[0].to_s
403
+ end
404
+ else
405
+ "(" + @arysize.join("*").gsub(/\*1/, "") + ")"
406
+ end
407
+ end
408
+
409
+ def aryshape
410
+ # if (@aryrank == 1)
411
+ # if (@arysize[0].to_s !~ /\(/)
412
+ # "(" + @arysize[0].to_s + ")"
413
+ # else
414
+ # @arysize[0].to_s
415
+ # end
416
+ # else
417
+ "{"+ @arysize.join(", ").gsub(/\*1/, "")+"}"
418
+ # end
419
+ end
420
+
421
+ def arg_name
422
+ "" + prefix + name
423
+ end
424
+
425
+ def allocworkingarea
426
+ type = vartype.gsub(/\s+\*$/, "")
427
+ %Q$#{prefix+name}= ALLOCA_N(#{type}, #{arysize});\n$
428
+ end
429
+
430
+ end
431
+
432
+ class CharacterArrayVariable < ArrayVariable
433
+ include CharacterType
434
+
435
+ def arysize
436
+ "(" + (@arysize.join("*") + "*" + @charlen).gsub(/\*1/, "") + ")"
437
+ end
438
+
439
+ def ftnlen
440
+ "(ftnlen)#{@charlen}"
441
+ end
442
+
443
+ def checktype
444
+ "" +
445
+ %Q$if (TYPE(#{name}) == T_STRING) {\n$ +
446
+ %Q$ #{name} = rb_Array(#{name});\n$ +
447
+ %Q$}\n$ +
448
+ %Q$if (TYPE(#{name}) != T_ARRAY) {\n$ +
449
+ %Q$ rb_raise(rb_eTypeError, "invalid type");\n$ +
450
+ %Q$}\n$
451
+ end
452
+
453
+ def initialization
454
+ %Q$#{prefix+name} = #{OBJ2CCHARARY}(#{name}, #{arysize}, #{@charlen});\n$
455
+ end
456
+
457
+ def allocworkingarea
458
+ type = vartype.gsub(/\s+\*$/, "")
459
+ %Q$#{prefix+name}= ALLOCA_N(#{type}, #{arysize});\n$ +
460
+ %Q$memset(#{prefix+name}, '\\0', #{arysize});\n$
461
+ end
462
+
463
+ def getresult
464
+ %Q$#{name} = #{CCHARARY2OBJ}(#{prefix+name}, #{arysize}, #{@charlen});\n$
465
+ end
466
+
467
+ def freecary
468
+ %Q$#{FREECCHARARY}(#{prefix+name});\n$
469
+ end
470
+
471
+ end
472
+
473
+ class IntegerArrayVariable < ArrayVariable
474
+ include IntegerType
475
+
476
+ VARTYPE += " *"
477
+
478
+ def checktype
479
+ "" +
480
+ %Q$if ((TYPE(#{name}) == T_BIGNUM) || (TYPE(#{name}) == T_FIXNUM)) {\n$ +
481
+ %Q$ #{name} = rb_Array(#{name});\n$ +
482
+ %Q$}\n$ +
483
+ %Q$/* if ((TYPE(#{name}) != T_ARRAY) && \n$ +
484
+ %Q$ (rb_obj_is_kind_of(#{name}, cNArray) != Qtrue)) {\n$ +
485
+ %Q$ rb_raise(rb_eTypeError, "invalid type");\n$ +
486
+ %Q$ } -- no check since obj2c*ary will do that */\n$
487
+ end
488
+
489
+ def initialization
490
+ %Q$#{prefix+name} = #{OBJ2CINTEGERARY}(#{name});\n$
491
+ end
492
+
493
+ def getresult
494
+ %Q${int array_shape[#{aryrank}] = #{aryshape};\n$ +
495
+ %Q$ #{name} = #{CINTEGERARY2OBJ}(#{prefix+name}, #{arysize}, #{aryrank}, array_shape);\n$ +
496
+ %Q$ }\n$
497
+ end
498
+
499
+ def freecary
500
+ %Q$#{FREECINTEGERARY}(#{prefix+name});\n$
501
+ end
502
+ end
503
+
504
+ class RealArrayVariable < ArrayVariable
505
+ include RealType
506
+ VARTYPE += " *"
507
+
508
+ def checktype
509
+ "" +
510
+ %Q$if (TYPE(#{name}) == T_FLOAT) {\n$ +
511
+ %Q$ #{name} = rb_Array(#{name});\n$ +
512
+ %Q$}\n$ +
513
+ %Q$/* if ((TYPE(#{name}) != T_ARRAY) && \n$ +
514
+ %Q$ (rb_obj_is_kind_of(#{name}, cNArray) != Qtrue)) {\n$ +
515
+ %Q$ rb_raise(rb_eTypeError, "invalid type");\n$ +
516
+ %Q$ } -- no check since obj2c*ary will do that */\n$
517
+ end
518
+
519
+ def initialization
520
+ %Q$#{prefix+name} = #{OBJ2CREALARY}(#{name});\n$
521
+ end
522
+
523
+ def getresult
524
+ %Q${int array_shape[#{aryrank}] = #{aryshape};\n$ +
525
+ %Q$ #{name} = #{CREALARY2OBJ}(#{prefix+name}, #{arysize}, #{aryrank}, array_shape);\n$ +
526
+ %Q$ }\n$
527
+ end
528
+
529
+ def freecary
530
+ %Q$#{FREECREALARY}(#{prefix+name});\n$
531
+ end
532
+ end
533
+
534
+ class ComplexArrayVariable < ArrayVariable
535
+ include ComplexType
536
+
537
+ VARTYPE += " *"
538
+
539
+ # def checktype
540
+ # "" +
541
+ # %Q$if (TYPE(#{name}) == T_XXXXX) {\n$ +
542
+ # %Q$ #{name} = rb_Array(#{name});\n$ +
543
+ # %Q$}\n$ +
544
+ # %Q$if (TYPE(#{name}) != T_ARRAY) {\n$ +
545
+ # %Q$ rb_raise(rb_eTypeError, "invalid type");\n$ +
546
+ # %Q$}\n$
547
+ # end
548
+
549
+ # def initialization
550
+ # %Q$#{prefix+name} = #{OBJ2CCOMPLEXARY}(#{name});\n$
551
+ # end
552
+
553
+ # def getresult
554
+ # %Q$#{name} = #{CCOMPLEXARY2OBJ}(#{prefix+name}, #{arysize}, "");\n$
555
+ # end
556
+
557
+ # def freecary
558
+ # %Q$ #{FREECCOMPLEXARY}(#{prefix+name});\n$
559
+ # end
560
+ end
561
+
562
+ class LogicalArrayVariable < ArrayVariable
563
+ include LogicalType
564
+
565
+ VARTYPE += " *"
566
+
567
+ def checktype
568
+ "" +
569
+ %Q$#{name} = rb_Array(#{name});\n$
570
+ end
571
+
572
+ def initialization
573
+ %Q$#{prefix+name} = #{OBJ2CLOGICALARY}(#{name});\n$
574
+ end
575
+
576
+ def getresult
577
+ %Q${int array_shape[#{aryrank}] = #{aryshape};\n$ +
578
+ %Q$ #{name} = #{CLOGICALARY2OBJ}(#{prefix+name}, #{arysize}, #{aryrank}, array_shape);\n$ +
579
+ %Q$ }\n$
580
+ end
581
+
582
+ def freecary
583
+ %Q$#{FREECLOGICALARY2}(#{prefix+name});\n$
584
+ end
585
+ end
586
+
587
+ ### Character
588
+ class CharacterInputArrayVariable < CharacterArrayVariable
589
+ include Input
590
+ end
591
+
592
+ class CharacterOutputArrayVariable < CharacterArrayVariable
593
+ include Output
594
+ end
595
+
596
+ class CharacterInputOutputArrayVariable < CharacterArrayVariable
597
+ include InputOutput
598
+ end
599
+
600
+ class CharacterWorkingArrayVariable < CharacterArrayVariable
601
+ include Working
602
+ end
603
+
604
+ ### Integer
605
+ class IntegerInputArrayVariable < IntegerArrayVariable
606
+ include Input
607
+ end
608
+
609
+ class IntegerOutputArrayVariable < IntegerArrayVariable
610
+ include Output
611
+ end
612
+
613
+ class IntegerInputOutputArrayVariable < IntegerArrayVariable
614
+ include InputOutput
615
+ end
616
+
617
+ class IntegerWorkingArrayVariable < IntegerArrayVariable
618
+ include Working
619
+ end
620
+
621
+ ### Real
622
+ class RealInputArrayVariable < RealArrayVariable
623
+ include Input
624
+ end
625
+
626
+ class RealOutputArrayVariable < RealArrayVariable
627
+ include Output
628
+ end
629
+
630
+ class RealInputOutputArrayVariable < RealArrayVariable
631
+ include InputOutput
632
+ end
633
+
634
+ class RealWorkingArrayVariable < RealArrayVariable
635
+ include Working
636
+ end
637
+
638
+ ### Complex
639
+ class ComplexInputArrayVariable < ComplexArrayVariable
640
+ include Input
641
+ end
642
+
643
+ class ComplexOutputArrayVariable < ComplexArrayVariable
644
+ include Output
645
+ end
646
+
647
+ class ComplexInputOutputArrayVariable < ComplexArrayVariable
648
+ include InputOutput
649
+ end
650
+
651
+ class ComplexWorkingArrayVariable < ComplexArrayVariable
652
+ include Working
653
+ end
654
+
655
+ ### Logical
656
+ class LogicalInputArrayVariable < LogicalArrayVariable
657
+ include Input
658
+ end
659
+
660
+ class LogicalOutputArrayVariable < LogicalArrayVariable
661
+ include Output
662
+ end
663
+
664
+ class LogicalInputOutputArrayVariable < LogicalArrayVariable
665
+ include InputOutput
666
+ end
667
+
668
+ class LogicalWorkingArrayVariable < LogicalArrayVariable
669
+ include Working
670
+ end
671
+