opal-typed-array 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ /build
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ Give to Opal access to typed arrays
2
+ ===================================
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'bundler/setup'
2
+ require 'opal'
3
+
4
+ desc 'Build specified dependencies into .'
5
+ task :dependencies do
6
+ Opal::DependencyBuilder.new(stdlib: 'native', out: 'build').build
7
+ end
8
+
9
+ desc 'Build latest opal-browser-html5-canvas to current dir'
10
+ task :browser do
11
+ Opal::Builder.new('lib', join: 'build/opal-typed-array.js').build
12
+ end
13
+
14
+ task :default => :browser
@@ -0,0 +1,15 @@
1
+ #--
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #++
10
+
11
+ if Opal.undefined?(`ArrayBuffer`)
12
+ raise NotImplementedError, 'this engine does not support typed arrays'
13
+ end
14
+
15
+ require 'opal/typed-array/buffer'
@@ -0,0 +1,66 @@
1
+ #--
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #++
10
+
11
+ module Buffer
12
+
13
+ class Array
14
+ def self.for (bits, type)
15
+ `#{Buffer.name_for bits, type}Array`
16
+ end
17
+
18
+ include Native
19
+ include Enumerable
20
+
21
+ attr_reader :buffer, :bits, :type
22
+
23
+ def initialize (buffer, bits, type)
24
+ super(`new #{Array.for(bits, type)}(#{buffer.to_native})`)
25
+
26
+ @buffer = buffer
27
+ @bits = `#@native.BYTES_PER_ELEMENT * 8`
28
+ @type = type
29
+ end
30
+
31
+ def [] (index, offset=nil)
32
+ offset ? `#@native.subarray(index, offset)` : `#@native[index]`
33
+ end
34
+
35
+ def []= (index, value)
36
+ `#@native[index] = value`
37
+ end
38
+
39
+ def bytesize
40
+ `#@native.byteLength`
41
+ end
42
+
43
+ def each
44
+ return enum_for :each unless block_given?
45
+
46
+ %x{
47
+ for (var i = 0, length = #@native.length; i < length; i++) {
48
+ #{yield `#@native[i]`}
49
+ }
50
+ }
51
+
52
+ self
53
+ end
54
+
55
+ def length
56
+ `#@native.length`
57
+ end
58
+
59
+ def merge! (other, offset = undefined)
60
+ `#@native.set(#{other.to_native}, offset)`
61
+ end
62
+
63
+ alias size length
64
+ end
65
+
66
+ end
@@ -0,0 +1,42 @@
1
+ #--
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #++
10
+
11
+ require 'opal/typed-array/array'
12
+ require 'opal/typed-array/view'
13
+
14
+ class Buffer
15
+ def self.name_for (bits, type)
16
+ "#{case type
17
+ when :unsigned then 'Uint'
18
+ when :signed then 'Int'
19
+ when :float then 'Float'
20
+ end}#{bits}"
21
+ end
22
+
23
+ include Native
24
+
25
+ def initialize (size, bits = 1)
26
+ super(`new ArrayBuffer(size * bits)`)
27
+ end
28
+
29
+ def length
30
+ `#@native.byteLength`
31
+ end
32
+
33
+ alias size length
34
+
35
+ def to_a (bits = 8, type = :unsigned)
36
+ Array.new(self, bits, type)
37
+ end
38
+
39
+ def view (offset = nil, length = nil)
40
+ View.new(self, offset, length)
41
+ end
42
+ end
@@ -0,0 +1,63 @@
1
+ #--
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #++
10
+
11
+ module Buffer
12
+
13
+ class View
14
+ include Native
15
+
16
+ attr_reader :buffer, :offset, :length
17
+
18
+ def initialize (buffer, offset = nil, length = nil)
19
+ super(`new DataView(#{buffer.to_native}, #{offset.to_native}, #{length.to_native})`)
20
+
21
+ @buffer = buffer
22
+ @offset = offset
23
+ @length = length
24
+ end
25
+
26
+ def get (offset, bits = 8, type = :unsigned, little = false)
27
+ `#@native.get#{Buffer.name_for bits, type}(offset, little)`
28
+ end
29
+
30
+ alias [] get
31
+
32
+ def set (offset, value, bits = 8, type = :unsigned, little = false)
33
+ `#@native.set#{Buffer.name_for bits, type}(offset, value, little)`
34
+ end
35
+
36
+ alias []= set
37
+
38
+ def get_int8 (offset, little = false); `#@native.getInt8(offset, little)`; end
39
+ def set_int8 (offset, value, little = false); `#@native.setInt8(offset, value, little)`; end
40
+
41
+ def get_uint8 (offset, little = false); `#@native.getUint8(offset, little)`; end
42
+ def set_uint8 (offset, value, little = false); `#@native.setUint8(offset, value, little)`; end
43
+
44
+ def get_int16 (offset, little = false); `#@native.getInt16(offset, little)`; end
45
+ def set_int16 (offset, value, little = false); `#@native.setInt16(offset, value, little)`; end
46
+
47
+ def get_uint16 (offset, little = false); `#@native.getUint16(offset, little)`; end
48
+ def set_uint16 (offset, value, little = false); `#@native.setUint16(offset, value, little)`; end
49
+
50
+ def get_int32 (offset, little = false); `#@native.getInt32(offset, little)`; end
51
+ def set_int32 (offset, value, little = false); `#@native.setInt32(offset, value, little)`; end
52
+
53
+ def get_uint32 (offset, little = false); `#@native.getUint32(offset, little)`; end
54
+ def set_uint32 (offset, value, little = false); `#@native.setUint32(offset, value, little)`; end
55
+
56
+ def get_float32 (offset, little = false); `#@native.getFloat32(offset, little)`; end
57
+ def set_float32 (offset, value, little = false); `#@native.setFloat32(offset, value, little)`; end
58
+
59
+ def get_float64 (offset, little = false); `#@native.getFloat64(offset, little)`; end
60
+ def set_float64 (offset, value, little = false); `#@native.setFloat64(offset, value, little)`; end
61
+ end
62
+
63
+ end
@@ -0,0 +1,14 @@
1
+ Gem::Specification.new {|s|
2
+ s.name = 'opal-typed-array'
3
+ s.version = '0.0.1'
4
+ s.author = 'meh.'
5
+ s.email = 'meh@paranoici.org'
6
+ s.homepage = 'http://github.com/opal/opal-typed-array'
7
+ s.platform = Gem::Platform::RUBY
8
+ s.summary = 'Opal support for typed arrays'
9
+
10
+ s.files = `git ls-files`.split("\n")
11
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
12
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
+ s.require_paths = ['lib']
14
+ }
metadata ADDED
@@ -0,0 +1,52 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opal-typed-array
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - meh.
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-13 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description:
15
+ email: meh@paranoici.org
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - .gitignore
21
+ - README.md
22
+ - Rakefile
23
+ - lib/opal/typed-array.rb
24
+ - lib/opal/typed-array/array.rb
25
+ - lib/opal/typed-array/buffer.rb
26
+ - lib/opal/typed-array/view.rb
27
+ - opal-typed-array.gemspec
28
+ homepage: http://github.com/opal/opal-typed-array
29
+ licenses: []
30
+ post_install_message:
31
+ rdoc_options: []
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ requirements: []
47
+ rubyforge_project:
48
+ rubygems_version: 1.8.10
49
+ signing_key:
50
+ specification_version: 3
51
+ summary: Opal support for typed arrays
52
+ test_files: []