java.lang.Object
org.kink_lang.kink.HostResultCore
org.kink_lang.kink.Val
org.kink_lang.kink.BinVal
- All Implemented Interfaces:
Comparable<BinVal>
,HostResult
A bin val, which represents an immutable array of bytes.
A bin val holds Java byte arrays as a binary tree in order to avoid allocation of the entire array on concatenation. The byte array is substantiated on demand.
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionbyte[]
bytes()
Returns the copied bytes of the bin.int
Returns a negative number ifthis
is less thanarg
, 0 ifthis
is equivalent toarg
, or a positive number ifthis
is greater thanarg
.Returns a bin val which concatenatesthis
andtail
.void
copyToBytes
(int from, int to, byte[] bytes, int at) Copy the range of this bin intobytes
at theat
index.boolean
Returns true if and only ifarg
is a bin val and has the same vm and the equivalent bytes withthis
.byte
get
(int ind) Returns the byte at the ind.int
hashCode()
Returns a read-onlyByteBuffer
of the content of this bin.int
size()
Returns the size of the bin.slice
(int from, int to) Returns a sliced bin betweenfrom
(inclusive) andto
(exclusive).toString()
Methods inherited from class org.kink_lang.kink.Val
getVar, getVarSymHandleSet, hasVar, identity, makeHostResultCore, setVar
-
Method Details
-
size
public int size()Returns the size of the bin.- Returns:
- the size of the bin.
-
bytes
public byte[] bytes()Returns the copied bytes of the bin.- Returns:
- the copied bytes of the bin.
-
copyToBytes
public void copyToBytes(int from, int to, byte[] bytes, int at) Copy the range of this bin intobytes
at theat
index.- Parameters:
from
- the inclusive start index.to
- the exclusive end index.bytes
- the destination bytes.at
- the start index of the destination bytes.
-
get
public byte get(int ind) Returns the byte at the ind.- Parameters:
ind
- the index of the byte.- Returns:
- the byte at the ind.
- Throws:
IndexOutOfBoundsException
- ifind
is out of the range of the bin.
-
readOnlyByteBuffer
Returns a read-onlyByteBuffer
of the content of this bin.The capacity of the result ByteBuffer is the size of the bin. The limit of the result ByteBuffer is set to the size of the bin. The position of the result ByteBuffer is set to 0.
- Returns:
- a read-only
ByteBuffer
of the content of this bin.
-
slice
Returns a sliced bin betweenfrom
(inclusive) andto
(exclusive).- Parameters:
from
- the inclusive index where the result is sliced from.to
- the exclusive index where the result is sliced to.- Returns:
- a sliced bin.
- Throws:
IndexOutOfBoundsException
- iffrom
orto
are out of the range of the bin.IllegalArgumentException
- iffrom
is larger thanto
.
-
compareTo
Returns a negative number ifthis
is less thanarg
, 0 ifthis
is equivalent toarg
, or a positive number ifthis
is greater thanarg
.Comparison is done for the bytes of
this
andarg
, treating the bytes as unsigned numbers.Comparison is agnostic with
vm
field.- Specified by:
compareTo
in interfaceComparable<BinVal>
- Parameters:
arg
- the arg bin to compare with.- Returns:
- the comparison number.
-
concat
Returns a bin val which concatenatesthis
andtail
.- Parameters:
tail
- the bin which is appended to the result.- Returns:
- a bin val which concatenates
this
andtail
.
-
equals
Returns true if and only ifarg
is a bin val and has the same vm and the equivalent bytes withthis
. -
hashCode
public int hashCode() -
toString
-