carray 1.1.4

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 (7) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +43 -0
  3. data/carray.gemspec +39 -0
  4. data/extconf.rb +261 -0
  5. data/version.h +18 -0
  6. data/version.rb +54 -0
  7. metadata +57 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bf6af5998261685894713277e535670c15dc07cb
4
+ data.tar.gz: 13a271c75c85d433815db4582e488998f9e27bd4
5
+ SHA512:
6
+ metadata.gz: d903afcd8db08b76f1dd3ac950b0a4e9f1000f91b599dc28560e6e2cf65f069b3172ff89e5a11da7a4e80077898eee32a2ad8b46b011707f6309c72a3c9e69c0
7
+ data.tar.gz: 45041c0d4e3ec28c7831e781475f02fb79e83e3b09512a7b6cb494f1b615a959d7c6a9785b458a8886cfd574ade868afc95a9f27ef2499b5898a8fc03520a476
@@ -0,0 +1,43 @@
1
+ Ruby/CArray
2
+ ===========
3
+
4
+ Ruby/CArray is an extension library for the multi-dimensional array class.
5
+
6
+ Requirements
7
+ ------------
8
+
9
+ * Ruby 2.2.0 or later
10
+ * C compiler
11
+ + IEEE754 floating point number
12
+ + C99 complex number
13
+ * Optionally required gems
14
+ + narray
15
+ + narray_miss
16
+ + axlsx
17
+ + spreadsheet
18
+ + sqlite3
19
+ * Optional command
20
+ + Gnuplot
21
+ + ImageMagick (stream, convert, display, identify)
22
+
23
+ Directories
24
+ -----------
25
+
26
+ . - Ruby/CArray extension source codes
27
+ lib - Ruby/CArray standard library in Ruby
28
+ ext - optional extension libraries for Ruby/CArray
29
+ examples - some examples
30
+ test - some unit tests (incomplete)
31
+ spec - some rspec (incomplete)
32
+ utils - support tools for development.
33
+
34
+ Author
35
+ ------
36
+
37
+ Hiroki Motoyoshi
38
+
39
+ Copying
40
+ -------
41
+
42
+ You can redistribute this library package and/or modify it under the terms of
43
+ the Ruby Licence. See the file 'COPYING' in this directory.
@@ -0,0 +1,39 @@
1
+
2
+ files = Dir.glob("**/*") - [
3
+ Dir.glob("vendor"),
4
+ Dir.glob("ext/**/{Makefile,mkmf.log}"),
5
+ Dir.glob("**/*.{o,so,bundle}"),
6
+ Dir.glob("**/*~"),
7
+ Dir.glob("carray-*.gem"),
8
+ ].flatten
9
+
10
+ Gem::Specification::new do |s|
11
+ require "./version.rb"
12
+ version, date = carray_version()
13
+
14
+ s.platform = Gem::Platform::RUBY
15
+ s.name = "carray"
16
+ s.summary = "Multi-dimesional array class"
17
+ s.description = <<-HERE
18
+ CArray is a uniform multi-dimensional rectangular array class.
19
+ It provides the various types of sub-arrays and references
20
+ pointing the data elements of original array (slice, grid, selection ...).
21
+ Element-wise masking and mathematical operations are natively supported.
22
+ HERE
23
+ s.version = version
24
+ s.author = "Hiroki Motoyoshi"
25
+ s.email = ""
26
+ s.homepage = 'https://github.com/himotoyoshi/carray'
27
+ s.files = files
28
+ s.has_rdoc = true
29
+ s.rdoc_options = [
30
+ "--main=rdoc_main.rb",
31
+ "rdoc_main.rb",
32
+ "rdoc_ext.rb",
33
+ "rdoc_math.rb",
34
+ "rdoc_stat.rb",
35
+ Dir.glob("lib/carray/**/*.rb")
36
+ ].flatten
37
+ s.requirements << "C compiler supports C99 complex and "
38
+ s.required_ruby_version = ">= 1.8.1"
39
+ end
@@ -0,0 +1,261 @@
1
+ #
2
+ # extconf.rb for Ruby/CArray
3
+ #
4
+
5
+ $top_srcdir = ""
6
+
7
+ require 'mkmf'
8
+ require 'rbconfig'
9
+
10
+ #
11
+ # from mkmf.rb
12
+ #
13
+ def create_header(header = "extconf.h")
14
+ message "creating %s\n", header
15
+ sym = header.tr("a-z./\055", "A-Z___")
16
+ hdr = ["#ifndef #{sym}\n#define #{sym}\n"]
17
+ for line in $defs
18
+ case line
19
+ when /^-D(SIZEOF_[^=]+)(?:=(.*))?/
20
+ hdr << "#ifndef #$1\n#define #$1 #{$2 ? Shellwords.shellwords($2)[0].gsub(/(?=\t+)/, "\
21
+ \\n") : 1}\n#endif\n"
22
+ when /^-D([^=]+)(?:=(.*))?/
23
+ hdr << "#define #$1 #{$2 ? Shellwords.shellwords($2)[0].gsub(/(?=\t+)/, "\
24
+ \\n") : 1}\n"
25
+ when /^-U(.*)/
26
+ hdr << "#undef #$1\n"
27
+ end
28
+ end
29
+ hdr << "#endif\n"
30
+ hdr = hdr.join
31
+ unless (IO.read(header) == hdr rescue false)
32
+ open(header, "wb") do |hfile|
33
+ hfile.write(hdr)
34
+ end
35
+ end
36
+ $extconf_h = header
37
+ end
38
+
39
+ # --- ruby version code ---
40
+
41
+ major = RbConfig::CONFIG['MAJOR'].to_i
42
+ minor = RbConfig::CONFIG['MINOR'].to_i
43
+ teeny = RbConfig::CONFIG['TEENY'].to_i
44
+ RUBY_VERSION_CODE = major * 100 + minor * 10 + teeny
45
+ $defs.push "-DRUBY_VERSION_CODE=#{RUBY_VERSION_CODE}"
46
+
47
+ # --- add option "--sitelibdir=dir" ---
48
+
49
+ if String === (optarg = arg_config("--sitelibdir"))
50
+ dir = File.expand_path(optarg)
51
+ if File.exist?(dir)
52
+ CONFIG['sitelibdir'] = dir
53
+ else
54
+ raise "invalid sitelibdir specified"
55
+ end
56
+ end
57
+
58
+ # --- add option "--with-cc=cc"
59
+
60
+ if String === (optarg = arg_config("--with-cc"))
61
+ CONFIG['CC'] = optarg
62
+ if CONFIG['LDSHARED'] =~ /^cc /
63
+ CONFIG['LDSHARED'].sub!(/^cc/, optarg)
64
+ end
65
+ end
66
+
67
+ # --- seting $CFLAGS
68
+
69
+ $CFLAGS += " -Wall -O2"
70
+ p $CFLAGS
71
+ # $CFLAGS += " -m128bit-long-double" ### gcc only
72
+
73
+
74
+ # --- check data types
75
+
76
+ header = ["ruby.h"]
77
+
78
+ if have_header("sys/types.h")
79
+ header.push "sys/types.h"
80
+ end
81
+
82
+ if have_header("stdint.h")
83
+ header.push "stdint.h"
84
+ end
85
+
86
+ have_type("int8_t", header)
87
+ have_type("uint8_t", header)
88
+ have_type("int16_t", header)
89
+ have_type("uint16_t", header)
90
+ have_type("int32_t", header)
91
+ have_type("uint32_t", header)
92
+ have_type("int64_t", header)
93
+ have_type("uint64_t", header)
94
+
95
+ if RUBY_VERSION_CODE < 191
96
+ if have_type("long long", header)
97
+ check_sizeof("long long")
98
+ end
99
+ if have_type("float", header)
100
+ check_sizeof("float", header)
101
+ end
102
+ if have_type("double", header)
103
+ check_sizeof("double", header)
104
+ end
105
+ if have_type("long double", header)
106
+ check_sizeof("long double")
107
+ end
108
+ if have_header("complex.h")
109
+ complex_h = "complex.h"
110
+ if have_type("float complex", complex_h)
111
+ check_sizeof("float complex", complex_h)
112
+ end
113
+ if have_type("double complex", complex_h)
114
+ check_sizeof("double complex", complex_h)
115
+ end
116
+ else
117
+ complex_h = nil
118
+ end
119
+ else
120
+ have_type("long long", header)
121
+ have_type("float", header)
122
+ have_type("double", header)
123
+ if have_header("complex.h")
124
+ complex_h = "complex.h"
125
+ have_type("float complex", complex_h)
126
+ have_type("double complex", complex_h)
127
+ else
128
+ complex_h = nil
129
+ end
130
+ end
131
+
132
+ # --- check tgmath.h
133
+
134
+ have_header("tgmath.h")
135
+
136
+ # --- check mergesort routine
137
+
138
+ have_func("mergesort", "stdlib.h")
139
+
140
+ # --- setup install files
141
+
142
+ $INSTALLFILES = []
143
+ $INSTALLFILES << ['carray.h', '$(archdir)']
144
+ $INSTALLFILES << ['carray_config.h', '$(archdir)']
145
+
146
+ # --- cygwin/mingw
147
+ #
148
+ # Installing the static link library "libcarray.a".
149
+ # This technique is based on extconf.rb in Ruby/NArray distribution.
150
+ #
151
+
152
+ if /cygwin|mingw/ =~ RUBY_PLATFORM
153
+ sitearchdir = Config::CONFIG["sitearchdir"]
154
+ $DLDFLAGS << " -L#{sitearchdir} -Wl,--out-implib=libcarray.a "
155
+ unless File.exist? "libcarray.a"
156
+ $TOUCHED_LIBCARRAY_A = true
157
+ open("libcarray.a", "w") {}
158
+ end
159
+ $INSTALLFILES << ['libcarray.a', '$(archdir)']
160
+ end
161
+
162
+ # --- create carray_config.h
163
+ #
164
+ # Creating "carray_config.h".
165
+ #
166
+
167
+ config_h = "carray_config.h"
168
+ create_header(config_h)
169
+
170
+ $defs = [] # Now these definitions are in carray_config.h.
171
+
172
+ # --- create carray_math.c, carray_stat_proc.c
173
+
174
+ if ( not File.exist?("carray_cast_func.c") ) or
175
+ File.stat("carray_cast_func.rb").mtime > File.stat("carray_cast_func.c").mtime
176
+ system("ruby carray_cast_func.rb > carray_cast_func.c")
177
+ end
178
+
179
+ if ( not File.exist?("carray_math.c") ) or
180
+ File.stat("carray_math.rb").mtime > File.stat("carray_math.c").mtime
181
+ system("ruby carray_math.rb")
182
+ end
183
+
184
+ if ( not File.exist?("carray_stat_proc.c") ) or
185
+ File.stat("carray_stat_proc.rb").mtime > File.stat("carray_stat_proc.c").mtime
186
+ system("ruby carray_stat_proc.rb > carray_stat_proc.c")
187
+ end
188
+
189
+ puts "creating rdoc_ext.rb"
190
+ system %{
191
+ ruby utils/extract_rdoc.rb > rdoc_ext.rb
192
+ }
193
+
194
+ # --- create Makefile
195
+
196
+ create_makefile("carray_ext")
197
+
198
+ # --- remove dummy 'libcarray.a' for cygwin/mingw
199
+
200
+ if $TOUCHED_LIBCARRAY_A
201
+ File.unlink("libcarray.a")
202
+ end
203
+
204
+ # --- modify Makefile
205
+
206
+ makefile_orig = File.read("Makefile")
207
+
208
+ mk = open("Makefile", "w")
209
+ mk.puts makefile_orig
210
+
211
+ mk.write <<MAKEFILE_LOCAL
212
+ CA_VERSION = ${shell ${RUBY} version.rb}
213
+ GEMFILE = carray-${CA_VERSION}.gem
214
+
215
+ carray_cast_func.c: carray_cast_func.rb
216
+ ${RUBY} carray_cast_func.rb > carray_cast_func.c
217
+
218
+ carray_stat_proc.c: carray_stat_proc.rb
219
+ ${RUBY} carray_stat_proc.rb > carray_stat_proc.c
220
+
221
+ carray_math.c: carray_math.rb
222
+ ${RUBY} carray_math.rb
223
+
224
+ ${GEMFILE}: all carray.gemspec
225
+ @export IN_GEM_BUILD=1; \\
226
+ gem build carray.gemspec
227
+
228
+ build-gem: ${GEMFILE}
229
+
230
+ install-gem: ${GEMFILE}
231
+ @export IN_GEM_BUILD=1; \\
232
+ gem install ${GEMFILE}
233
+
234
+ uninstall-gem:
235
+ gem uninstall carray --version "${CA_VERSION}"
236
+
237
+ package:
238
+ @rake package;
239
+
240
+ test:
241
+ @rake test
242
+
243
+ .PHONY: test
244
+
245
+ rdoc:
246
+ sh utils/create_rdoc.sh
247
+
248
+ clean-generated:
249
+ @rm -f carray_config.h lib/carray/config.rb
250
+ @rm -f carray_cast_func.c carray_math.c carray_stat_proc.c
251
+ @rm -f ${GEMFILE}
252
+ @rm -rf pkg
253
+ @rm -f rdoc_ext.rb
254
+ @rm -rf doc
255
+ @rm -rf conftest.dSYM ext/*/conftest.dSYM
256
+
257
+ distclean: clean-generated
258
+ MAKEFILE_LOCAL
259
+ mk.close
260
+
261
+
@@ -0,0 +1,18 @@
1
+ /* ---------------------------------------------------------------------------
2
+
3
+ version.h
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
+ #define CA_VERSION "1.1.4"
14
+ #define CA_VERSION_CODE 114
15
+ #define CA_VERSION_MAJOR 1
16
+ #define CA_VERSION_MINOR 1
17
+ #define CA_VERSION_TEENY 4
18
+ #define CA_VERSION_DATE "2016/05/06"
@@ -0,0 +1,54 @@
1
+ # ----------------------------------------------------------------------------
2
+ #
3
+ # version.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
+ def carray_version
14
+
15
+ io = open(File.join(File.dirname(__FILE__), "version.h"))
16
+ while line = io.gets
17
+ case line
18
+ when /^#define CA_VERSION (.*)$/
19
+ ca_version = $1.strip[1..-2]
20
+ when /^#define CA_VERSION_CODE (.*)$/
21
+ ca_version_code = $1.to_i
22
+ when /^#define CA_VERSION_MAJOR (.*)$/
23
+ ca_version_major = $1.to_i
24
+ when /^#define CA_VERSION_MINOR (.*)$/
25
+ ca_version_minor = $1.to_i
26
+ when /^#define CA_VERSION_TEENY (.*)$/
27
+ ca_version_teeny = $1.to_i
28
+ when /^#define CA_VERSION_DATE (.*)$/
29
+ ca_version_date = $1.strip[1..-2]
30
+ end
31
+ end
32
+ io.close
33
+
34
+ ca_version2 = format("%i.%i.%i",
35
+ ca_version_major, ca_version_minor, ca_version_teeny)
36
+ ca_version_code2 =
37
+ 100 * ca_version_major + 10*ca_version_minor + ca_version_teeny
38
+
39
+ if ca_version != ca_version2 or ca_version_code != ca_version_code2
40
+ raise "invalid version.h"
41
+ end
42
+
43
+ return [ca_version, ca_version_date]
44
+ end
45
+
46
+
47
+ if __FILE__ == $0
48
+
49
+ version, date = carray_version()
50
+ puts version
51
+
52
+ end
53
+
54
+
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: carray
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Hiroki Motoyoshi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |2
14
+ CArray is a uniform multi-dimensional rectangular array class.
15
+ It provides the various types of sub-arrays and references
16
+ pointing the data elements of original array (slice, grid, selection ...).
17
+ Element-wise masking and mathematical operations are natively supported.
18
+ email: ''
19
+ executables: []
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - README.md
24
+ - carray.gemspec
25
+ - extconf.rb
26
+ - version.h
27
+ - version.rb
28
+ homepage: https://github.com/himotoyoshi/carray
29
+ licenses: []
30
+ metadata: {}
31
+ post_install_message:
32
+ rdoc_options:
33
+ - "--main=rdoc_main.rb"
34
+ - rdoc_main.rb
35
+ - rdoc_ext.rb
36
+ - rdoc_math.rb
37
+ - rdoc_stat.rb
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 1.8.1
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements:
51
+ - 'C compiler supports C99 complex and '
52
+ rubyforge_project:
53
+ rubygems_version: 2.6.3
54
+ signing_key:
55
+ specification_version: 4
56
+ summary: Multi-dimesional array class
57
+ test_files: []