Packages

  • package root
    Definition Classes
    root
  • package org
    Definition Classes
    root
  • package opalj

    OPAL is a Scala-based framework for the static analysis, manipulation and creation of Java bytecode.

    OPAL is a Scala-based framework for the static analysis, manipulation and creation of Java bytecode. OPAL is designed with performance, scalability and adaptability in mind.

    Its main components are:

    • a library (Common) which provides generally useful data-structures and algorithms for static analyses.
    • a framework for implementing lattice based static analyses (Static Analysis Infrastructure)
    • a framework for parsing Java bytecode (Bytecode Infrastructure) that can be used to create arbitrary representations.
    • a library to create a one-to-one in-memory representation of Java bytecode (Bytecode Disassembler).
    • a library to create a representation of Java bytecode that facilitates writing simple static analyses (Bytecode Representation - org.opalj.br).
    • a scalable, easily customizable framework for the abstract interpretation of Java bytecode (Abstract Interpretation Framework - org.opalj.ai).
    • a library to extract dependencies between code elements and to facilitate checking architecture definitions.
    • a library for the lightweight manipulation and creation of Java bytecode (Bytecode Assembler).

    General Design Decisions

    Thread Safety

    Unless explicitly noted, OPAL is thread safe. I.e., the classes defined by OPAL can be considered to be thread safe unless otherwise stated. (For example, it is possible to read and process class files concurrently without explicit synchronization on the client side.)

    No null Values

    Unless explicitly noted, OPAL does not null values I.e., fields that are accessible will never contain null values and methods will never return null. If a method accepts null as a value for a parameter or returns a null value it is always explicitly documented. In general, the behavior of methods that are passed null values is undefined unless explicitly documented.

    No Typecasts for Collections

    For efficiency reasons, OPAL sometimes uses mutable data-structures internally. After construction time, these data-structures are generally represented using their generic interfaces (e.g., scala.collection.{Set,Map}). However, a downcast (e.g., to add/remove elements) is always forbidden as it would effectively prevent thread-safety.

    Assertions

    OPAL makes heavy use of Scala's Assertion Facility to facilitate writing correct code. Hence, for production builds (after thorough testing(!)) it is highly recommend to build OPAL again using -Xdisable-assertions.

    Definition Classes
    org
  • package collection

    OPAL's collection library is primarily designed with high performance in mind.

    Design Goals

    OPAL's collection library is primarily designed with high performance in mind. I.e., all methods provided by the collection library are reasonably optimized. However, providing a very large number of methods is a non-goal. Overall, OPAL's collection library provides:

    • collection classes that are manually specialized for primitive data-types.
    • collection classes that are optimized for particularly small collections of values.
    • collection classes that target special use cases such as using a collection as a workset/worklist.
    • collection classes that offer special methods that minimize the number of steps when compared to general purpose methods.

    Integration With Scala's Collection Library

    Hence, OPAL's collection library complements Scala's default collection library and is not intended to replace it. Integration with Scala's collection library is primarily provided by means of iterators (OPAL's Iterators inherit from Scala's Iterators). Furthermore the companion object of each of OPAL's collection classes generally provides factory methods that facilitate the conversion from Scala collection classes to OPAL collection classes.

    Status

    The collection library is growing. Nevertheless, the existing classes are production ready.

    Definition Classes
    opalj
  • package immutable
    Definition Classes
    collection
  • :&:
  • BitArraySet
  • Chain
  • ConstArray
  • ConstCovariantArray
  • EmptyIntArraySet
  • EmptyIntTrieSet
  • EmptyLongTrieSet
  • FilteredIntTrieSet
  • FilteredLongTrieSet
  • IdentityPair
  • IntArray
  • IntArraySet
  • IntArraySet1
  • IntArraySetBuilder
  • IntArraySetN
  • IntIntPair
  • IntRefPair
  • IntTrieSet
  • IntTrieSet1
  • IntTrieSetBuilder
  • IntWorkSet
  • LongRefPair
  • LongTrieSet
  • LongTrieSet1
  • LongTrieSetBuilder
  • LongWorkSet
  • Naught
  • NonEmptyUIDSet
  • Pair
  • RefArray
  • UIDLinearProbingSet
  • UIDSet
  • UIDSet0
  • UIDSet1
  • UIDSet2
  • UIDSet3
  • UIDTrieSetInnerNode
  • UIDTrieSetLeaf
  • UShortPair
  • package mutable
    Definition Classes
    collection

