Package convex.core.data
Class RefDirect<T extends ACell>
java.lang.Object
convex.core.data.AObject
convex.core.data.Ref<T>
convex.core.data.RefDirect<T>
- Type Parameters:
T
- Type of Value referenced
- All Implemented Interfaces:
IValidated
,IWriteable
,Comparable<Ref<T>>
Ref subclass for direct in-memory references.
Direct Refs store the underlying value directly with a regular Java strong reference.
Care must be taken to ensure recursive structures do not exceed reasonable memory bounds. In smart contract execution, juice limits serve this purpose.
-
Field Summary
Fields inherited from class convex.core.data.Ref
ANNOUNCED, BAD_MASK, EMBEDDING_MASK, FALSE_VALUE, flags, hash, INDIRECT_ENCODING_LENGTH, INTERNAL_FLAGS, INVALID, KNOWN_EMBEDDED_MASK, MARKED, MAX_STATUS, NON_EMBEDDED_MASK, NULL_VALUE, PERSISTED, STATUS_MASK, STORED, TRUE_VALUE, UNKNOWN, VALIDATED, VERIFICATION_MASK, VERIFIED_MASK
-
Method Summary
Modifier and TypeMethodDescriptioncreate
(T value) Creates a new Direct ref to the given value.Ensures this Ref is canonicalboolean
Checks if two Ref Values are equal.int
Estimate the encoded data size for this Cell.getHash()
Gets the Hash of this ref's value.getValue()
Gets the value from this Ref.boolean
isDirect()
Return true if this Ref is a direct reference, i.e.boolean
Checks if this Ref refers to missing data, i.e.toDirect()
Converts this Ref to a RefDirectConverts this Ref to a RefSoft.void
validate()
Validates the complete structure of this object.withFlags
(int newFlags) Create a new Ref of the same type with updated flagsUpdates the value stored within this Ref.Methods inherited from class convex.core.data.Ref
addAllToSet, cachedHash, compareTo, createArray, createEncoding, encode, equals, findMissing, flagsWithStatus, forHash, get, getEncodingLength, getFlags, getMemorySize, getStatus, hashCode, isEmbedded, isMarked, isPersisted, markEmbedded, mergeFlags, nil, persist, persist, persistShallow, persistShallow, print, readRaw, setFlags, toString, update, updateRefs, updateRefs, withMinimumStatus
Methods inherited from class convex.core.data.AObject
attachEncoding, getEncoding, print, print
-
Method Details
-
create
-
getValue
Description copied from class:Ref
Gets the value from this Ref. Important notes: - May throw a MissingDataException if the data does not exist in available storage - Will return null if and only if the Ref refers to the null value -
isDirect
-
getHash
-
toDirect
-
toSoft
-
equals
Description copied from class:Ref
Checks if two Ref Values are equal. Equality is defined as referring to the same data, i.e. have an identical hash. -
validate
Description copied from interface:IValidated
Validates the complete structure of this object. It is necessary to ensure all child Refs are validated, so the general contract for validate is:- Call super.validate() - which will indirectly call validateCell()
- Call validate() on any contained cells in this class
- Specified by:
validate
in interfaceIValidated
- Overrides:
validate
in classRef<T extends ACell>
- Throws:
InvalidDataException
- If the data Value is invalid in any way
-
withValue
Description copied from class:Ref
Updates the value stored within this Ref. New value must be equal in value to the old value (identical hash), but may have updated internal refs etc. -
estimatedEncodingSize
public int estimatedEncodingSize()Description copied from interface:IWriteable
Estimate the encoded data size for this Cell. Used for quickly sizing buffers. Implementations should try to return a size that is highly likely to contain the entire object when encoded, including the tag byte. Should not traverse soft Refs, i.e. must be usable on arbitrary partial data structures- Returns:
- The estimated size for the binary representation of this object.
-
isMissing
public boolean isMissing()Description copied from class:Ref
Checks if this Ref refers to missing data, i.e. a Cell that does not exist in the current store. May cause a read to the store. -
withFlags
-
ensureCanonical
-