carray 1.3.5 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSES +22 -0
  3. data/README.md +18 -21
  4. data/Rakefile +31 -0
  5. data/carray.gemspec +13 -26
  6. data/{ca_iter_block.c → ext/ca_iter_block.c} +13 -13
  7. data/{ca_iter_dimension.c → ext/ca_iter_dimension.c} +16 -16
  8. data/{ca_iter_window.c → ext/ca_iter_window.c} +10 -10
  9. data/{ca_obj_array.c → ext/ca_obj_array.c} +60 -55
  10. data/{ca_obj_bitarray.c → ext/ca_obj_bitarray.c} +12 -12
  11. data/{ca_obj_bitfield.c → ext/ca_obj_bitfield.c} +7 -7
  12. data/{ca_obj_block.c → ext/ca_obj_block.c} +42 -42
  13. data/{ca_obj_fake.c → ext/ca_obj_fake.c} +7 -7
  14. data/{ca_obj_farray.c → ext/ca_obj_farray.c} +18 -18
  15. data/{ca_obj_field.c → ext/ca_obj_field.c} +15 -15
  16. data/{ca_obj_grid.c → ext/ca_obj_grid.c} +27 -27
  17. data/{ca_obj_mapping.c → ext/ca_obj_mapping.c} +9 -9
  18. data/{ca_obj_object.c → ext/ca_obj_object.c} +37 -37
  19. data/{ca_obj_reduce.c → ext/ca_obj_reduce.c} +1 -1
  20. data/{ca_obj_refer.c → ext/ca_obj_refer.c} +33 -33
  21. data/{ca_obj_repeat.c → ext/ca_obj_repeat.c} +43 -43
  22. data/{ca_obj_select.c → ext/ca_obj_select.c} +2 -2
  23. data/{ca_obj_shift.c → ext/ca_obj_shift.c} +23 -23
  24. data/{ca_obj_transpose.c → ext/ca_obj_transpose.c} +23 -23
  25. data/{ca_obj_unbound_repeat.c → ext/ca_obj_unbound_repeat.c} +55 -55
  26. data/{ca_obj_window.c → ext/ca_obj_window.c} +26 -26
  27. data/{carray.h → ext/carray.h} +77 -51
  28. data/{carray_access.c → ext/carray_access.c} +133 -91
  29. data/{carray_attribute.c → ext/carray_attribute.c} +12 -12
  30. data/{carray_call_cfunc.c → ext/carray_call_cfunc.c} +0 -0
  31. data/{carray_cast.c → ext/carray_cast.c} +6 -6
  32. data/{carray_cast_func.rb → ext/carray_cast_func.rb} +0 -0
  33. data/{carray_class.c → ext/carray_class.c} +0 -0
  34. data/{carray_conversion.c → ext/carray_conversion.c} +11 -13
  35. data/{carray_copy.c → ext/carray_copy.c} +19 -19
  36. data/{carray_core.c → ext/carray_core.c} +2 -2
  37. data/ext/carray_data_type.c +66 -0
  38. data/{carray_element.c → ext/carray_element.c} +9 -9
  39. data/{carray_generate.c → ext/carray_generate.c} +67 -1
  40. data/{carray_iterator.c → ext/carray_iterator.c} +40 -38
  41. data/{carray_loop.c → ext/carray_loop.c} +24 -24
  42. data/{carray_mask.c → ext/carray_mask.c} +17 -6
  43. data/{carray_math.rb → ext/carray_math.rb} +25 -25
  44. data/ext/{mathfunc/carray_mathfunc.c → carray_mathfunc.c} +0 -0
  45. data/{carray_numeric.c → ext/carray_numeric.c} +1 -1
  46. data/{carray_operator.c → ext/carray_operator.c} +32 -9
  47. data/{carray_order.c → ext/carray_order.c} +2 -153
  48. data/{carray_sort_addr.c → ext/carray_sort_addr.c} +0 -0
  49. data/{carray_stat.c → ext/carray_stat.c} +5 -5
  50. data/{carray_stat_proc.rb → ext/carray_stat_proc.rb} +23 -23
  51. data/{carray_test.c → ext/carray_test.c} +22 -21
  52. data/{carray_undef.c → ext/carray_undef.c} +0 -0
  53. data/{carray_utils.c → ext/carray_utils.c} +0 -0
  54. data/{extconf.rb → ext/extconf.rb} +0 -5
  55. data/{mkmath.rb → ext/mkmath.rb} +12 -2
  56. data/{ruby_carray.c → ext/ruby_carray.c} +9 -2
  57. data/{ruby_ccomplex.c → ext/ruby_ccomplex.c} +0 -0
  58. data/{ruby_float_func.c → ext/ruby_float_func.c} +0 -0
  59. data/{version.h → ext/version.h} +5 -5
  60. data/{version.rb → ext/version.rb} +0 -0
  61. data/lib/carray.rb +49 -7
  62. data/lib/carray/{base/autoload.rb → autoload.rb} +48 -6
  63. data/lib/carray/autoload/autoload_base.rb +1 -5
  64. data/lib/carray/autoload/autoload_gem_cairo.rb +9 -0
  65. data/lib/carray/autoload/autoload_gem_ffi.rb +9 -0
  66. data/lib/carray/autoload/autoload_gem_gnuplot.rb +2 -0
  67. data/lib/carray/autoload/autoload_gem_io_csv.rb +14 -0
  68. data/lib/carray/autoload/autoload_gem_io_pg.rb +6 -0
  69. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +12 -0
  70. data/lib/carray/autoload/autoload_gem_narray.rb +10 -0
  71. data/lib/carray/autoload/autoload_gem_numo_narray.rb +15 -0
  72. data/lib/carray/autoload/autoload_gem_opencv.rb +16 -0
  73. data/lib/carray/autoload/autoload_gem_random.rb +8 -0
  74. data/lib/carray/autoload/autoload_gem_rmagick.rb +23 -0
  75. data/lib/carray/autoload/{autoload_graphics_zimg.rb → autoload_gem_zimg.rb} +0 -0
  76. data/lib/carray/basic.rb +193 -0
  77. data/lib/carray/compose.rb +291 -0
  78. data/lib/carray/construct.rb +445 -0
  79. data/lib/carray/convert.rb +115 -0
  80. data/lib/carray/{base/inspect.rb → inspect.rb} +6 -6
  81. data/lib/carray/io/imagemagick.rb +1 -1
  82. data/lib/carray/{base/iterator.rb → iterator.rb} +3 -3
  83. data/lib/carray/mask.rb +91 -0
  84. data/lib/carray/{base/math.rb → math.rb} +17 -47
  85. data/lib/carray/math/histogram.rb +7 -7
  86. data/lib/carray/mkmf.rb +8 -0
  87. data/lib/carray/object/ca_obj_pack.rb +8 -8
  88. data/lib/carray/obsolete.rb +272 -0
  89. data/lib/carray/ordering.rb +157 -0
  90. data/lib/carray/{base/serialize.rb → serialize.rb} +28 -53
  91. data/lib/carray/string.rb +190 -0
  92. data/lib/carray/{base/struct.rb → struct.rb} +20 -20
  93. data/lib/carray/{io/table.rb → table.rb} +1 -9
  94. data/lib/carray/testing.rb +56 -0
  95. data/lib/carray/time.rb +78 -0
  96. data/lib/carray/transform.rb +100 -0
  97. data/misc/Methods.ja.md +182 -0
  98. data/{NOTE → misc/NOTE} +0 -0
  99. data/test/test_ALL.rb +0 -2
  100. data/test/test_order.rb +7 -7
  101. data/test/test_ref_store.rb +13 -13
  102. data/test/test_stat.rb +7 -15
  103. data/{devel → utils}/guess_shape.rb +0 -0
  104. data/utils/{diff_method.rb → monkey_patch_methods.rb} +17 -7
  105. metadata +100 -254
  106. data/COPYING +0 -56
  107. data/GPL +0 -340
  108. data/Gemfile +0 -8
  109. data/Gemfile.lock +0 -33
  110. data/LEGAL +0 -50
  111. data/TODO +0 -5
  112. data/carray_random.c +0 -531
  113. data/ext/calculus/carray_calculus.c +0 -931
  114. data/ext/calculus/carray_interp.c +0 -358
  115. data/ext/calculus/extconf.rb +0 -12
  116. data/ext/calculus/lib/autoload/autoload_math_calculus.rb +0 -2
  117. data/ext/calculus/lib/math/calculus.rb +0 -119
  118. data/ext/calculus/lib/math/interp/adapter_interp1d.rb +0 -31
  119. data/ext/fortio/extconf.rb +0 -3
  120. data/ext/fortio/lib/carray/autoload/autoload_fortran_format.rb +0 -5
  121. data/ext/fortio/lib/carray/io/fortran_format.rb +0 -43
  122. data/ext/fortio/lib/fortio.rb +0 -3
  123. data/ext/fortio/lib/fortio/fortran_format.rb +0 -605
  124. data/ext/fortio/lib/fortio/fortran_format.tab.rb +0 -536
  125. data/ext/fortio/lib/fortio/fortran_format.y +0 -215
  126. data/ext/fortio/lib/fortio/fortran_namelist.rb +0 -151
  127. data/ext/fortio/lib/fortio/fortran_namelist.tab.rb +0 -470
  128. data/ext/fortio/lib/fortio/fortran_namelist.y +0 -213
  129. data/ext/fortio/lib/fortio/fortran_sequential.rb +0 -345
  130. data/ext/fortio/ruby_fortio.c +0 -182
  131. data/ext/fortio/test/test_H.rb +0 -5
  132. data/ext/fortio/test/test_T.rb +0 -7
  133. data/ext/fortio/test/test_fortran_format.rb +0 -86
  134. data/ext/fortio/test/test_namelist.rb +0 -25
  135. data/ext/fortio/test/test_namelist_write.rb +0 -10
  136. data/ext/fortio/test/test_sequential.rb +0 -13
  137. data/ext/fortio/test/test_sequential2.rb +0 -13
  138. data/ext/fortio/work/test.rb +0 -10
  139. data/ext/fortio/work/test_e.rb +0 -19
  140. data/ext/fortio/work/test_ep.rb +0 -10
  141. data/ext/fortio/work/test_parse.rb +0 -12
  142. data/ext/imagemap/carray_imagemap.c +0 -495
  143. data/ext/imagemap/doc/call_graph.dot +0 -28
  144. data/ext/imagemap/draw.c +0 -567
  145. data/ext/imagemap/extconf.rb +0 -13
  146. data/ext/imagemap/lib/autoload/autoload_graphics_imagemap.rb +0 -1
  147. data/ext/imagemap/lib/graphics/imagemap.rb +0 -273
  148. data/ext/imagemap/lib/image_map.rb +0 -4
  149. data/ext/imagemap/test/swath_index.rb +0 -83
  150. data/ext/imagemap/test/swath_warp.rb +0 -99
  151. data/ext/imagemap/test/test.rb +0 -23
  152. data/ext/imagemap/test/test_image.rb +0 -42
  153. data/ext/imagemap/test/test_line.rb +0 -14
  154. data/ext/imagemap/test/test_rotate.rb +0 -17
  155. data/ext/imagemap/test/test_triangle.rb +0 -20
  156. data/ext/imagemap/test/test_warp.rb +0 -26
  157. data/ext/mathfunc/extconf.rb +0 -18
  158. data/ext/mathfunc/lib/autoload/autoload_math_mathfunc.rb +0 -1
  159. data/ext/mathfunc/lib/math/mathfunc.rb +0 -15
  160. data/ext/mathfunc/test/test_hypot.rb +0 -5
  161. data/ext/mathfunc/test/test_j0.rb +0 -22
  162. data/ext/mathfunc/test/test_jn.rb +0 -8
  163. data/ext/mathfunc/test/test_sph.rb +0 -9
  164. data/ext/narray/README +0 -22
  165. data/ext/narray/ca_wrap_narray.c +0 -500
  166. data/ext/narray/carray_narray.c +0 -21
  167. data/ext/narray/extconf.rb +0 -57
  168. data/ext/narray/lib/autoload/autoload_math_narray.rb +0 -1
  169. data/ext/narray/lib/autoload/autoload_math_narray_miss.rb +0 -11
  170. data/ext/narray/lib/math/narray.rb +0 -17
  171. data/ext/narray/lib/math/narray_miss.rb +0 -45
  172. data/lib/carray/autoload/autoload_graphics_gnuplot.rb +0 -2
  173. data/lib/carray/autoload/autoload_io_csv.rb +0 -14
  174. data/lib/carray/autoload/autoload_io_pg.rb +0 -6
  175. data/lib/carray/autoload/autoload_io_sqlite3.rb +0 -12
  176. data/lib/carray/autoload/autoload_io_table.rb +0 -1
  177. data/lib/carray/autoload/autoload_math_interp.rb +0 -4
  178. data/lib/carray/base/basic.rb +0 -1090
  179. data/lib/carray/base/obsolete.rb +0 -131
  180. data/lib/carray/graphics/gnuplot.rb +0 -2131
  181. data/lib/carray/graphics/zimg.rb +0 -296
  182. data/lib/carray/io/csv.rb +0 -572
  183. data/lib/carray/io/pg.rb +0 -101
  184. data/lib/carray/io/sqlite3.rb +0 -215
  185. data/lib/carray/math/interp.rb +0 -57
  186. data/lib/carray/math/interp/adapter_gsl_spline.rb +0 -47
  187. data/mt19937ar.c +0 -182
  188. data/mt19937ar.h +0 -86
  189. data/rdoc_main.rb +0 -27
  190. data/rdoc_math.rb +0 -5
  191. data/rdoc_stat.rb +0 -31
  192. data/test/test_narray.rb +0 -64
  193. data/test/test_random.rb +0 -15
  194. data/utils/create_rdoc.sh +0 -9
  195. data/utils/make_tgz.sh +0 -3