package immutable

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. final case class :&:[T](head: T, rest: Chain[T] = Naught) extends Chain[T] with Product with Serializable

    An container for a list element.

  2. sealed abstract class BitArraySet extends BitSet

    An immutable bit set for storing positive int values.

    An immutable bit set for storing positive int values. An array is used to store the underlying values. The empty bit set and sets where the maximum value is 64 use optimized representations.

  3. sealed trait Chain[+T] extends TraversableOnce[T] with FilterMonadic[T, Chain[T]] with Serializable

    A linked list which does not perform any length related checks.

    A linked list which does not perform any length related checks. I.e., it fails in case of drop and take etc. if the size of the list is smaller than expected. Furthermore, all directly implemented methods use while loops for maximum efficiency and the list is also specialized for primitive int values which makes this list far more efficient when used for storing lists of int values.

    Note

    In most cases a Chain can be used as a drop-in replacement for a standard Scala List.

    ,

    Some core methods, e.g. drop and take, have different semantics when compared to the methods with the same name defined by the Scala collections API. In this case these methods may fail arbitrarily if the list is not long enough. Therefore, Chain does not inherit from scala...Seq.

  4. final class ConstArray[T <: AnyRef] extends IndexedSeq[T] with IndexedSeqOptimized[T, ConstArray[T]]

    Wraps an array such that the underlying array is no longer directly accessible and therefore also no longer mutable if ConstArray is the sole owner.

  5. final class ConstCovariantArray[+T <: AnyRef] extends AnyRef

    Wraps an array such that the underlying array is no longer directly accessible and therefore also no longer mutable if ConstCovariantArray is the sole owner.

  6. final class FilteredIntTrieSet extends IntTrieSet
  7. final class FilteredLongTrieSet extends LongTrieSet
  8. final case class IdentityPair[+T1 <: AnyRef, +T2 <: AnyRef](_1: T1, _2: T2) extends Product2[T1, T2] with Product with Serializable

    Encapsulates a pair of values that is intended to be used as a key in Maps.

    Encapsulates a pair of values that is intended to be used as a key in Maps. Compared to a standard pair (Tuple2), however, comparison of two IdentityPair objects is done by doing a reference-based comparison of the stored values.

    _1

    A reference value (can be null).

    _2

    A reference value (can be null).

    Example:
    1. val a = new String("fooBar")
      val b = "foo"+"Bar"
      val p1 = new IdentityPair(a,b) // #1
      val p2 = new IdentityPair(a,a) // #2
      val p3 = new IdentityPair(a,b) // #3
      p1 == p2 // => false (though (a,b) == (a,a) would be true
      p1 == p3 // => true
  9. class IntArray extends Seq[Int]

    Wraps an array such that the underlying array is no longer directly accessible and therefore also no longer mutable.

  10. sealed abstract class IntArraySet extends (Int) ⇒ Int with IntSet[IntArraySet] with IntCollectionWithStableOrdering[IntArraySet]

    A sorted set of integer values backed by an ordered array to store the values; this guarantees log2(n) lookup.

  11. case class IntArraySet1(i: Int) extends IntArraySet with Product with Serializable
  12. class IntArraySetBuilder extends Builder[Int, IntArraySet]
  13. case class IntArraySetN extends IntArraySet with Product with Serializable
  14. final case class IntIntPair(_1: Int, _2: Int) extends Product with Serializable

    An immutable pair of int values.

  15. case class IntRefPair[+T](_1: Int, _2: T) extends Product2[Int, T] with Product with Serializable

    A simple pairing of an int value and a reference value.

    A simple pairing of an int value and a reference value.

    T

    The type of the reference value.

    _1

    The first value.

    _2

    The second value.

  16. sealed abstract class IntTrieSet extends IntSet[IntTrieSet] with IntCollectionWithStableOrdering[IntTrieSet] with IntWorkSet[IntTrieSet]

    An unordered set of integer values backed by a trie set.

    An unordered set of integer values backed by a trie set. The branching is done using the least significant bit and values are only stored in leaf nodes. This ensure that we have a stable iteration order.

  17. final case class IntTrieSet1 extends IntTrieSetL with Product with Serializable
  18. class IntTrieSetBuilder extends Builder[Int, IntTrieSet]
  19. trait IntWorkSet[T <: IntWorkSet[T]] extends AnyRef

    A set of integers which supports (reasonable) efficient headAndTail operations.

  20. final case class LongRefPair[+T](_1: Long, _2: T) extends Product with Serializable

    A simple pairing of a long value and a reference value.

    A simple pairing of a long value and a reference value.

    T

    The type of the reference value.

    _1

    The first value.

    _2

    The second value.

  21. sealed abstract class LongTrieSet extends LongSet[LongTrieSet] with LongCollectionWithStableOrdering[LongTrieSet] with LongWorkSet[LongTrieSet]

    An unordered set of long values backed by a trie set.

    An unordered set of long values backed by a trie set. The branching is done using the least significant bit and values are only stored in leaf nodes. This ensure that we have a stable iteration order.

  22. final case class LongTrieSet1 extends LongTrieSetL with Product with Serializable
  23. class LongTrieSetBuilder extends Builder[Long, LongTrieSet]
  24. trait LongWorkSet[T <: LongWorkSet[T]] extends AnyRef

    A set of longs which supports (reasonable) efficient headAndTail operations.

  25. sealed abstract class NonEmptyUIDSet[T <: UID] extends UIDSet[T]
  26. class RefArray[+T] extends Seq[T]

    Wraps an array such that the underlying array is no longer directly accessible and therefore also no longer mutable if RefArray is the sole owner.

    Wraps an array such that the underlying array is no longer directly accessible and therefore also no longer mutable if RefArray is the sole owner.

    Note

    Compared to ConstArray, RefArray does not provide an efficient toArray method. However, RefArrays are covariant.

  27. sealed abstract class UIDLinearProbingSet[+T <: UID] extends AnyRef

    An unordered set based on the unique ids of the stored UID objects.

  28. sealed abstract class UIDSet[T <: UID] extends Set[T] with SetLike[T, UIDSet[T]]

    An unordered trie-set based on the unique ids of the stored UID objects.

    An unordered trie-set based on the unique ids of the stored UID objects. I.e., equality of two sets is defined in terms of the unique ids and not in terms of structural or reference equality of the stored elements.

    Implementation

    This trie set uses the least significant bit to decide whether the search is continued in the right or left branch.

    Small sets are represented using a UIDSet0...3.

    Compared to Scala's Set implementations in particular the tail and filter methods are much faster.

  29. final case class UIDSet1[T <: UID](value: T) extends NonEmptyUIDSet[T] with Product with Serializable
  30. final class UIDSet2[T <: UID] extends NonEmptyUIDSet[T]
  31. final class UIDSet3[T <: UID] extends NonEmptyUIDSet[T]
  32. final class UIDTrieSetInnerNode[T <: UID] extends UIDTrieSetNodeLike[T]
  33. final class UIDTrieSetLeaf[T <: UID] extends UIDTrieSetNodeLike[T]
  34. final class UShortPair extends AnyVal

    A memory-efficient representation of a pair of UShortValues which uses one Integer value.

    A memory-efficient representation of a pair of UShortValues which uses one Integer value.

    Example:
    1. scala> val p = org.opalj.collection.immutable.UShortPair(2323,332)
      p: org.opalj.collection.immutable.UShortPair = UShortPair(2323,332)

Value Members

  1. object BitArraySet
  2. object Chain extends Serializable

    Factory for Chains.

  3. object ConstArray

    Factory for ConstArrays.

  4. object ConstCovariantArray

    Factory for ConstCovariantArrays.

  5. object EmptyIntArraySet extends IntArraySet with Product with Serializable
  6. object EmptyIntTrieSet extends IntTrieSetL with Product with Serializable
  7. object EmptyLongTrieSet extends LongTrieSetL with Product with Serializable
  8. object IntArray

    Factory for IntArrays.

  9. object IntArraySet
  10. object IntArraySetBuilder
  11. object IntTrieSet

    Factory to create IntTrieSets.

  12. object IntTrieSet1 extends Serializable
  13. object LongTrieSet

    Factory to create LongTrieSets.

  14. object LongTrieSet1 extends Serializable
  15. object Naught extends Chain[Nothing] with Product with Serializable

    An empty Chains.

  16. object Pair
  17. object RefArray

    Factory for RefArrays.

  18. object UIDLinearProbingSet
  19. object UIDSet
  20. object UIDSet0 extends UIDSet[UID]

    Represents the empty UIDSet.

  21. object UIDSet2
  22. object UShortPair

    Factory to create UShortPair objects.

Ungrouped