All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opalj.fpcf.OrderedProperty.scala Maven / Gradle / Ivy

The newest version!
/* BSD 2-Clause License - see OPAL/LICENSE for details. */
package org.opalj.fpcf

/**
 * Ordered properties make the order between all properties of a specific kind explicit;
 * all properties that are of the same kind have to inherit from ordered property or none.
 *
 * This information is used by the property store when assertions/debugging is turned on to test
 * if an analysis, which derives a new property, always derives a more precise property.
 *
 * @author Michael Eichberg
 */
trait OrderedProperty extends Property {

    override type Self <: OrderedProperty

    /**
     * Tests if this property is equal or better than the given one (better means that the
     * value is above the given value in the underlying lattice.)
     */
    @throws[IllegalArgumentException]("if this property is not more precise than the given one")
    def checkIsEqualOrBetterThan(e: Entity, other: Self): Unit

    /**
     * Returns a value between zero and 9 which describes how close the value is to its absolute
     * bottom. Zero means the value is very close to the bottom and 9 means the value is
     * far away from the bottom.
     *
     * The default value is "5".
     */
    def bottomness: Int = 5
}

object OrderedProperty {

    /** The value is the lattice's top value. */
    final val TopBottomness = 9

    /** The value is the lattice's bottom value. */
    final val BottomBottomness = 0

    final val DefaultBottomness = TopBottomness

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy