Package convex.core.data
Class ALongBlob
- All Implemented Interfaces:
IValidated
,IWriteable
,Comparable<ABlob>
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final int
protected static final int
protected final long
Fields inherited from class convex.core.data.ABlob
contentHash
Fields inherited from class convex.core.data.ACell
cachedRef, EMPTY_ARRAY
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal ABlob
Append an additional Blob to this, creating a new Blob as needed.boolean
appendHex
(BlobBuilder bb, long length) Append hex string up to the given length in hex digits (a multiple of two)final byte
byteAt
(long i) Gets the byte at the specified positionfinal byte
byteAtUnchecked
(long i) Gets the byte at the specified position in this data object, without bounds checking.protected final long
Calculates the Memory Size for this Cell.long
Computes the length of the longest common hex prefix between two blobsprotected int
compareTo
(long bvalue) int
Compares this Blob to another Blob, in lexicographic order sorting by first bytes (unsigned).final long
count()
Gets the length of this BlobCreates a new Ref for this Cellabstract boolean
Determines if this Blob is equal to another Blob.final boolean
equalsBytes
(ABlob b) Tests if this Blob has exactly the same bytes as another Blobfinal ByteBuffer
Gets a byte buffer containing this Blob's raw data.final int
getBytes
(byte[] bs, int pos) Copies the bytes from this instance to a given destinationfinal Blob
getChunk
(long i) Gets a chunk of this Blob, as a canonical Blob up to the maximum chunk size.int
getHexDigit
(long i) Gets the specified hex digit from this data object.final int
Gets the number of Refs contained within this Cell.abstract byte
getTag()
Gets the tag byte for this cell.long
hexMatchLength
(ABlob b, long start, long length) Returns the number of matching hex digits in the given hex range of another Blob.boolean
Returns true if this Cell is in a canonical representation for message writing.final boolean
Determines if this Cell Represents an embedded object.final long
Converts this Blob to the corresponding long value.abstract ABlob
slice
(long start, long end) Gets a contiguous slice of this Blob, as a new Blob.long
Gets the long value of this Blob if the length is exactly 8 bytes, otherwise throws an Exceptionabstract Blob
Converts this object to a flat array-backed Blob instance.Methods inherited from class convex.core.data.ABlob
computeHash, empty, encodeRaw, equals, equalsBytes, get, getContentHash, getElementRef, getType, hashCode, hexEquals, hexEquals, hexLength, isCVMValue, isRegularBlob, print, shortAt, slice, toByteBuffer, toCanonical, toHexString, toHexString, updateDigest, validate, validateCell
Methods inherited from class convex.core.data.ACountable
isEmpty, size
Methods inherited from class convex.core.data.ACell
announce, announce, attachMemorySize, attachRef, cachedEncoding, cachedHash, createAnnounced, createEncoding, createPersisted, createPersisted, encode, equals, getCanonical, getChildRefs, getEncoding, getEncodingLength, getHash, getMemorySize, getRef, getRef, isCompletelyEncoded, mark, mark, toCVMString, toString, updateRefs
Methods inherited from class convex.core.data.AObject
attachEncoding, print, print
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface convex.core.data.IWriteable
estimatedEncodingSize
-
Field Details
-
LENGTH
protected static final int LENGTH- See Also:
-
HEX_LENGTH
protected static final int HEX_LENGTH- See Also:
-
value
protected final long value
-
-
Constructor Details
-
ALongBlob
protected ALongBlob(long value)
-
-
Method Details
-
count
public final long count()Description copied from class:ABlob
Gets the length of this Blob -
createRef
Description copied from class:ACell
Creates a new Ref for this Cell -
appendHex
Description copied from class:ABlob
Append hex string up to the given length in hex digits (a multiple of two) -
getHexDigit
public int getHexDigit(long i) Description copied from class:ABlob
Gets the specified hex digit from this data object. WARNING: Result is undefined if index is out of bounds, but probably an IndexOutOfBoundsException.- Overrides:
getHexDigit
in classABlob
- Parameters:
i
- The position of the hex digit- Returns:
- The value of the hex digit, in the range 0-15 inclusive
-
slice
Description copied from class:ABlob
Gets a contiguous slice of this Blob, as a new Blob. Shares underlying backing data where possible -
toFlatBlob
Description copied from class:ABlob
Converts this object to a flat array-backed Blob instance. Warning: might be O(n) in size of Blob, may not be canonical etc.- Specified by:
toFlatBlob
in classABlob
- Returns:
- A Blob instance containing the same data as this Blob.
-
commonHexPrefixLength
Description copied from class:ABlob
Computes the length of the longest common hex prefix between two blobs- Specified by:
commonHexPrefixLength
in classABlob
- Parameters:
b
- Blob to compare with- Returns:
- The length of the longest common prefix in hex digits
-
byteAt
public final byte byteAt(long i) Description copied from class:ABlob
Gets the byte at the specified position -
byteAtUnchecked
public final byte byteAtUnchecked(long i) Description copied from class:ABlob
Gets the byte at the specified position in this data object, without bounds checking. Only safe if index is known to be in bounds, otherwise result is undefined.- Specified by:
byteAtUnchecked
in classABlob
- Parameters:
i
- Index of the byte to get- Returns:
- The byte at the specified position
-
append
Description copied from class:ABlob
Append an additional Blob to this, creating a new Blob as needed. New Blob will be canonical. -
equals
Description copied from class:ABlob
Determines if this Blob is equal to another Blob. Blobs are defined to be equal if they have the same on-chain representation, i.e. if and only if all of the following are true: - Blob is of the same general type - Blobs are of the same length - All byte values are equal -
getBytes
public final int getBytes(byte[] bs, int pos) Description copied from class:ABlobLike
Copies the bytes from this instance to a given destination -
getChunk
Description copied from class:ABlob
Gets a chunk of this Blob, as a canonical Blob up to the maximum chunk size. Returns empty Blob if and only if referencing the end of a Blob with fully packed chunks -
getByteBuffer
Description copied from class:ABlob
Gets a byte buffer containing this Blob's raw data. Will have remaining bytes equal to this Blob's size.- Specified by:
getByteBuffer
in classABlob
- Returns:
- A ByteBuffer containing the Blob's data.
-
calcMemorySize
protected final long calcMemorySize()Description copied from class:ACell
Calculates the Memory Size for this Cell. Requires any child Refs to be either Direct or of persisted status at minimum, or you might get a MissingDataException- Overrides:
calcMemorySize
in classACell
- Returns:
- Memory Size of this Cell
-
hexMatchLength
Description copied from class:ABlob
Returns the number of matching hex digits in the given hex range of another Blob. Assumes range is valid for both blobs. Returns length if this Blob is exactly equal to the specified hex range.- Specified by:
hexMatchLength
in classABlob
- Parameters:
b
- Blob to compare withstart
- Start position (in hex digits)length
- Length to compare (in hex digits)- Returns:
- The number of matching hex characters
-
longValue
public final long longValue()Description copied from class:ABlob
Converts this Blob to the corresponding long value. Assumes big-endian format, as if the entire blob is interpreted as an unsigned big integer. Higher bytes outside the Long range will be ignored, i.e. the lowest 64 bits are taken -
toExactLong
public long toExactLong()Description copied from class:ABlob
Gets the long value of this Blob if the length is exactly 8 bytes, otherwise throws an Exception- Specified by:
toExactLong
in classABlob
- Returns:
- The long value represented by the Blob
-
compareTo
Description copied from class:ABlob
Compares this Blob to another Blob, in lexicographic order sorting by first bytes (unsigned). Note: This means that compareTo does not precisely match equality, because specialised Blob types may be lexicographically equal but represent different values.- Specified by:
compareTo
in interfaceComparable<ABlob>
- Overrides:
compareTo
in classABlob
-
compareTo
protected int compareTo(long bvalue) -
equalsBytes
Description copied from class:ABlob
Tests if this Blob has exactly the same bytes as another Blob- Specified by:
equalsBytes
in classABlob
- Parameters:
b
- Blob to compare with- Returns:
- True if byte content is exactly equal, false otherwise
-
getTag
public abstract byte getTag()Description copied from class:ACell
Gets the tag byte for this cell. The tag byte is always equal to the first byte of the Cell's canonical Encoding, and is sufficient to distinguish how to read the rest of the encoding. -
isCanonical
public boolean isCanonical()Description copied from class:ACell
Returns true if this Cell is in a canonical representation for message writing. Non-canonical objects may be used on a temporary internal basis, they must always be converted to canonical representations for external use (e.g. Encoding).- Specified by:
isCanonical
in classACell
- Returns:
- true if the object is in canonical format, false otherwise
-
getRefCount
public final int getRefCount()Description copied from class:ACell
Gets the number of Refs contained within this Cell. This number is final / immutable for any given instance and is defined by the Cell encoding rules. WARNING: may not be valid id Cell is not canonical Contained Refs may be either external or embedded.- Specified by:
getRefCount
in classACell
- Returns:
- The number of Refs in this Cell
-
isEmbedded
public final boolean isEmbedded()Description copied from class:ACell
Determines if this Cell Represents an embedded object. Embedded objects are encoded directly into the encoding of the containing Cell (avoiding the need for a hashed reference). Subclasses should override this if they have a cheap O(1) way to determine if they are embedded or otherwise.- Overrides:
isEmbedded
in classACell
- Returns:
- true if Cell is embedded, false otherwise
-