Updated RubySpec submodule to 9f66d0b1.
[rbx.git] / kernel / bootstrap / bytearray.rb
blobacd99d1b9c922e9d2fd0fb0b36c8e1fdab3c34e5
1 class ByteArray
2   def self.allocate(cnt)
3     Ruby.primitive :allocate_bytes
4     raise PrimitiveFailure, "primitive failed"
5   end
7   def self.new(cnt)
8     obj = allocate(cnt)
9     Rubinius.asm(obj) do |obj|
10       push_block
11       run obj
12       send_with_block :initialize, 0, true
13     end
15     return obj
16   end
18   def fetch_bytes(start, count)
19     Ruby.primitive :fetch_bytes
20     raise PrimitiveFailure, "primitive failed"
21   end
23   def move_bytes(start, count, offset)
24     Ruby.primitive :move_bytes
25     raise ArgumentError, "move_bytes failed!"
26   end
28   def get_byte(index)
29     Ruby.primitive :get_byte
30     raise PrimitiveFailure, "primitive failed"
31   end
32   
33   def set_byte(index, value)
34     Ruby.primitive :set_byte
35     raise PrimitiveFailure, "primitive failed"
36   end
38   def compare_bytes(other, a, b)
39     Ruby.primitive :compare_bytes
40     raise PrimitiveFailure, "primitive failed"
41   end  
43   def size
44     Ruby.primitive :bytearray_size
45     raise PrimitiveFailure, "primitive failed"
46   end
47   
48   def dup_into(other)
49     Ruby.primitive :bytes_dup_into
50     raise PrimitiveFailure, "primitive failed"
51   end
52   
53   def dup(cls=nil)
54     cls ||= self.class
55     obj = cls.new(self.size)
56     dup_into obj
57     return obj
58   end
59 end