Sha256: 082fa3d905e46be4cdf8bf05fea99fd51e21e8f873786e69a19a5e494bf58529

Contents?: true

Size: 1.16 KB

Versions: 34

Compression:

Stored size: 1.16 KB

Contents

class Buffer
  class Array
    include Native::Wrapper

    def self.for(bits, type)
      $$["#{Buffer.name_for bits, type}Array"]
    end

    include Enumerable

    attr_reader :buffer, :type

    def initialize(buffer, bits = nil, type = nil)
      if Native == buffer
        super(buffer)
      else
        %x{
          var klass = #{Array.for(bits, type)};

          #{super(`new klass(#{buffer.to_n})`)}
        }
      end

      @buffer = buffer
      @type   = type
    end

    def bits
      `#{@native}.BYTES_PER_ELEMENT * 8`
    end

    def [](index, offset = nil)
      offset ? `#{@native}.subarray(index, offset)` : `#{@native}[index]`
    end

    def []=(index, value)
      `#{@native}[index] = value`
    end

    def bytesize
      `#{@native}.byteLength`
    end

    def each
      return enum_for :each unless block_given?

      %x{
        for (var i = 0, length = #{@native}.length; i < length; i++) {
          #{yield `#{@native}[i]`}
        }
      }

      self
    end

    def length
      `#{@native}.length`
    end

    def merge!(other, offset = undefined)
      `#{@native}.set(#{other.to_n}, offset)`
    end

    alias size length
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
opal-1.7.4 stdlib/buffer/array.rb
opal-1.7.3 stdlib/buffer/array.rb
opal-1.7.2 stdlib/buffer/array.rb
opal-1.7.1 stdlib/buffer/array.rb
opal-1.7.0 stdlib/buffer/array.rb
opal-1.7.0.rc1 stdlib/buffer/array.rb
opal-1.6.1 stdlib/buffer/array.rb
opal-1.6.0 stdlib/buffer/array.rb
opal-1.6.0.rc1 stdlib/buffer/array.rb
opal-1.6.0.alpha1 stdlib/buffer/array.rb
opal-1.5.1 stdlib/buffer/array.rb
opal-1.5.0 stdlib/buffer/array.rb
opal-1.5.0.rc1 stdlib/buffer/array.rb
opal-1.4.1 stdlib/buffer/array.rb
opal-1.4.0 stdlib/buffer/array.rb
opal-1.4.0.alpha1 stdlib/buffer/array.rb
opal-1.3.2 stdlib/buffer/array.rb
opal-1.3.1 stdlib/buffer/array.rb
opal-1.3.0 stdlib/buffer/array.rb
opal-1.3.0.rc1 stdlib/buffer/array.rb