object PropertyKey
Factory and registry for PropertyKey objects.
- Alphabetic
- By Inheritance
- PropertyKey
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- type CycleResolutionStrategy[E <: Entity, P <: Property] = (PropertyStore, EPS[E, P]) ⇒ P
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
- def create[E <: Entity, P <: Property](name: String, fallbackProperty: P, cycleResolutionStrategy: CycleResolutionStrategy[E, P] = ..., fastTrackPropertyComputation: (PropertyStore, E) ⇒ Option[P] = ...): PropertyKey[P]
-
def
create[E <: Entity, P <: Property](name: String, fallbackPropertyComputation: FallbackPropertyComputation[E, P], cycleResolutionStrategy: CycleResolutionStrategy[E, P], fastTrackPropertyComputation: (PropertyStore, E) ⇒ Option[P]): PropertyKey[P]
Creates a new PropertyKey object that is to be shared by all regular properties that belong to the same category.
Creates a new PropertyKey object that is to be shared by all regular properties that belong to the same category.
- name
The unique name associated with the property. To ensure uniqueness it is recommended to prepend (parts of) the package name of property. Properties defined by OPAL start with "opalj."
- fallbackPropertyComputation
A function that returns the property that will be associated with those entities for which the property is not explicitly computed. This is generally the bottom value of the lattice. However, if an analysis was scheduled, but a property was not computed, a special (alternative) value can be used. This is in particular relevant for properties which depend on the reachable code.
- cycleResolutionStrategy
The strategy that will be used to resolve unfinished cyclic computations. In the vast majority of cases it is sufficient to just commit the given value.
- fastTrackPropertyComputation
(Optionally) called by the property store if the property is computed in the current phase and is queried the first time (see
PropertyStore.setupPhase). This method is expected to either provide a precise analysis very fast or to not provide a result at all. I.e., it is expected to derive only those properties that can trivially be derived precisely.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
fallbackProperty[P <: Property](ps: PropertyStore, fr: FallbackReason, e: Entity, pk: PropertyKey[P]): P
- Note
This method is intended to be called by the framework.
-
def
fastTrackProperty[P <: Property](ps: PropertyStore, e: Entity, pk: PropertyKey[P]): Option[P]
- Note
This method is intended to be called by the framework.
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
forSimpleProperty[P <: Property](name: String, notComputedProperty: P): PropertyKey[P]
Creates a new PropertyKey for a simple property.
Creates a new PropertyKey for a simple property.
Simple properties are only to be used for properties for which a (meaningful) lower bound does not exists or is very hard to compute and is – in particular – never of interest for clients. Additionally, a basic analysis which derives the property has to exist; if no analysis is scheduled the client would not be able to distinguish between this case where no analysis is run and the case where an analysis does not derive a value for a specific entity (e.g., because the entity is unused/dead).
- notComputedProperty
This property is used as the "fallback" when the property is not computed for a specific entity though an analysis is scheduled.
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isPropertyKeyForSimpleProperty(pk: SomePropertyKey): Boolean
- def isPropertyKeyForSimplePropertyBasedOnPKId(pkId: Int): Boolean
- def isPropertyKindForSimpleProperty(pk: PropertyKind): Boolean
- final def name(pKind: PropertyKind): String
-
def
name(id: Int): String
Returns the unique name of the kind of properties associated with the given key id.
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
notComputedProperty[P <: Property](pk: PropertyKey[P]): P
- Note
This method is intended to be called by the framework.
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
resolveCycle[E <: Entity, P <: Property](ps: PropertyStore, eps: EPS[E, P]): P
- Note
This method is intended to be called by the framework.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
updateCycleResolutionStrategy[E <: Entity, P <: Property](key: PropertyKey[P], cycleResolutionStrategy: CycleResolutionStrategy[E, P]): CycleResolutionStrategy[E, P]
Updates the (default) cycle resolution strategy associated with a specific kind of property.
Updates the (default) cycle resolution strategy associated with a specific kind of property. Updating the strategy is typically done by analyses that require a different strategy than the one defined by the property. For example, an analysis, which just computes a lower bound, generally has to overwrite the default strategy which picks the upper bound in case of a closed strongly connected component.
- returns
The old strategy.
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )