Package convex.core.data
Class ALongBlob
- All Implemented Interfaces:
IValidated,IWriteable,Comparable<ABlob>
-
Field Summary
FieldsFields inherited from class convex.core.data.ABlob
contentHashFields inherited from class convex.core.data.ACell
cachedRef, EMPTY_ARRAY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionAppend an additional Blob to this, creating a new Blob as needed.voidappendHexString(BlobBuilder sb, int length)Append hex string up to the given length (a multiple of two)bytebyteAt(long i)Gets the byte at the specified position in this blobprotected longCalculates the Memory Size for this Cell.longComputes the length of the longest common hex prefix between two blobslongcount()Gets the length of this BlobCreates a new Ref for this Cellabstract booleanDetermines if this Blob is equal to another Blob.booleanequalsBytes(ABlob b)Tests if this Blob has exactly the same bytes as another BlobGets a byte buffer containing this Blob's data.getChunk(long i)Gets a chunk of this Blob, as a canonical Blob up to the maximum chunk size.intGets the number of Refs contained within this Cell.abstract bytegetTag()Gets the tag byte for this cell.bytegetUnchecked(long i)Gets the byte at the specified position in this data object, without bounds checking.longhexMatchLength(ABlob b, long start, long length)Returns the number of matching hex digits in the given hex range of another Blob.booleanReturns true if this Cell is in a canonical representation for message writing.booleanDetermines if this Cell Represents an embedded object.longGets the long value of this Blob if the length is exactly 8 bytes, otherwise throws an Exceptionabstract ABlobslice(long start, long length)Gets a contiguous slice of this blob, as a new Blob.abstract BlobConverts this object to a flat array-backed Blob instance.longtoLong()Converts this Blob to the corresponding long value.intwriteToBuffer(byte[] bs, int pos)Writes the raw byte contents of this blob to a byte arraywriteToBuffer(ByteBuffer bb)Writes the raw byte contents of this Blob to a ByteBuffer.Methods inherited from class convex.core.data.ABlob
compareTo, computeHash, empty, encodeRaw, encodeRawData, equals, equalsBytes, get, getBytes, getBytes, getContentHash, getElementRef, getHexDigit, getType, hashCode, hexEquals, hexEquals, hexLength, isCVMValue, isRegularBlob, print, slice, toByteBuffer, toCanonical, toCVMString, toHexString, toHexString, toHexString, updateDigest, validate, validateCellMethods inherited from class convex.core.data.ACountable
isEmpty, sizeMethods 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, toString, updateRefs, writeMethods inherited from class convex.core.data.AObject
attachEncoding, print, printMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface convex.core.data.IWriteable
estimatedEncodingSize
-
Field Details
-
LENGTH
protected static final long LENGTH- See Also:
- Constant Field Values
-
value
protected final long value
-
-
Constructor Details
-
ALongBlob
protected ALongBlob(long value)
-
-
Method Details
-
count
public final long count()Description copied from class:ABlobGets the length of this Blob -
createRef
Description copied from class:ACellCreates a new Ref for this Cell -
appendHexString
Description copied from class:ABlobAppend hex string up to the given length (a multiple of two)- Specified by:
appendHexStringin classABlob
-
slice
Description copied from class:ABlobGets a contiguous slice of this blob, as a new Blob. Shares underlying backing data where possible -
toFlatBlob
Description copied from class:ABlobConverts 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:
toFlatBlobin classABlob- Returns:
- A Blob instance containing the same data as this Blob.
-
commonHexPrefixLength
Description copied from class:ABlobComputes the length of the longest common hex prefix between two blobs- Specified by:
commonHexPrefixLengthin 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:ABlobGets the byte at the specified position in this blob -
getUnchecked
public final byte getUnchecked(long i)Description copied from class:ABlobGets 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:
getUncheckedin classABlob- Parameters:
i- Index of the byte to get- Returns:
- The byte at the specified position
-
append
Description copied from class:ABlobAppend an additional Blob to this, creating a new Blob as needed. New Blob will be canonical. -
equals
Description copied from class:ABlobDetermines 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 -
writeToBuffer
Description copied from class:ABlobWrites the raw byte contents of this Blob to a ByteBuffer. May be big!- Specified by:
writeToBufferin classABlob- Parameters:
bb- ByteBuffer to write to- Returns:
- The passed ByteBuffer, after writing byte content
-
writeToBuffer
public final int writeToBuffer(byte[] bs, int pos)Description copied from class:ABlobWrites the raw byte contents of this blob to a byte array- Specified by:
writeToBufferin classABlob- Parameters:
bs- Byte array to write topos- Starting position in byte array to write to- Returns:
- The position in the array after writing
-
getChunk
Description copied from class:ABlobGets 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:ABlobGets a byte buffer containing this Blob's data. Will have remaining bytes equal to this Blob's size.- Specified by:
getByteBufferin classABlob- Returns:
- A ByteBuffer containing the Blob's data.
-
calcMemorySize
protected final long calcMemorySize()Description copied from class:ACellCalculates 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:
calcMemorySizein classACell- Returns:
- Memory Size of this Cell
-
hexMatchLength
Description copied from class:ABlobReturns 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:
hexMatchLengthin 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
-
toLong
public final long toLong()Description copied from class:ABlobConverts this Blob to the corresponding long value. Assumes big-endian format, as if the entire blob is interpreted as a big integer. Higher bytes outside the Long range will be ignored. -
longValue
public long longValue()Description copied from class:ABlobGets the long value of this Blob if the length is exactly 8 bytes, otherwise throws an Exception -
equalsBytes
Description copied from class:ABlobTests if this Blob has exactly the same bytes as another Blob- Specified by:
equalsBytesin 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:ACellGets the tag byte for this cell. The tag byte is always written as the first byte of the Cell's Encoding -
isCanonical
public boolean isCanonical()Description copied from class:ACellReturns 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:
isCanonicalin classACell- Returns:
- true if the object is in canonical format, false otherwise
-
getRefCount
public final int getRefCount()Description copied from class:ACellGets 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. Contained Refs may be either external or embedded.- Specified by:
getRefCountin classACell- Returns:
- The number of Refs in this Cell
-
isEmbedded
public final boolean isEmbedded()Description copied from class:ACellDetermines 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:
isEmbeddedin classACell- Returns:
- true if Cell is embedded, false otherwise
-