A_String
A_String is an interface that specifies the string-specific operations that an AvailObject must implement. It's a sub-interface of A_Tuple (which is itself a sub-interface of A_BasicObject.
Author
Mark van Gulik
Inheritors
Types
Properties
Answer the approximate memory cost in bits per element of this tuple. This is used to decide the direction of indirections after determining two objects are equal.
The receiver must be a byte buffer tuple; answer its backing ByteBuffer.
Answer the number of children this tree tuple contains.
Dispatch to the descriptor.
Is the receiver an Avail byte string?
Is the receiver an Avail byte tuple?
Is the receiver an Avail extended integer?
Is the receiver an Avail function?
Dispatch to the descriptor.
Is the receiver an Avail IntTupleDescriptor? This is conservative, in that some object tuples may only contain ints but not be reported as being int tuples.
Is the receiver an Avail LongTupleDescriptor? This is conservative, in that some object tuples may only contain longs but not be reported as being long tuples.
Dispatch to the descriptor.
Is the receiver an Avail two-byte string?
Is the receiver an Avail unsigned byte?
Extract the ObjectLayoutVariant from an object.
Return the height of this tree tuple. Flat tuples and subranges have height 0, and tree tuples have heights from 1 to 10. All of a tree tuple's children have a height of one less than the parent tree tuple.
Functions
Create a tuple with the same elements as the receiver, but with the specified newElement appended.
Turn the receiver into an indirection to the specified object.
Compare a subrange of the receiver with a subrange of the given byte array tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Test whether the subtuple of the receiver from startIndex1 to endIndex1 equals the subtuple of the byte buffer tuple of the same length starting at startIndex2.
Compare a subrange of the receiver with a subrange of the given byte string. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given byte tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given integer interval tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given nybble tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given object tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given repeated element tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given small integer interval tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given twenty-one-bit string. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given two-byte string. The size of the subrange of both objects is determined by the index range supplied for the receiver.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
Compute the hash of the specified subrange of this tuple.
Given a tuple of tuples, concatenate all the inner tuples to construct one new tuple. May destroy the original tuple of tuples if so indicated.
Concatenate the receiver and the argument otherTuple to form a new tuple. Assume that the two input tuples may be destroyed or recycled if they're mutable.
Make a mutable copy of the tuple but in a form that accepts Ints.
Make a mutable copy of the tuple but in a form that accepts Longs.
Make a mutable copy of the tuple but in a form that accepts any objects.
Even though A_Tuple.copyTupleFromToCanDestroy would perform the same activity, this method returns the stronger A_String type as a convenience, when the code knows it's working on strings.
Utility method for decomposing this object in the debugger.
Retrieve the object's {@linkplain AbstractDescriptor descriptor}.
Dispatcher helper function for routing messages to the descriptor.
Answer whether the receiver and the argument, both A_BasicObjects, are equal in value.
{@inheritDoc}
Answer whether the receiver, an object, and the argument, a byte string, are equal in value.
Answer whether the receiver, an object, and the argument, a byte tuple, are equal in value.
Answer whether the arguments, an object and a compiled code, are equal.
Answer whether the receiver equals the argument.
Answer whether the receiver equals the argument.
Determine whether the receiver is an enumeration with the given set of instances.
Answer whether the receiver, an object, and the argument, a fiber type, are equal in value.
Answer whether the receiver, an object, and the argument, a function type, are equal.
Answer whether the receiver equals the argument.
Answer whether this value equals the given list phrase type.
Answer whether the receiver equals the argument.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer whether the receiver equals the argument.
Extract the specified element from the tuple. The element must be an integer in the range 0..15, and is returned as a Java byte.
Extract a field from an object.
Extract a field from an object, using a one-based index into the field slots. This requires knowledge of the ObjectLayoutVariant, since the same field is at different indices in different variants.
Extract a field from an object, or answer null if it's not present.
Add or replace a field of an object.
Extract a field type from an object type.
Extract a field type from an object type, using the given field index, which is specific to an ObjectLayoutVariant.
Extract a field type from an object type, or null if it's not present.
Search for a particular value in the tuple, starting at the given index and working forward.
Search for one of two particular values in the tuple, starting at the given index and working forward. The first match of either value or otherValue ends the search.
Calculate the hash of the subtuple spanning the two indices.
Dispatch to the descriptor.
Answer the number of integer slots. All variable integer slots occur following the last fixed integer slot.
Given two objects that are known to be equal, is the first one in a better form (more compact, more efficient, older generation) than the second one?
Dispatch to the descriptor.
Dispatch to the descriptor.
Search for a particular value in the tuple, starting at the given one-based index and working backward.
Dispatch to the descriptor.
The receiver is marked with an IMMUTABLE descriptor, but its subobjects have not yet been made immutable. Scan them now, and do any additional fix-ups necessary for the kind of object.
Dispatch to the descriptor.
The receiver is marked with a SHARED descriptor, but its subobjects have not yet been made shared. Scan them now, and do any additional fix-ups necessary for the kind of object.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer a name suitable for labeling a field containing this object.
Answer the number of object slots in this AvailObject. All variable object slots occur following the last fixed object slot.
Returns a possibly parallel Stream with this tuple as its source. It is allowable for this method to return a sequential stream.
Recursively print the receiver to the builder unless it is already present in the recursionMap. Printing will begin at the specified indent level, measured in horizontal tab characters.
The receiver is a byte string; extract the code point of the character at the given index as an unsigned byte.
Replace the first child of this tree tuple. Make a copy to modify if the receiver is immutable. Answer the modified original or copy.
Dispatch to the descriptor.
Answer whether the objects occupy the same memory addresses.
Dispatch to the descriptor.
Replace the object's {@linkplain AbstractDescriptor descriptor}.
Dispatch to the descriptor.
Replace my descriptor field with a FillerDescriptor. This blows up for most messages, catching incorrect (all, by definition) further accidental uses of this object.
Answer whether to show value-specific content in the file name for the debugger.
Returns a sequential Stream with this tuple as its source.
If the provided condition is true, synchronize with the receiver's monitor around the execution of the body function. Otherwise, run the body function without synchronization.
Transfer the specified subrange of this tuple of bytes into the provided ByteBuffer. There should be sufficient room to write the bytes.
Follow indirections until a non-indirection is reached. Replace each indirection's target with the ultimate target.
Follow indirections until a non-indirection is reached. Replace each indirection's target with the ultimate target, even if it would cause the otherwise-forbidden immutable->mutable references. Only used during makeImmutable.
Follow indirections until a non-indirection is reached. Replace each indirection's target with the ultimate target, even if it would cause the otherwise-forbidden shared->unshared references. Only used during makeShared.
Answer the specified element of the tuple.
Answer a new tuple like the receiver but with a single element replaced at the specified index. If the receiver is mutable and canDestroy is true, then the receiver may be modified or destroyed.
Answer the code point of the character at the given one-based index in this tuple. The tuple doesn't have to be a string, but the requested element must be a character.
Answer the specified element of the tuple. It must be an integer in the range [-2^31..2^31), and is returned as a Java int.
Answer a tuple that has the receiver's elements but in reverse order.
Answer the number of variable integer slots in this object. This does not include the fixed integer slots.
Answer the number of variable object slots in this AvailObject. This does not include the fixed object slots.