Class: HBase::ByteArray
- Inherits:
-
Object
- Object
- HBase::ByteArray
- Includes:
- Enumerable
- Defined in:
- lib/hbase-jruby/byte_array.rb
Overview
@return [byte The underlying native Java byte array
Instance Attribute Summary collapse
-
#java ⇒ Object
(also: #to_java, #to_java_bytes)
readonly
Returns the value of attribute java.
Class Method Summary collapse
-
.[](*values) ⇒ HBase::ByteArray
Shortcut method to HBase::ByteArray.new.
Instance Method Summary collapse
-
#+(other) ⇒ Object
Concats two byte arrays.
-
#<<(other) ⇒ ByteArray
Appends the byte array of the given object on to the end.
-
#<=>(other) ⇒ Object
Compares two ByteArray objects.
-
#[](*index) ⇒ ByteArray
Slices the byte array.
- #decode(type) ⇒ Object (also: #as)
- #each ⇒ Object
-
#eql?(other) ⇒ Boolean
(also: #==)
Checks if the two byte arrays are the same.
-
#hash ⇒ Fixnum
Returns a hash number for the byte array.
-
#initialize(*values) ⇒ ByteArray
constructor
Initializes ByteArray instance with the given objects, each converted to its byte array representation.
- #inspect ⇒ Object
-
#length ⇒ Fixnum
Returns the length of the byte array.
-
#shift(type, length = nil) ⇒ Object
Returns the first element decoded as the given type and removes the portion from the byte array.
-
#stopkey_bytes_for_prefix ⇒ byte[]
Returns the first byte array whose prefix doesn’t match this byte array.
-
#to_s ⇒ String
Returns the String representation of the underlying byte array.
-
#unshift(*args) ⇒ ByteArray
Prepends the byte array of the given object to the front.
Constructor Details
#initialize(*values) ⇒ ByteArray
Initializes ByteArray instance with the given objects, each converted to its byte array representation
30 31 32 33 34 35 36 37 38 |
# File 'lib/hbase-jruby/byte_array.rb', line 30 def initialize *values HBase.import_java_classes! if defined?(Bytes) && defined?(Arrays) ByteArray.class_eval do alias initialize initialize_ end end initialize_(*values) end |
Instance Attribute Details
#java ⇒ Object (readonly) Also known as: to_java, to_java_bytes
Returns the value of attribute java.
14 15 16 |
# File 'lib/hbase-jruby/byte_array.rb', line 14 def java @java end |
Class Method Details
.[](*values) ⇒ HBase::ByteArray
Shortcut method to HBase::ByteArray.new
23 24 25 |
# File 'lib/hbase-jruby/byte_array.rb', line 23 def self.[] *values ByteArray.new(*values) end |
Instance Method Details
#+(other) ⇒ Object
Concats two byte arrays
68 69 70 |
# File 'lib/hbase-jruby/byte_array.rb', line 68 def + other ByteArray.new(@java, other) end |
#<<(other) ⇒ ByteArray
Appends the byte array of the given object on to the end
75 76 77 78 |
# File 'lib/hbase-jruby/byte_array.rb', line 75 def << other @java = Bytes.add @java, Util.to_bytes(other) self end |
#<=>(other) ⇒ Object
Compares two ByteArray objects
61 62 63 64 |
# File 'lib/hbase-jruby/byte_array.rb', line 61 def <=> other other = other_as_byte_array other Bytes.compareTo(@java, other.java) end |
#[](*index) ⇒ ByteArray
Slices the byte array
97 98 99 100 101 102 103 |
# File 'lib/hbase-jruby/byte_array.rb', line 97 def [] *index if index.length == 1 && index.first.is_a?(Fixnum) @java.to_a[*index] else ByteArray.new(@java.to_a[*index].to_java(Java::byte)) end end |
#decode(type) ⇒ Object Also known as: as
107 108 109 |
# File 'lib/hbase-jruby/byte_array.rb', line 107 def decode type Util.from_bytes type, @java end |
#each ⇒ Object
46 47 48 49 |
# File 'lib/hbase-jruby/byte_array.rb', line 46 def each return enum_for(:each) unless block_given? @java.to_a.each { |byte| yield byte } end |
#eql?(other) ⇒ Boolean Also known as: ==
Checks if the two byte arrays are the same
53 54 55 56 |
# File 'lib/hbase-jruby/byte_array.rb', line 53 def eql? other other = other_as_byte_array other Arrays.equals(@java, other.java) end |
#hash ⇒ Fixnum
Returns a hash number for the byte array
160 161 162 |
# File 'lib/hbase-jruby/byte_array.rb', line 160 def hash Arrays.java_send(:hashCode, [Util::JAVA_BYTE_ARRAY_CLASS], @java) end |
#inspect ⇒ Object
164 165 166 |
# File 'lib/hbase-jruby/byte_array.rb', line 164 def inspect "HBase::ByteArray<#{@java.to_a.join ', '}>" end |
#length ⇒ Fixnum
Returns the length of the byte array
90 91 92 |
# File 'lib/hbase-jruby/byte_array.rb', line 90 def length @java.length end |
#shift(type, length = nil) ⇒ Object
Returns the first element decoded as the given type and removes the portion from the byte array. For types of variable lengths, such as :string and :bigdecimal, byte size must be given.
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/hbase-jruby/byte_array.rb', line 117 def shift type, length = nil length = case type when :fixnum, :long, :float, :double 8 when :int 4 when :short 2 when :boolean, :bool, :byte 1 else length end raise ArgumentError.new("Byte length must be specified for type: #{type}") unless length raise ArgumentError.new("Not enough bytes for #{type}") if length > @java.length arr = @java.to_a val = arr[0, length].to_java(Java::byte) @java = arr[length..-1].to_java(Java::byte) Util.from_bytes type, val end |
#stopkey_bytes_for_prefix ⇒ byte[]
Returns the first byte array whose prefix doesn’t match this byte array
143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/hbase-jruby/byte_array.rb', line 143 def stopkey_bytes_for_prefix arr = @java.to_a csr = arr.length - 1 arr[csr] += 1 while csr >= 0 && arr[csr] > 127 csr -= 1 arr[csr] += 1 end if csr < 0 nil else arr[0..csr].to_java(Java::byte) end end |
#to_s ⇒ String
Returns the String representation of the underlying byte array
42 43 44 |
# File 'lib/hbase-jruby/byte_array.rb', line 42 def to_s @java.to_s end |