Class

org.opalj.ai

Computation

Related Doc: package ai

Permalink

sealed abstract class Computation[+V, +E] extends AnyRef

Encapsulates the result of a computation in a domain. In general, the result is either some value V or some exception(s) E. In some cases, however, when the domain cannot precisely determine the result, it may be both: some exceptional value(s) and a value.

In the latter case the abstract interpreter will generally follow all possible paths. A computation that declares to return a result (i.e., the type V is not Nothing) must not return a result and/or throw an exception if the computation did not finish.

Querying Computations

Before accessing a computation's result (result or exceptions) it first has to be checked whether the computation returned normally (returnsNormally) or threw an exception (throwsException). Only if returnsNormally returns true the methods result and hasResult are defined.

V

The result of the computation. Typically a DomainValue; if the computation is executed for its side effect (e.g., as in case of a monitorenter or monitorexit instruction) the type of V maybe Nothing.

E

The exception(s) that maybe thrown by the computation. Typically, a DomainValue which represents a reference value with type java.lang.Throwable or a subtype thereof. If multiple exceptions may be thrown it may also be a set or Iterable of DomainValues (e.g., ExceptionValues).

Source
Computation.scala
Note

The precise requirements on the result of a computation are determined by the Domain object's methods that perform computations.

Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Computation
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def exceptions: E

    Permalink

    The exception or exceptions when the computation raised an exception; defined if and only if throwsException returns true.

    The exception or exceptions when the computation raised an exception; defined if and only if throwsException returns true.

    E.g., the invocation of a method may lead to several (checked/unchecked) exceptions.

    Annotations
    @throws( ... )
  2. abstract def hasResult: Boolean

    Permalink

    Returns true if this computation has a result value, false otherwise.

    Returns true if this computation has a result value, false otherwise.

    Note

    A method with return type void may return normally (returnsNormally), but will never have a result. I.e., for such method, hasResult will always be false.

  3. abstract def result: V

    Permalink

    The return value of the computation (if any); defined if and only if hasResult returns true.

    The return value of the computation (if any); defined if and only if hasResult returns true.

    Annotations
    @throws( ... )
  4. abstract def returnsNormally: Boolean

    Permalink

    Returns true if this computation may have returned normally without throwing an exception.

    Returns true if this computation may have returned normally without throwing an exception. Given that some computations are performed for their side effect only, the computation may not have a result.

  5. abstract def throwsException: Boolean

    Permalink

    Returns true if this computation may have raised an exception.

  6. abstract def updateExceptions[X](exceptions: X): Computation[V, X]

    Permalink

    Updates the exception associated with the represented computation.

    Updates the exception associated with the represented computation.

    This method is only supported if the computation had an associated exception!

    Annotations
    @throws( ... )
  7. abstract def updateResult[X](result: X): Computation[X, E]

    Permalink

    Updates the result associated with the represented computation.

    Updates the result associated with the represented computation.

    This method is only supported if the computation had a result!

    Annotations
    @throws( ... )

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  14. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  16. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped