public abstract class Shape
extends java.lang.Object
DynamicObject
,
Property
,
Location
Modifier and Type | Class and Description |
---|---|
static class |
Shape.Allocator |
static interface |
Shape.Pred<T>
Represents a predicate (boolean-valued function) of one argument.
|
Constructor and Description |
---|
Shape() |
Modifier and Type | Method and Description |
---|---|
<R> R |
accept(ShapeVisitor<R> visitor) |
abstract Shape |
addProperty(Property property)
Add a new property in the map, yielding a new or cached Shape object.
|
abstract Shape.Allocator |
allocator()
Obtain an
Shape.Allocator instance for the purpose of allocating locations. |
abstract Shape |
append(Property oldProperty)
Append the property, relocating it to the next allocated location.
|
abstract Shape |
changeType(ObjectType newOps)
Change the shape's type, yielding a new shape.
|
abstract boolean |
check(DynamicObject subject)
Check whether this shape is identical to the given shape.
|
abstract Shape |
copyOverPropertiesInternal(Shape destination)
For copying over properties after exchanging the prototype of an object.
|
abstract DynamicObjectFactory |
createFactory()
Create a
DynamicObjectFactory for creating instances of this shape. |
abstract Shape |
createSeparateShape(java.lang.Object sharedData)
Clone off a separate shape with new shared data.
|
abstract java.lang.Object |
getData()
Get the shape's custom data.
|
abstract int |
getId() |
abstract java.util.List<java.lang.Object> |
getKeyList()
Get a list of all property keys in insertion order.
|
abstract java.util.List<java.lang.Object> |
getKeyList(Shape.Pred<Property> filter)
Get a filtered list of property keys in insertion order.
|
abstract java.lang.Iterable<java.lang.Object> |
getKeys()
Get all property keys in insertion order.
|
abstract Property |
getLastProperty()
Get the last added property.
|
abstract Layout |
getLayout()
Get the shape's layout.
|
abstract Assumption |
getLeafAssumption()
Get an assumption that the shape is a leaf.
|
abstract java.lang.Object |
getMutex()
Get mutex object shared by related shapes, i.e.
|
abstract int |
getObjectArrayCapacity() |
abstract int |
getObjectArraySize() |
abstract int |
getObjectFieldSize() |
abstract ObjectType |
getObjectType()
Get the shape's operations.
|
abstract Shape |
getParent() |
abstract int |
getPrimitiveArrayCapacity() |
abstract int |
getPrimitiveArraySize() |
abstract int |
getPrimitiveFieldSize() |
abstract java.lang.Iterable<Property> |
getProperties()
An
Iterable over the shape's properties in insertion order. |
abstract Property |
getProperty(java.lang.Object key)
Get a property entry by key.
|
abstract int |
getPropertyCount()
Get number of properties in this shape.
|
abstract java.util.List<Property> |
getPropertyList()
Get a list of all properties that this Shape stores.
|
abstract java.util.List<Property> |
getPropertyList(Shape.Pred<Property> filter)
Get a list of properties that this Shape stores.
|
abstract java.util.List<Property> |
getPropertyListInternal(boolean ascending)
Returns all (also hidden) property objects in this shape.
|
abstract Shape |
getRoot()
Get the root shape.
|
abstract java.lang.Object |
getSharedData()
Get the shape's shared data.
|
abstract Assumption |
getValidAssumption()
Get an assumption that the shape is valid.
|
abstract boolean |
hasPrimitiveArray() |
abstract boolean |
hasProperty(java.lang.Object key)
Check whether the shape has a property with the given key.
|
abstract boolean |
hasTransitionWithKey(java.lang.Object key)
Query whether the shape has a transition with the given key.
|
abstract boolean |
isLeaf()
Check whether this shape is a leaf in the transition graph, i.e.
|
abstract boolean |
isRelated(Shape other)
Are these two shapes related, i.e.
|
abstract boolean |
isValid()
Check whether this shape is valid.
|
abstract DynamicObject |
newInstance()
Create a new
DynamicObject instance with this shape. |
abstract Shape |
removeProperty(Property property)
Remove the given property from the shape.
|
abstract Shape |
replaceProperty(Property oldProperty,
Property newProperty)
Replace a property in the shape.
|
abstract Shape |
reservePrimitiveExtensionArray()
Reserve the primitive extension array field.
|
abstract Shape |
tryMerge(Shape other) |
public abstract Property getProperty(java.lang.Object key)
key
- the identifier to look uppublic abstract Shape addProperty(Property property)
property
- the property to addpublic abstract java.lang.Iterable<Property> getProperties()
Iterable
over the shape's properties in insertion order.public abstract java.util.List<Property> getPropertyList(Shape.Pred<Property> filter)
public abstract java.util.List<Property> getPropertyList()
public abstract java.util.List<Property> getPropertyListInternal(boolean ascending)
ascending
- desired order (true
for insertion order, false
for reverse
insertion order)public abstract java.util.List<java.lang.Object> getKeyList(Shape.Pred<Property> filter)
public abstract java.util.List<java.lang.Object> getKeyList()
public abstract java.lang.Iterable<java.lang.Object> getKeys()
public abstract Assumption getValidAssumption()
public abstract boolean isValid()
public abstract Assumption getLeafAssumption()
public abstract boolean isLeaf()
public abstract Shape getParent()
null
if none.public abstract boolean hasProperty(java.lang.Object key)
public abstract Shape removeProperty(Property property)
public abstract Shape replaceProperty(Property oldProperty, Property newProperty)
public abstract Property getLastProperty()
public abstract int getId()
public abstract Shape append(Property oldProperty)
public abstract Shape.Allocator allocator()
Shape.Allocator
instance for the purpose of allocating locations.public abstract Shape copyOverPropertiesInternal(Shape destination)
public abstract int getPropertyCount()
public abstract ObjectType getObjectType()
public abstract Shape getRoot()
public abstract boolean check(DynamicObject subject)
public abstract Layout getLayout()
public abstract java.lang.Object getData()
public abstract java.lang.Object getSharedData()
public abstract boolean hasTransitionWithKey(java.lang.Object key)
public abstract Shape createSeparateShape(java.lang.Object sharedData)
public abstract Shape changeType(ObjectType newOps)
public abstract Shape reservePrimitiveExtensionArray()
public abstract DynamicObject newInstance()
DynamicObject
instance with this shape.public abstract DynamicObjectFactory createFactory()
DynamicObjectFactory
for creating instances of this shape.public abstract java.lang.Object getMutex()
public abstract int getObjectArraySize()
public abstract int getObjectFieldSize()
public abstract int getPrimitiveArraySize()
public abstract int getPrimitiveFieldSize()
public abstract int getObjectArrayCapacity()
public abstract int getPrimitiveArrayCapacity()
public abstract boolean hasPrimitiveArray()
public abstract boolean isRelated(Shape other)
other
- Shape to compare topublic <R> R accept(ShapeVisitor<R> visitor)