numo-binrw 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/workflows/build.yml +22 -0
- data/.gitignore +59 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +25 -0
- data/LICENSE +21 -0
- data/README.md +54 -0
- data/Rakefile +18 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/ext/.gitignore +2 -0
- data/ext/numo/binrw/binrw.c +22 -0
- data/ext/numo/binrw/extconf.rb +7 -0
- data/ext/numo/binrw/lib.c +8 -0
- data/ext/numo/binrw/lib.h +6 -0
- data/ext/numo/binrw/read.c +54 -0
- data/ext/numo/binrw/read.h +6 -0
- data/ext/numo/binrw/write.c +80 -0
- data/ext/numo/binrw/write.h +6 -0
- data/lib/numo/binrw.rb +95 -0
- data/lib/numo/binrw/version.rb +7 -0
- data/numo-binrw.gemspec +28 -0
- metadata +108 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5a766bc9b6b346e968a7be8047d50488d9f453459472f72635ef0cccd2e38b30
|
4
|
+
data.tar.gz: 42affdfac77f1093ec9a724e36a94bb23d4487f0d6ba3142ae58d3004acd91bf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d6ac610bac08f89e6558451112b1547ac9707ef38b7f1480c2d9ec8b932883c4c4892dc14e208efc295d314d40629667364fd10cd19b75705b5209df7dcbfde8
|
7
|
+
data.tar.gz: 1ecac661f63d943f87598978799d81e21981f2f6b3830e88f77b574586675e1660b64649d65794692d5e6b3f1685213859a146a52c3243b31a72f56c585d01af
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: build
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
|
6
|
+
jobs:
|
7
|
+
release-versions:
|
8
|
+
name: Build narray-fromfile
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@v2
|
12
|
+
- name: Set up Ruby
|
13
|
+
uses: actions/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version : 2.7
|
16
|
+
- name: Bundle install
|
17
|
+
run: bundle install
|
18
|
+
- name: Install a gem
|
19
|
+
run: rake install
|
20
|
+
- name: Test
|
21
|
+
run: rake test
|
22
|
+
|
data/.gitignore
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
/.config
|
4
|
+
/coverage/
|
5
|
+
/InstalledFiles
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/spec/examples.txt
|
9
|
+
/test/tmp/
|
10
|
+
/test/version_tmp/
|
11
|
+
/tmp/
|
12
|
+
|
13
|
+
# Used by dotenv library to load environment variables.
|
14
|
+
# .env
|
15
|
+
|
16
|
+
# Ignore Byebug command history file.
|
17
|
+
.byebug_history
|
18
|
+
|
19
|
+
## Specific to RubyMotion:
|
20
|
+
.dat*
|
21
|
+
.repl_history
|
22
|
+
build/
|
23
|
+
*.bridgesupport
|
24
|
+
build-iPhoneOS/
|
25
|
+
build-iPhoneSimulator/
|
26
|
+
|
27
|
+
## Specific to RubyMotion (use of CocoaPods):
|
28
|
+
#
|
29
|
+
# We recommend against adding the Pods directory to your .gitignore. However
|
30
|
+
# you should judge for yourself, the pros and cons are mentioned at:
|
31
|
+
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
32
|
+
#
|
33
|
+
# vendor/Pods/
|
34
|
+
|
35
|
+
## Documentation cache and generated files:
|
36
|
+
/.yardoc/
|
37
|
+
/_yardoc/
|
38
|
+
/doc/
|
39
|
+
/rdoc/
|
40
|
+
|
41
|
+
## Environment normalization:
|
42
|
+
/.bundle/
|
43
|
+
/vendor/bundle
|
44
|
+
/lib/bundler/man/
|
45
|
+
|
46
|
+
# for a library or gem, you might want to ignore these files since the code is
|
47
|
+
# intended to run in multiple environments; otherwise, check them in:
|
48
|
+
# Gemfile.lock
|
49
|
+
# .ruby-version
|
50
|
+
# .ruby-gemset
|
51
|
+
|
52
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
53
|
+
.rvmrc
|
54
|
+
|
55
|
+
# Used by RuboCop. Remote config files pulled in from inherit_from directive.
|
56
|
+
# .rubocop-https?--*
|
57
|
+
|
58
|
+
*.bin
|
59
|
+
*.dat
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
numo-binrw (0.1.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
numo-narray (0.9.2.0)
|
10
|
+
rake (13.0.6)
|
11
|
+
rake-compiler (1.1.1)
|
12
|
+
rake
|
13
|
+
|
14
|
+
PLATFORMS
|
15
|
+
ruby
|
16
|
+
x86_64-linux
|
17
|
+
|
18
|
+
DEPENDENCIES
|
19
|
+
numo-binrw!
|
20
|
+
numo-narray (~> 0.9.2.0)
|
21
|
+
rake (>= 12.3.3)
|
22
|
+
rake-compiler (~> 1.1.1)
|
23
|
+
|
24
|
+
BUNDLED WITH
|
25
|
+
2.2.22
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2021 MURATA Mitsuharu
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# numo-binrw
|
2
|
+
|
3
|
+
[![build](https://github.com/Himeyama/numo-binrw/actions/workflows/build.yml/badge.svg)](https://github.com/Himeyama/numo-binrw/actions/workflows/build.yml)
|
4
|
+
|
5
|
+
## 開発状況
|
6
|
+
- [x] 書き込み
|
7
|
+
- [x] 複数のファイル書き込み
|
8
|
+
- 対応型
|
9
|
+
- [x] 倍精度浮動小数点数
|
10
|
+
- [x] 単精度浮動小数点
|
11
|
+
- [x] 32 Bit 整数
|
12
|
+
- [x] 64 Bit 整数
|
13
|
+
- [x] 読み込み
|
14
|
+
- [x] 複数のファイルから読み込み
|
15
|
+
- 対応型
|
16
|
+
- [x] 倍精度浮動小数点数
|
17
|
+
- [x] 単精度浮動小数点
|
18
|
+
- [x] 32 Bit 整数
|
19
|
+
- [x] 64 Bit 整数
|
20
|
+
|
21
|
+
## 使用法
|
22
|
+
```rb
|
23
|
+
require "numo/binrw"
|
24
|
+
|
25
|
+
# 書き込み (例: 倍精度浮動小数点数)
|
26
|
+
a = Numo::DFloat.cast(0...100)
|
27
|
+
a.bin_write("dfdata.bin")
|
28
|
+
|
29
|
+
# 他の型で書き込み (例: 単精度浮動小数点)
|
30
|
+
b = Numo::SFloat.cast(0...100)
|
31
|
+
b.bin_write("fdata.bin")
|
32
|
+
|
33
|
+
# 複数ファイルに書き込み
|
34
|
+
c = Numo::Int32.cast(0...100).reshape(4, true)
|
35
|
+
c.bin_write(["idata01.bin", "idata02.bin", "idata03.bin", "idata04.bin"])
|
36
|
+
|
37
|
+
# 読み込み
|
38
|
+
d = Numo::Int32.bin_read("idata01.bin")
|
39
|
+
p d
|
40
|
+
|
41
|
+
## 複数ファイルから読み込み
|
42
|
+
e = Numo::Int32.bin_read(["idata01.bin", "idata02.bin", "idata03.bin", "idata04.bin"])
|
43
|
+
p e
|
44
|
+
```
|
45
|
+
|
46
|
+
## To do
|
47
|
+
- rubygems に公開
|
48
|
+
|
49
|
+
## インストール
|
50
|
+
```sh
|
51
|
+
git clone https://github.com/Himeyama/numo-binrw.git
|
52
|
+
cd numo-binrw
|
53
|
+
rake install
|
54
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
task default: %i[]
|
5
|
+
|
6
|
+
|
7
|
+
require "rake/extensiontask"
|
8
|
+
Rake::ExtensionTask.new "numo/binrw" do |ext|
|
9
|
+
ext.lib_dir = "ext"
|
10
|
+
end
|
11
|
+
|
12
|
+
require "rake/testtask"
|
13
|
+
Rake::TestTask.new :test do |t|
|
14
|
+
t.libs << "test"
|
15
|
+
t.libs << "lib"
|
16
|
+
t.verbose = true
|
17
|
+
t.test_files = FileList["test/*.rb"]
|
18
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "bundler/setup"
|
5
|
+
require "numo/binrw"
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require "irb"
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/ext/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#include <stdio.h>
|
2
|
+
#include <ruby.h>
|
3
|
+
#include <numo/narray.h>
|
4
|
+
#include "lib.h"
|
5
|
+
#include "read.h"
|
6
|
+
#include "write.h"
|
7
|
+
|
8
|
+
extern VALUE numo_cDFloat;
|
9
|
+
extern VALUE numo_cSFloat;
|
10
|
+
extern VALUE numo_cInt32;
|
11
|
+
extern VALUE numo_cInt64;
|
12
|
+
extern VALUE rb_mNumo;
|
13
|
+
|
14
|
+
|
15
|
+
VALUE rb_cBinrw;
|
16
|
+
|
17
|
+
void Init_binrw(void){
|
18
|
+
rb_cBinrw = rb_define_module_under(rb_mNumo, "Binrw");
|
19
|
+
rb_define_module_function(rb_cBinrw, "_bin_write", nrw_bin_write, 2);
|
20
|
+
|
21
|
+
rb_define_module_function(rb_cBinrw, "_bin_read", nrw_bin_read, 2);
|
22
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include <numo/narray.h>
|
3
|
+
|
4
|
+
#define rb_is_a(obj, cls) (rb_funcall(obj, rb_intern("is_a?"), 1, cls) == Qtrue)
|
5
|
+
|
6
|
+
|
7
|
+
struct bin_read_arg_ret{
|
8
|
+
const char* filename;
|
9
|
+
void *data;
|
10
|
+
long size;
|
11
|
+
int ssize;
|
12
|
+
bool r;
|
13
|
+
};
|
14
|
+
|
15
|
+
void bin_read(struct bin_read_arg_ret* st){
|
16
|
+
FILE* fp = fopen(st->filename, "r");
|
17
|
+
if(fp){
|
18
|
+
long size;
|
19
|
+
size = fread(st->data, st->ssize, st->size, fp);
|
20
|
+
if(size != st->size){
|
21
|
+
st->r = false;
|
22
|
+
return;
|
23
|
+
}
|
24
|
+
fclose(fp);
|
25
|
+
}else{
|
26
|
+
st->r = false;
|
27
|
+
return;
|
28
|
+
}
|
29
|
+
st->r = true;
|
30
|
+
}
|
31
|
+
|
32
|
+
VALUE nrw_bin_read(VALUE self, VALUE cls, VALUE filename){
|
33
|
+
long size = NUM2LONG(rb_funcall(rb_funcall(rb_cFile, rb_intern("stat"), 1, filename), rb_intern("size"), 0));
|
34
|
+
struct bin_read_arg_ret st;
|
35
|
+
int ssize;
|
36
|
+
if(cls == numo_cDFloat){
|
37
|
+
ssize = 8;
|
38
|
+
}else if(cls == numo_cSFloat){
|
39
|
+
ssize = 4;
|
40
|
+
}else if(cls == numo_cInt32){
|
41
|
+
ssize = 4;
|
42
|
+
}else if(cls == numo_cInt64){
|
43
|
+
ssize = 8;
|
44
|
+
}else{
|
45
|
+
return Qfalse; // 非対応クラス
|
46
|
+
}
|
47
|
+
VALUE na = rb_funcall(cls, rb_intern("zeros"), 1, LONG2NUM(size / ssize));
|
48
|
+
st.data = na_get_pointer(na);
|
49
|
+
st.filename = StringValuePtr(filename);
|
50
|
+
st.size = size;
|
51
|
+
st.ssize = ssize;
|
52
|
+
bin_read(&st);
|
53
|
+
return na;
|
54
|
+
}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
#include <stdbool.h>
|
2
|
+
#include <ruby.h>
|
3
|
+
#include <numo/narray.h>
|
4
|
+
|
5
|
+
#define rb_is_a(obj, cls) (rb_funcall(obj, rb_intern("is_a?"), 1, cls) == Qtrue)
|
6
|
+
|
7
|
+
struct bin_write_arg_ret{
|
8
|
+
const char* filename;
|
9
|
+
void *data;
|
10
|
+
long size;
|
11
|
+
int ssize;
|
12
|
+
bool r;
|
13
|
+
};
|
14
|
+
|
15
|
+
void bin_write(struct bin_write_arg_ret* st){
|
16
|
+
FILE* fp = fopen(st->filename, "w");
|
17
|
+
if(fp){
|
18
|
+
fwrite(st->data, st->ssize, st->size, fp);
|
19
|
+
fclose(fp);
|
20
|
+
}else{
|
21
|
+
st->r = false;
|
22
|
+
return;
|
23
|
+
}
|
24
|
+
st->r = true;
|
25
|
+
}
|
26
|
+
|
27
|
+
|
28
|
+
VALUE nrw_bin_write(VALUE self, VALUE obj, VALUE filename){
|
29
|
+
char* cfilename;
|
30
|
+
void* data = na_get_pointer(obj);
|
31
|
+
long size = NUM2LONG(rb_funcall(obj, rb_intern("size"), 0));
|
32
|
+
|
33
|
+
if(rb_is_a(filename, rb_cArray)){
|
34
|
+
long row = NUM2LONG(rb_funcall(filename, rb_intern("size"), 0));
|
35
|
+
long col = size / row;
|
36
|
+
struct bin_write_arg_ret st[row];
|
37
|
+
for(long i = 0; i < row; i++){
|
38
|
+
VALUE file = rb_ary_entry(filename, i);
|
39
|
+
cfilename = StringValuePtr(file);
|
40
|
+
st[i].filename = cfilename;
|
41
|
+
st[i].size = col;
|
42
|
+
if(rb_is_a(obj, numo_cDFloat)){
|
43
|
+
st[i].data = (double*)data + col * i;
|
44
|
+
st[i].ssize = 8;
|
45
|
+
}else if(rb_is_a(obj, numo_cSFloat)){
|
46
|
+
st[i].data = (float*)data + col * i;
|
47
|
+
st[i].ssize = 4;
|
48
|
+
}else if(rb_is_a(obj, numo_cInt32)){
|
49
|
+
st[i].data = (int32_t*)data + col * i;
|
50
|
+
st[i].ssize = 4;
|
51
|
+
}else if(rb_is_a(obj, numo_cInt64)){
|
52
|
+
st[i].data = (int64_t*)data + col * i;
|
53
|
+
st[i].ssize = 8;
|
54
|
+
}else{
|
55
|
+
return Qfalse; // 未対応クラス
|
56
|
+
}
|
57
|
+
bin_write(st + i);
|
58
|
+
}
|
59
|
+
}else if(rb_is_a(filename, rb_cString)){
|
60
|
+
cfilename = StringValuePtr(filename);
|
61
|
+
struct bin_write_arg_ret st;
|
62
|
+
st.filename = cfilename;
|
63
|
+
st.size = size;
|
64
|
+
st.data = data;
|
65
|
+
if(rb_is_a(obj, numo_cDFloat)){
|
66
|
+
st.ssize = 8;
|
67
|
+
}else if(rb_is_a(obj, numo_cSFloat)){
|
68
|
+
st.ssize = 4;
|
69
|
+
}else if(rb_is_a(obj, numo_cInt32)){
|
70
|
+
st.ssize = 4;
|
71
|
+
}else if(rb_is_a(obj, numo_cInt64)){
|
72
|
+
st.ssize = 8;
|
73
|
+
}else{
|
74
|
+
return Qfalse; // 未対応クラス
|
75
|
+
}
|
76
|
+
bin_write(&st);
|
77
|
+
}
|
78
|
+
|
79
|
+
return obj;
|
80
|
+
}
|
data/lib/numo/binrw.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "binrw/version"
|
4
|
+
|
5
|
+
require "numo/narray"
|
6
|
+
require "numo/binrw.so"
|
7
|
+
|
8
|
+
module Numo
|
9
|
+
module Binrw
|
10
|
+
class Error < StandardError; end
|
11
|
+
|
12
|
+
def self.bin_write(obj, filename)
|
13
|
+
if filename.is_a? Array
|
14
|
+
if obj.ndim != 2
|
15
|
+
# 複数行う場合は行列
|
16
|
+
raise "If multiple files are specified, it must be a matrix"
|
17
|
+
end
|
18
|
+
if obj.shape[0] != filename.size
|
19
|
+
# ファイル数と行数は同じ
|
20
|
+
raise "If multiple files are specified, the number of files and the number of lines must be the same"
|
21
|
+
end
|
22
|
+
elsif filename.is_a? String
|
23
|
+
else
|
24
|
+
raise
|
25
|
+
end
|
26
|
+
|
27
|
+
Numo::Binrw._bin_write(obj, filename)
|
28
|
+
obj
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.bin_read(cls, filename)
|
32
|
+
if filename.is_a? Array
|
33
|
+
unless filename.map{|file| File.stat(file).size}.uniq.size == 1
|
34
|
+
raise "The size of all data must be the same"
|
35
|
+
end
|
36
|
+
row = filename.size
|
37
|
+
size = File.stat(filename[0]).size
|
38
|
+
if cls == DFloat || cls == Int64
|
39
|
+
col = size / 8
|
40
|
+
elsif cls == SFloat || cls == Int32
|
41
|
+
col = size / 4
|
42
|
+
else
|
43
|
+
raise "Unsupported class"
|
44
|
+
end
|
45
|
+
a = cls.zeros(row, col)
|
46
|
+
filename.each.with_index do |file, i|
|
47
|
+
a[i, true] = bin_read(cls, file)
|
48
|
+
end
|
49
|
+
return a
|
50
|
+
end
|
51
|
+
|
52
|
+
Numo::Binrw._bin_read(cls, filename)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class DFloat
|
57
|
+
def bin_write(filename)
|
58
|
+
Numo::Binrw.bin_write(self, filename)
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.bin_read(filename)
|
62
|
+
Numo::Binrw.bin_read(self, filename)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class SFloat
|
67
|
+
def bin_write(filename)
|
68
|
+
Numo::Binrw.bin_write(self, filename)
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.bin_read(filename)
|
72
|
+
Numo::Binrw.bin_read(self, filename)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class Int32
|
77
|
+
def bin_write(filename)
|
78
|
+
Numo::Binrw.bin_write(self, filename)
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.bin_read(filename)
|
82
|
+
Numo::Binrw.bin_read(self, filename)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class Int64
|
87
|
+
def bin_write(filename)
|
88
|
+
Numo::Binrw.bin_write(self, filename)
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.bin_read(filename)
|
92
|
+
Numo::Binrw.bin_read(self, filename)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
data/numo-binrw.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/numo/binrw/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "numo-binrw"
|
7
|
+
spec.version = Numo::Binrw::VERSION
|
8
|
+
spec.authors = ["Murata Mitsuharu"]
|
9
|
+
spec.email = ["hikari.photon+mygit@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "Read binary files and handle them with `NArray`."
|
12
|
+
spec.description = "Read binary files and handle them with `NArray`."
|
13
|
+
spec.homepage = "https://github.com/himeyama/numo-binrw"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = ">= 2.4.0"
|
16
|
+
|
17
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
18
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib", "ext"]
|
23
|
+
spec.extensions = ["ext/numo/binrw/extconf.rb"]
|
24
|
+
|
25
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
26
|
+
spec.add_development_dependency "rake-compiler", "~> 1.1.1"
|
27
|
+
spec.add_development_dependency "numo-narray", "~> 0.9.2.0"
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: numo-binrw
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Murata Mitsuharu
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-07-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 12.3.3
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 12.3.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake-compiler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.1
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.1.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: numo-narray
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.9.2.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.9.2.0
|
55
|
+
description: Read binary files and handle them with `NArray`.
|
56
|
+
email:
|
57
|
+
- hikari.photon+mygit@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions:
|
60
|
+
- ext/numo/binrw/extconf.rb
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".github/workflows/build.yml"
|
64
|
+
- ".gitignore"
|
65
|
+
- Gemfile
|
66
|
+
- Gemfile.lock
|
67
|
+
- LICENSE
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- bin/console
|
71
|
+
- bin/setup
|
72
|
+
- ext/.gitignore
|
73
|
+
- ext/numo/binrw/binrw.c
|
74
|
+
- ext/numo/binrw/extconf.rb
|
75
|
+
- ext/numo/binrw/lib.c
|
76
|
+
- ext/numo/binrw/lib.h
|
77
|
+
- ext/numo/binrw/read.c
|
78
|
+
- ext/numo/binrw/read.h
|
79
|
+
- ext/numo/binrw/write.c
|
80
|
+
- ext/numo/binrw/write.h
|
81
|
+
- lib/numo/binrw.rb
|
82
|
+
- lib/numo/binrw/version.rb
|
83
|
+
- numo-binrw.gemspec
|
84
|
+
homepage: https://github.com/himeyama/numo-binrw
|
85
|
+
licenses:
|
86
|
+
- MIT
|
87
|
+
metadata: {}
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
- ext
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 2.4.0
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
requirements: []
|
104
|
+
rubygems_version: 3.2.22
|
105
|
+
signing_key:
|
106
|
+
specification_version: 4
|
107
|
+
summary: Read binary files and handle them with `NArray`.
|
108
|
+
test_files: []
|