@@ -1,31 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/math/interp/adapter_interp1d.rb
4
- #
5
- # This file is part of Ruby/CArray extension library.
6
- # You can redistribute it and/or modify it under the terms of
7
- # the Ruby Licence.
8
- #
9
- # Copyright (C) 2005 Hiroki Motoyoshi
10
- #
11
- # ----------------------------------------------------------------------------
12
-
13
- require "carray/math/interp"
14
-
15
- class CA::Interp::CAInterp1D < CA::Interp::Adapter
16
-
17
- install_adapter "interp1d"
18
-
19
- def initialize (scales, value, options={})
20
- @y = value
21
- @x = scales
22
- end
23
-
24
- def evaluate (x0)
25
- @y.interpolate(@x, x0)
26
- end
27
-
28
- alias grid evaluate
29
-
30
- end
31
-
@@ -1,3 +0,0 @@
1
- require "mkmf"
2
-
3
- create_makefile("fortio_ext")
@@ -1,5 +0,0 @@
1
-
2
- class CArray
3
- autoload_method "self.from_fortran_format", "carray/io/fortran_format"
4
- autoload_method "to_fortran_format", "carray/io/fortran_format"
5
- end
@@ -1,43 +0,0 @@
1
- require "fortio"
2
-
3
- class CArray
4
-
5
- def self.from_fortran_format (fmt, io)
6
- case io
7
- when String
8
- io = StringIO.new(io)
9
- end
10
- case fmt
11
- when String
12
- fmt = FortranFormat.new(fmt)
13
- end
14
- data = []
15
- begin
16
- data << fmt.read(io)
17
- end until io.eof?
18
- return data.to_ca
19
- end
20
-
21
- def to_fortran_format (fmt, input="")
22
- case input
23
- when String
24
- io = StringIO.new(input)
25
- else
26
- io = input
27
- end
28
- case fmt
29
- when String
30
- fmt = FortranFormat.new(fmt)
31
- end
32
- n = fmt.count_args
33
- attach {
34
- self[nil].blocks(0...n).each do |blk|
35
- fmt.write(io, *blk.to_a)
36
- end
37
- }
38
- return input
39
- end
40
-
41
- end
42
-
43
-
@@ -1,3 +0,0 @@
1
- require "fortio/fortran_format"
2
- require "fortio/fortran_namelist"
3
- require "fortio/fortran_sequential"
@@ -1,605 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/io/fortran_format.rb
4
- #
5
- # This file is part of Ruby/CArray extension library.
6
- # You can redistribute it and/or modify it under the terms of
7
- # the Ruby Licence.
8
- #
9
- # Copyright (C) 2005 Hiroki Motoyoshi
10
- #
11
- # ----------------------------------------------------------------------------
12
- #
13
- # Supported format descriptors
14
- # ----------------------------
15
- # nFw.d : floating point
16
- # nEw.d : floating point
17
- # nDw.d : floating point
18
- # nGw.d : floating point
19
- # nESw.d :
20
- # nEd : exponential
21
- # nIw(.d) : integer
22
- # nLw : logical
23
- # nAw : string
24
- # nX : write n white space or skip reading by n-characters
25
- # Tn : move to n-character from line head
26
- # TLn : move left relative by n-characters
27
- # TRn : move right relative by n-characters
28
- # +P, -P
29
- # S, SP, SS
30
- # BN,BZ
31
- # nH... : hollerith string (e.g. 5Hhello)
32
- # '...', "..." : quoted string
33
- # / : line feed
34
- # $ : surppress line feed
35
- #
36
- # Short methods
37
- # -------------
38
- #
39
- # ### fortran_format(fmt, *vals)
40
- #
41
- # ### fortran_format_write(io, fmt, *vals)
42
- #
43
- # ### fortran_format_read(io, fmt)
44
- #
45
-
46
-
47
- require "fortio_ext"
48
- require "fortio/fortran_format.tab"
49
- require "stringio"
50
-
51
- class FortranFormat
52
-
53
- FORMAT_POOL = Hash.new { |hash, fmt|
54
- hash[fmt] = FortranFormatParser.new.parse(fmt)
55
- }
56
-
57
- def self.reset
58
- FORMAT_POOL.clear
59
- end
60
-
61
- def initialize (fmt)
62
- @format = FORMAT_POOL[fmt]
63
- end
64
-
65
- def write (io, *list)
66
- io ||= ""
67
- buf = StringIO.new()
68
- @format.write_as_root(buf, list)
69
- io << buf.string
70
- return io
71
- end
72
-
73
- def read (io, list = [])
74
- if io.is_a?(String)
75
- io = StringIO.new(io)
76
- end
77
- @format.read_as_root(io, list)
78
- return list
79
- end
80
-
81
- def count_args
82
- return @format.count_args
83
- end
84
-
85
- def inspect
86
- return "<FortranFormat: #{@format.inspect}>"
87
- end
88
-
89
- end
90
-
91
- def FortranFormat.check_length (len, str)
92
- if str.length > len
93
- return "*" * len
94
- else
95
- return str
96
- end
97
- end
98
-
99
- def FortranFormat (fmt)
100
- return FortranFormat.new(fmt)
101
- end
102
-
103
- def fortran_format_write (io, fmt, *data)
104
- if fmt.is_a?(FortranFormat)
105
- return fmt.write(io, *data)
106
- else
107
- return FortranFormat.new(fmt).write(io, *data)
108
- end
109
- end
110
-
111
- def fortran_format_read (io, fmt)
112
- if fmt.is_a?(FortranFormat)
113
- return fmt.read(io)
114
- else
115
- return FortranFormat.new(fmt).read(io)
116
- end
117
- end
118
-
119
- def fortran_format (fmt, *data)
120
- return fortran_format_write(nil, fmt, *data)
121
- end
122
-
123
- class FortranFormatParser
124
-
125
- State = Struct.new(:scale, :sign, :zero, :continue, :pos0, :tab_move)
126
-
127
- Group = Struct.new(:count, :member)
128
- class Group
129
- def write_as_root (io, list)
130
- state = State.new(0, false, false, false, io.pos, false)
131
- write(io, list, state)
132
- if state.continue
133
- if state.tab_move
134
- io.string.gsub!(/\000/, ' ')
135
- end
136
- else
137
- if state.tab_move
138
- io.string.gsub!(/\000/, ' ')
139
- io.seek(0, IO::SEEK_END)
140
- end
141
- io.puts
142
- end
143
- end
144
- def write (io, list, state)
145
- count.times do |i|
146
- member.each do |mem|
147
- mem.write(io, list, state)
148
- end
149
- end
150
- end
151
- def read_as_root (io, list)
152
- state = State.new(0, false, false, false, io.pos, false)
153
- read(io, list, state)
154
- unless state.continue
155
- io.gets
156
- end
157
- end
158
- def read (io, list, state)
159
- count.times do |i|
160
- member.each do |mem|
161
- mem.read(io, list, state)
162
- end
163
- end
164
- end
165
- def count_args
166
- return count*member.inject(0){|s,m| s + m.count_args}
167
- end
168
- def inspect
169
- count_str = count == 1 ? "" : count.to_s
170
- return "#{count_str}(" + member.map{|x| x.inspect}.join(",")+ ')'
171
- end
172
- end
173
-
174
- class Continue
175
- def write (io, list, state)
176
- state.continue = true
177
- end
178
- def read (io, list, state)
179
- state.continue = true
180
- end
181
- def count_args
182
- return 0
183
- end
184
- def inspect
185
- return "$"
186
- end
187
- end
188
-
189
- Flush = Struct.new(:count)
190
- class Flush
191
- def write (io, list, state)
192
- io << "\n" * count
193
- end
194
- def read (io, list, state)
195
- count.times do
196
- io.gets
197
- end
198
- end
199
- def count_args
200
- return count
201
- end
202
- def inspect
203
- count_str = count == 1 ? "" : count.to_s
204
- return "#{count_str}/"
205
- end
206
- end
207
-
208
- NodeS = Struct.new(:text)
209
- class NodeS
210
- def write (io, list, state)
211
- io << text
212
- end
213
- def read (io, list, state)
214
- raise RuntimeError, "constant string for reading"
215
- end
216
- def count_args
217
- return 0
218
- end
219
- def inspect
220
- if text !~ /'/
221
- return "'" + text + "'"
222
- else
223
- return '"' + text.gsub(/"/, '""') + '"'
224
- end
225
- end
226
- end
227
-
228
- NodeT= Struct.new(:n)
229
- class NodeT
230
- def write (io, list, state)
231
- io.pos = state.pos0 + n
232
- state.tab_move = true
233
- end
234
- def read (io, list, state)
235
- io.pos = state.pos0 + n
236
- end
237
- def count_args
238
- return 0
239
- end
240
- def inspect
241
- return "TL#{n}"
242
- end
243
- end
244
-
245
- NodeTL = Struct.new(:n)
246
- class NodeTL
247
- def write (io, list, state)
248
- io.pos -= n
249
- state.tab_move = true
250
- end
251
- def read (io, list, state)
252
- io.pos -= n
253
- end
254
- def count_args
255
- return 0
256
- end
257
- def inspect
258
- return "TL#{n}"
259
- end
260
- end
261
-
262
- NodeTR = Struct.new(:n)
263
- class NodeTR
264
- def write (io, list, state)
265
- io.pos += n
266
- state.tab_move = true
267
- end
268
- def read (io, list, state)
269
- io.pos += n
270
- end
271
- def count_args
272
- return 0
273
- end
274
- def inspect
275
- return "TR#{n}"
276
- end
277
- end
278
-
279
- NodeX = Struct.new(:count)
280
- class NodeX
281
- def write (io, list, state)
282
- io << " " * count
283
- end
284
- def read (io, list, state)
285
- io.read(count)
286
- end
287
- def count_args
288
- return 0
289
- end
290
- def inspect
291
- count_str = count == 1 ? "" : count.to_s
292
- return "#{count_str}X"
293
- end
294
- end
295
-
296
- NodeP = Struct.new(:scale)
297
- class NodeP
298
- def write (io, list, state)
299
- state.scale = scale
300
- end
301
- def read (io, list, state)
302
- state.scale = scale
303
- end
304
- def count_args
305
- return 0
306
- end
307
- def inspect
308
- return "#{scale}P"
309
- end
310
- end
311
-
312
- NodeSp = Struct.new(:sign)
313
- class NodeSp
314
- def write (io, list, state)
315
- state.sign = sign
316
- end
317
- def read (io, list, state)
318
- end
319
- def count_args
320
- return 0
321
- end
322
- def inspect
323
- if sign
324
- return "SP"
325
- else
326
- return "SS"
327
- end
328
- end
329
- end
330
-
331
- NodeB = Struct.new(:zero)
332
- class NodeB
333
- def write (io, list, state)
334
- end
335
- def read (io, list, state)
336
- state.zero = zero
337
- # if zero
338
- # warn "FortranFormat: BZ is not supported descriptor"
339
- # end
340
- end
341
- def count_args
342
- return 0
343
- end
344
- def inspect
345
- if zero
346
- return "BZ"
347
- else
348
- return "BN"
349
- end
350
- end
351
- end
352
-
353
- NodeH = Struct.new(:count, :string)
354
- class NodeH
355
- def write (io, list, state)
356
- io << string
357
- end
358
- def read (io, list, state)
359
- raise "format h is not implemented for reading"
360
- end
361
- def count_args
362
- return count
363
- end
364
- def inspect
365
- count_str = count == 1 ? "" : count.to_s
366
- return "#{count_str}H#{string}"
367
- end
368
- end
369
-
370
- NodeA = Struct.new(:count, :length)
371
- class NodeA
372
- def write (io, list, state)
373
- len = length
374
- if len
375
- count.times do
376
- str = list.shift
377
- if str.length > len
378
- io << str[0,len]
379
- else
380
- io << str.rjust(len)
381
- end
382
- end
383
- else
384
- io << str
385
- end
386
- end
387
- def read (io, list, state)
388
- str = nil
389
- if length
390
- count.times do
391
- list << (str = io.read(length))
392
- end
393
- else
394
- list << (str = io.read)
395
- end
396
- rescue
397
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
398
- end
399
- def count_args
400
- return count
401
- end
402
- def inspect
403
- count_str = count == 1 ? "" : count.to_s
404
- return "#{count_str}A#{length}"
405
- end
406
- end
407
-
408
- NodeL = Struct.new(:count, :length)
409
- class NodeL
410
- def write (io, list, state)
411
- count.times do
412
- if list.shift
413
- io << " "*(length-1) + "T"
414
- else
415
- io << " "*(length-1) + "F"
416
- end
417
- end
418
- end
419
- def read (io, list, state)
420
- count.times do
421
- case io.read(length)
422
- when /\A *?\.?t/i
423
- list.push(true)
424
- else
425
- list.push(false)
426
- end
427
- end
428
- end
429
- def count_args
430
- return count
431
- end
432
- def inspect
433
- count_str = count == 1 ? "" : count.to_s
434
- return "#{count_str}L#{length}"
435
- end
436
- end
437
-
438
- NodeI = Struct.new(:count, :length, :prec)
439
- class NodeI
440
- def write (io, list, state)
441
- if prec
442
- if state.sign
443
- fmt = "%#{length-prec}s%+0#{prec-1}i"
444
- else
445
- fmt = "%#{length-prec}s%0#{prec}i"
446
- end
447
- else
448
- if state.sign
449
- fmt = "%s%+#{length-1}i"
450
- else
451
- fmt = "%s%#{length}i"
452
- end
453
- end
454
- count.times do
455
- str = format(fmt, "", list.shift)
456
- io << FortranFormat.check_length(length, str)
457
- end
458
- end
459
- def read (io, list, state)
460
- str = nil
461
- count.times do
462
- str = io.read(length)
463
- if state.zero
464
- list << str.gsub(/ /,'0').to_i
465
- else
466
- list << str.to_i
467
- end
468
- end
469
- rescue
470
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
471
- end
472
- def count_args
473
- return count
474
- end
475
- def inspect
476
- count_str = count == 1 ? "" : count.to_s
477
- if prec
478
- return "#{count_str}I#{length}.#{prec}"
479
- else
480
- return "#{count_str}I#{length}"
481
- end
482
- end
483
- end
484
-
485
- NodeF = Struct.new(:count, :length, :prec)
486
- class NodeF
487
- def write (io, list, state)
488
- count.times do
489
- str = FortranFormat.write_F(state.sign, state.scale, length, prec, list.shift)
490
- io << FortranFormat.check_length(length, str)
491
- end
492
- end
493
- def read (io, list, state)
494
- str = nil
495
- count.times do
496
- str = io.read(length)
497
- if state.zero
498
- str = str.gsub(/ /,'0')
499
- end
500
- list << FortranFormat.read_F(str, state.scale, length, prec)
501
- end
502
- rescue
503
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
504
- end
505
- def count_args
506
- return count
507
- end
508
- def inspect
509
- count_str = count == 1 ? "" : count.to_s
510
- return "#{count_str}F#{length}.#{prec}"
511
- end
512
- end
513
-
514
- NodeE = Struct.new(:count, :length, :prec, :exp)
515
- class NodeE
516
- def write (io, list, state)
517
- count.times do
518
- str = FortranFormat.write_E(state.sign, state.scale, length, prec, exp, list.shift)
519
- io << FortranFormat.check_length(length, str)
520
- end
521
- end
522
- def read (io, list, state)
523
- str = nil
524
- count.times do
525
- str = io.read(length)
526
- if state.zero
527
- str = str.gsub(/ /,'0')
528
- end
529
- list << str.to_f
530
- end
531
- rescue
532
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
533
- end
534
- def count_args
535
- return count
536
- end
537
- def inspect
538
- count_str = count == 1 ? "" : count.to_s
539
- exp_str = (exp.nil? or exp == 2) ? "" : "E#{exp}"
540
- return "#{count_str}E#{length}.#{prec}#{exp_str}"
541
- end
542
- end
543
-
544
- NodeES = Struct.new(:count, :length, :prec, :exp)
545
- class NodeES
546
- def write (io, list, state)
547
- count.times do
548
- str = FortranFormat.write_E(state.sign, 1, length, prec, exp, list.shift)
549
- io << FortranFormat.check_length(length, str)
550
- end
551
- end
552
- def read (io, list, state)
553
- str = nil
554
- count.times do
555
- str = io.read(length)
556
- if state.zero
557
- str = str.gsub(/ /,'0')
558
- end
559
- list << str.to_f
560
- end
561
- rescue
562
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
563
- end
564
- def count_args
565
- return count
566
- end
567
- def inspect
568
- count_str = count == 1 ? "" : count.to_s
569
- exp_str = (exp.nil? or exp == 2) ? "" : "E#{exp}"
570
- return "#{count_str}ES#{length}.#{prec}#{exp_str}"
571
- end
572
- end
573
-
574
- NodeG = Struct.new(:count, :length, :prec, :exp)
575
- class NodeG
576
- def write (io, list, state)
577
- count.times do
578
- str = FortranFormat.write_G(state.sign, state.scale, length, prec, exp, list.shift)
579
- io << FortranFormat.check_length(length, str)
580
- end
581
- end
582
- def read (io, list, state)
583
- str = nil
584
- count.times do
585
- str = io.read(length)
586
- if state.zero
587
- str = str.gsub(/ /,'0')
588
- end
589
- list << str.to_f
590
- end
591
- rescue
592
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
593
- end
594
- def count_args
595
- return count
596
- end
597
- def inspect
598
- count_str = count == 1 ? "" : count.to_s
599
- exp_str = (exp.nil? or exp == 2) ? "" : "E#{exp}"
600
- return "#{count_str}G#{length}.#{prec}#{exp_str}"
601
- end
602
- end
603
-
604
- end
605
-