Sha256: 5b8e3322de2b31134c39e5587753cefcd7748e9b28f46a2b951966e197d7aeb9

Contents?: true

Size: 789 Bytes

Versions: 4

Compression:

Stored size: 789 Bytes

Contents

require 'native'
require 'buffer/array'
require 'buffer/view'

class Buffer
  include Native::Wrapper

  def self.supported?
    !$$[:ArrayBuffer].nil?
  end

  def self.name_for(bits, type)
    part = case type
           when :unsigned then 'Uint'
           when :signed   then 'Int'
           when :float    then 'Float'
           end
    "#{part}#{bits}"
  end

  def initialize(size, bits = 8)
    if native?(size)
      super(size)
    else
      super(`new ArrayBuffer(size * (bits / 8))`)
    end
  end

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

  alias size length

  def to_a(bits = 8, type = :unsigned)
    Array.new(self, bits, type)
  end

  def view(offset = nil, length = nil)
    View.new(self, offset, length)
  end

  def to_s
    to_a.to_a.pack('c*')
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
opal-1.3.2 stdlib/buffer.rb
opal-1.3.1 stdlib/buffer.rb
opal-1.3.0 stdlib/buffer.rb
opal-1.3.0.rc1 stdlib/buffer.rb