Package

org.opalj

br

Permalink

package br

In this representation of Java bytecode references to a Java class file's constant pool and to attributes are replaced by direct references to the corresponding constant pool entries. This facilitates developing analyses and fosters comprehension.

Based on the fact that indirect reference to constant pool entries are resolved and replaced by direct reference this representation is called the resolved representation.

This representation of Java bytecode is considered as OPAL's standard representation for writing Scala based analyses. This representation is engineered such that it facilitates writing analyses that use pattern matching.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. br
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Type Members

  1. case class Annotation(annotationType: FieldType, elementValuePairs: ElementValuePairs = IndexedSeq.empty) extends Product with Serializable

    Permalink

    An annotation of a class, field, method or method parameter.

    An annotation of a class, field, method or method parameter.

    Annotations are associated with a class, field, or method using the attribute org.opalj.br.RuntimeInvisibleAnnotationTable or org.opalj.br.RuntimeVisibleAnnotationTable.

    Annotations are associated with a method parameter using the attribute org.opalj.br.RuntimeInvisibleParameterAnnotationTable or a org.opalj.br.RuntimeVisibleParameterAnnotationTable.

  2. trait AnnotationTable extends Attribute

    Permalink

    The runtime (in)visible annotations of a class, method, or field.

    The runtime (in)visible annotations of a class, method, or field.

    Note

    At the JVM level, repeating annotations (as supported by Java 8) (http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html) have no explicit support.

  3. case class AnnotationValue(annotation: Annotation) extends ElementValue with Product with Serializable

    Permalink
  4. type Annotations = IndexedSeq[Annotation]

    Permalink
  5. final case class AppendFrame(frameType: Int, offsetDelta: Int, verificationTypeInfoLocals: VerificationTypeInfoLocals) extends StackMapFrame with Product with Serializable

    Permalink
  6. final class ArrayType extends ReferenceType

    Permalink

    Represents an array type.

    Represents an array type.

    Comparing ArrayTypes

    To facilitate comparisons of (array) types, each array type is represented at any given time, by exactly one instance of ArrayType.

    General Information

    From the JVM specification

    An array type consists of a component type with a single dimension (whose length is not given by the type). The component type of an array type may itself be an array type. If, starting from any array type, one considers its component type, and then (if that is also an array type) the component type of that type, and so on, eventually one must reach a component type that is not an array type; this is called the element type of the array type. The element type of an array type is necessarily either a primitive type, or a class type, or an interface type.

  7. case class ArrayTypeSignature(typeSignature: TypeSignature) extends FieldTypeSignature with Product with Serializable

    Permalink

    See also

    For matching signatures see Signature.

  8. case class ArrayValue(values: IndexedSeq[ElementValue]) extends ElementValue with Product with Serializable

    Permalink
  9. trait Attribute extends AnyRef

    Permalink

    A class file attribute.

    A class file attribute.

    Note

    Some class file attributes are skipped or resolved while loading the class file and hence, are no longer represented at runtime.

  10. type Attributes = Seq[Attribute]

    Permalink
  11. sealed abstract class BaseType extends FieldType with TypeSignature

    Permalink
  12. sealed trait BaseTypeElementValue extends ElementValue

    Permalink

    Common super trait of all element values with a primitive base type.

  13. sealed abstract class BooleanType extends BaseType

    Permalink

    The type of boolean values (true=1, false=0).

    The type of boolean values (true=1, false=0).

    Though the JVM internally uses an int value to store a boolean value the VM offers no special further support for handling booleans. In particular the conversion of some "byte|short|char|int" value to an int value is not directly supported.

  14. case class BooleanValue(value: Boolean) extends BaseTypeElementValue with Product with Serializable

    Permalink
  15. trait BootstrapArgument extends AnyRef

    Permalink

    A marker trait to identify those constant pool values that can be arguments of boot strap methods.

  16. type BootstrapArguments = IndexedSeq[BootstrapArgument]

    Permalink
  17. case class BootstrapMethod(methodHandle: MethodHandle, bootstrapArguments: BootstrapArguments) extends Product with Serializable

    Permalink

    Java 7's 'BootstrapMethod'.

  18. case class BootstrapMethodTable(methods: BootstrapMethods) extends Attribute with Product with Serializable

    Permalink

    Java 7's BootstrapMethods_attribute.

  19. type BootstrapMethods = IndexedSeq[BootstrapMethod]

    Permalink
  20. sealed abstract class ByteType extends IntLikeType

    Permalink
  21. case class ByteValue(value: Byte) extends BaseTypeElementValue with Product with Serializable

    Permalink
  22. sealed abstract class CharType extends IntLikeType

    Permalink
  23. case class CharValue(value: Char) extends BaseTypeElementValue with Product with Serializable

    Permalink
  24. final case class ChopFrame(frameType: Int, offsetDelta: Int) extends StackMapFrame with Product with Serializable

    Permalink
  25. final class ClassFile extends ConcreteSourceElement

    Permalink

    Represents a single class file which either defines a class type or an interface type.

    Represents a single class file which either defines a class type or an interface type. (Annotation types are also interface types and Enums are class types.)

    Note

    Equality of ClassFile objects is reference based and a class file's hash code is the same as thisType's hash code.

  26. trait ClassFileRepository extends AnyRef

    Permalink

    Enables the lookup of ClassFiles.

  27. class ClassHierarchy extends AnyRef

    Permalink

    Represents a project's class hierarchy.

    Represents a project's class hierarchy. The class hierarchy only contains information about those classes that were explicitly added to it except of java.lang.Object; the type java.lang.Object is always part of the class hierarchy.

    Thread safety

    This class is effectively immutable. Hence, concurrent access to the class hierarchy is supported.

    Note

    Unless explicitly documented, it is an error to pass an instance of ObjectType to any method if the ObjectType was not previously added. If in doubt, first check if the type is known (isKnown/ifKnown).

  28. trait ClassMember extends ConcreteSourceElement

    Permalink

    Abstractions over the common properties of class members (Methods and Fields).

  29. case class ClassSignature(formalTypeParameters: List[FormalTypeParameter], superClassSignature: ClassTypeSignature, superInterfacesSignature: List[ClassTypeSignature]) extends Signature with Product with Serializable

    Permalink

    See also

    For matching signatures see Signature.

  30. case class ClassTypeSignature(packageIdentifier: Option[String], simpleClassTypeSignature: SimpleClassTypeSignature, classTypeSignatureSuffix: List[SimpleClassTypeSignature]) extends FieldTypeSignature with ThrowsSignature with Product with Serializable

    Permalink

    See also

    For matching signatures see Signature.

  31. case class ClassValue(value: Type) extends ElementValue with Product with Serializable

    Permalink
  32. final class Code extends Attribute with CommonAttributes with InstructionsContainer

    Permalink

    Representation of a method's code attribute, that is, representation of a method's implementation.

  33. case class CodeAnalysisFailedException(message: String, code: Code, pc: PC) extends RuntimeException with Product with Serializable

    Permalink

    Exception that is thrown when an analysis of a method's implementation has failed.

    Exception that is thrown when an analysis of a method's implementation has failed.

    message

    The message that describes the reason.

    code

    The code block for which the analysis failed.

    pc

    The program counter of the last instruction that was tried to analyze.

  34. trait CommonAttributes extends AnyRef

    Permalink

    Defines methods to return common attributes from the attributes table of ClassFile, Field, Method and Code declarations.

  35. trait CommonSourceElementAttributes extends CommonAttributes

    Permalink

    Defines methods to return common attributes from the attributes table of ClassFile, Field and Method declarations.

  36. case class CompactLineNumberTable(lineNumbers: Array[Byte]) extends LineNumberTable with Product with Serializable

    Permalink

    A method's line number table.

  37. sealed abstract class ComputationalType extends AnyRef

    Permalink

    The computational type of a value on the operand stack.

    The computational type of a value on the operand stack.

    (cf. JVM Spec. 2.11.1 Types and the Java Virtual Machine).

  38. sealed abstract class ComputationalTypeCategory extends AnyRef

    Permalink

    The computational type category of a value on the operand stack.

    The computational type category of a value on the operand stack.

    (cf. JVM Spec. 2.11.1 Types and the Java Virtual Machine).

  39. trait ConcreteSourceElement extends SourceElement

    Permalink

    We treat as a source element every entity that can be referred to by other class files.

  40. final case class ConstantClass(value: ReferenceType) extends ConstantValue[ReferenceType] with Product with Serializable

    Permalink

    Represents a class or interface.

    Represents a class or interface.

    ConstantClass is, e.g., used by anewarray and multianewarray instructions. A ConstantClass value is never a Field value. I.e., it is never used to set the value of a static field.

  41. final case class ConstantDouble(value: Double) extends ConstantFieldValue[Double] with Product with Serializable

    Permalink
  42. sealed trait ConstantFieldValue[T] extends Attribute with ConstantValue[T]

    Permalink

    A representation of the constant value of a field.

  43. final case class ConstantFloat(value: Float) extends ConstantFieldValue[Float] with Product with Serializable

    Permalink
  44. final case class ConstantInteger(value: Int) extends ConstantFieldValue[Int] with Product with Serializable

    Permalink
  45. final case class ConstantLong(value: Long) extends ConstantFieldValue[Long] with Product with Serializable

    Permalink
  46. final case class ConstantString(value: String) extends ConstantFieldValue[String] with Product with Serializable

    Permalink
  47. trait ConstantValue[T] extends BootstrapArgument

    Permalink

    Represents constant values; i.e., values pushed onto the stack by the ldc(2)(_w) instructions or type information required by the instructions to create arrays.

    Represents constant values; i.e., values pushed onto the stack by the ldc(2)(_w) instructions or type information required by the instructions to create arrays.

    Note

    A MethodHandle or MethodType (i.e., a MethodDescriptor) is also a ConstantValue.

  48. sealed trait ContravariantIndicator extends VarianceIndicator

    Permalink

    A declaration such as <? super Entry> is represented in class file signatures by the ContravariantIndicator ("? super") and a FieldTypeSignature.

    A declaration such as <? super Entry> is represented in class file signatures by the ContravariantIndicator ("? super") and a FieldTypeSignature.

    See also

    For matching signatures see Signature.

  49. sealed trait CovariantIndicator extends VarianceIndicator

    Permalink

    If you have a declaration such as <? extends Entry> then the "? extends" part is represented by the CovariantIndicator.

    If you have a declaration such as <? extends Entry> then the "? extends" part is represented by the CovariantIndicator.

    See also

    For matching signatures see Signature.

  50. sealed abstract class DoubleType extends NumericType

    Permalink
  51. case class DoubleValue(value: Double) extends BaseTypeElementValue with Product with Serializable

    Permalink
  52. sealed trait ElementValue extends Attribute

    Permalink

    An element value represents an annotation's value or an annonation's default value; depending on the context in which it is used.

  53. case class ElementValuePair(name: String, value: ElementValue) extends Product with Serializable

    Permalink

    An annotation's name-value pair.

  54. type ElementValuePairs = IndexedSeq[ElementValuePair]

    Permalink
  55. case class EnclosingMethod(clazz: ObjectType, name: Option[String], descriptor: Option[MethodDescriptor]) extends Attribute with Product with Serializable

    Permalink

    The optional enclosing method attribute of a class.

    The optional enclosing method attribute of a class.

    name

    The name of the enclosing method.

    descriptor

    The method descriptor of the enclosing method.

  56. case class EnumValue(enumType: ObjectType, constName: String) extends ElementValue with Product with Serializable

    Permalink
  57. case class ExceptionHandler(startPC: Int, endPC: Int, handlerPC: Int, catchType: Option[ObjectType]) extends Product with Serializable

    Permalink

    An entry in the exceptions table of a org.opalj.br.Code block.

    An entry in the exceptions table of a org.opalj.br.Code block.

    startPC

    A valid index into the code array. It points to the first instruction in the "try-block" (inclusive).

    endPC

    An index into the code array that points to the instruction after the "try-block" (exclusive).

    handlerPC

    Points to the first instruction of the exception handler.

    catchType

    The type of the exception that is catched. None in case of a finally block.

  58. type ExceptionHandlers = IndexedSeq[ExceptionHandler]

    Permalink
  59. case class ExceptionTable(exceptions: Exceptions) extends Attribute with Product with Serializable

    Permalink

    Attribute in a method's attributes table that declares the (checked) exceptions that may be thrown by the method.

  60. type Exceptions = Seq[ObjectType]

    Permalink
  61. final class Field extends ClassMember with Ordered[Field]

    Permalink

    Represents a single field declaration/definition.

    Represents a single field declaration/definition.

    Note

    Identity (w.r.t. equals/hashCode) is intentionally by reference (default behavior).

    ,

    Fields have – by default – no link to their defining ClassFile. However, if a analyses.Project is available then it is possible to get a Field's ClassFile by using Project's classFile(Field) method.

  62. sealed trait FieldAccessMethodHandle extends MethodHandle

    Permalink
  63. case class FieldIdentifier(declaringObjectType: ObjectType, fieldName: String) extends StructureIdentifier with Product with Serializable

    Permalink
  64. sealed trait FieldReadAccessMethodHandle extends FieldAccessMethodHandle

    Permalink
  65. sealed abstract class FieldType extends Type

    Permalink

    Supertype of all types except VoidType.

  66. trait FieldTypeSignature extends Signature with TypeSignature

    Permalink

    See also

    For matching signatures see Signature.

  67. sealed trait FieldWriteAccessMethodHandle extends FieldAccessMethodHandle

    Permalink
  68. type Fields = IndexedSeq[Field]

    Permalink
  69. sealed abstract class FloatType extends NumericType

    Permalink
  70. case class FloatValue(value: Float) extends BaseTypeElementValue with Product with Serializable

    Permalink
  71. case class FormalTypeParameter(identifier: String, classBound: Option[FieldTypeSignature], interfaceBound: List[FieldTypeSignature]) extends Product with Serializable

    Permalink

    See also

    For matching signatures see Signature.

  72. final case class FullFrame(frameType: Int, offsetDelta: Int, verificationTypeInfoLocals: VerificationTypeInfoLocals, verificationTypeInfoStack: VerificationTypeInfoStack) extends StackMapFrame with Product with Serializable

    Permalink
  73. case class GetFieldMethodHandle(declaringClassType: ObjectType, name: String, fieldType: FieldType) extends FieldReadAccessMethodHandle with Product with Serializable

    Permalink
  74. case class GetStaticMethodHandle(declaringClassType: ObjectType, name: String, fieldType: FieldType) extends FieldReadAccessMethodHandle with Product with Serializable

    Permalink
  75. case class InnerClass(innerClassType: ObjectType, outerClassType: Option[ObjectType], innerName: Option[String], innerClassAccessFlags: Int) extends Product with Serializable

    Permalink
  76. case class InnerClassTable(innerClasses: InnerClasses) extends Attribute with Product with Serializable

    Permalink

    Attribute in a class' attribute table the encodes information about inner classes.

  77. type InnerClasses = IndexedSeq[InnerClass]

    Permalink
  78. type Instructions = Array[Instruction]

    Permalink
  79. trait InstructionsContainer extends AnyRef

    Permalink

    Common interface of all elements that have (at most one) sequence of instructions.

  80. sealed abstract class IntLikeType extends NumericType

    Permalink

    An IntLikeType is every type (byte, char, short and int) that uses a primtive int to store the current value and which has explicit support in the JVM.

    An IntLikeType is every type (byte, char, short and int) that uses a primtive int to store the current value and which has explicit support in the JVM.

    Note

    Boolean values are (at least conceptually) also stored in ints. However, the JVM has basically no explicit support for booleans (e.g., a conversion of an int value to a boolean is not directly supported).

  81. case class IntValue(value: Int) extends BaseTypeElementValue with Product with Serializable

    Permalink
  82. sealed abstract class IntegerType extends IntLikeType

    Permalink
  83. case class InvokeInterfaceMethodHandle(receiverType: ReferenceType, name: String, methodDescriptor: MethodDescriptor) extends MethodCallMethodHandle with Product with Serializable

    Permalink
  84. case class InvokeSpecialMethodHandle(receiverType: ReferenceType, name: String, methodDescriptor: MethodDescriptor) extends MethodCallMethodHandle with Product with Serializable

    Permalink
  85. case class InvokeStaticMethodHandle(receiverType: ReferenceType, name: String, methodDescriptor: MethodDescriptor) extends MethodCallMethodHandle with Product with Serializable

    Permalink
  86. case class InvokeVirtualMethodHandle(receiverType: ReferenceType, name: String, methodDescriptor: MethodDescriptor) extends MethodCallMethodHandle with Product with Serializable

    Permalink
  87. case class LineNumber(startPC: Int, lineNumber: Int) extends Product with Serializable

    Permalink

    An entry in a line number table.

  88. trait LineNumberTable extends Attribute

    Permalink

    A method's line number table.

  89. type LineNumbers = Seq[LineNumber]

    Permalink
  90. case class LocalVariable(startPC: PC, length: Int, name: String, fieldType: FieldType, index: Int) extends Product with Serializable

    Permalink

    An entry in a local variable table.

  91. case class LocalVariableTable(localVariables: LocalVariables) extends Attribute with Product with Serializable

    Permalink

    Representation of the local variable table.

  92. case class LocalVariableType(startPC: Int, length: Int, name: String, signature: FieldTypeSignature, index: Int) extends Product with Serializable

    Permalink
  93. case class LocalVariableTypeTable(localVariableTypes: LocalVariableTypes) extends Attribute with Product with Serializable

    Permalink

    Representation of the local variable type table.

  94. type LocalVariableTypes = IndexedSeq[LocalVariableType]

    Permalink
  95. type LocalVariables = IndexedSeq[LocalVariable]

    Permalink
  96. case class LocalvarTableEntry(start_pc: Int, length: Int, local_variable_table_index: Int) extends Product with Serializable

    Permalink
  97. sealed abstract class LongType extends NumericType

    Permalink
  98. case class LongValue(value: Long) extends BaseTypeElementValue with Product with Serializable

    Permalink
  99. final class Method extends ClassMember with Ordered[Method] with InstructionsContainer

    Permalink

    Represents a single method.

    Represents a single method.

    Method objects are constructed using the companion object's factory methods.

    Note

    Equality of methods is – by purpose – reference based.

    ,

    Methods have – by default – no link to their defining ClassFile. However, if a analyses.Project is available then it is possible to get a Method's ClassFile by using Project's classFile(Method) method.

  100. trait MethodCallMethodHandle extends MethodHandle

    Permalink
  101. sealed abstract class MethodDescriptor extends ConstantValue[MethodDescriptor] with Ordered[MethodDescriptor]

    Permalink

    A method descriptor represents the parameters that the method takes and the value that it returns.

    A method descriptor represents the parameters that the method takes and the value that it returns.

    Note

    The equals(Any):Boolean method takes the number of parameters and types into account. I.e., two method descriptor objects are equal if they have the same number of parameters and each parameter has the same Type.

  102. sealed trait MethodHandle extends ConstantValue[MethodHandle]

    Permalink

    A method handle.

  103. case class MethodIdentifier(declaringReferenceType: ReferenceType, methodName: String, methodDescriptor: MethodDescriptor) extends StructureIdentifier with Product with Serializable

    Permalink
  104. case class MethodParameter(name: String, access_flags: Int) extends Product with Serializable

    Permalink

    The description of a method parameter.

  105. case class MethodParameterTable(parameters: MethodParameters) extends Attribute with Product with Serializable

    Permalink

    Representation of a method's information about the method parameters.

  106. type MethodParameters = IndexedSeq[MethodParameter]

    Permalink
  107. case class MethodSignature(name: String, descriptor: MethodDescriptor) extends Product with Serializable

    Permalink

    Represents a method signature which consists of the name and descriptor of a method; the signatures of all methods of a class file has to be different.

  108. case class MethodTypeSignature(formalTypeParameters: List[FormalTypeParameter], parametersTypeSignatures: List[TypeSignature], returnTypeSignature: ReturnTypeSignature, throwsSignature: List[ThrowsSignature]) extends Signature with Product with Serializable

    Permalink

    See also

    For matching signatures see Signature.

  109. type Methods = IndexedSeq[Method]

    Permalink
  110. case class NewInvokeSpecialMethodHandle(receiverType: ReferenceType, name: String, methodDescriptor: MethodDescriptor) extends MethodCallMethodHandle with Product with Serializable

    Permalink
  111. trait NoSourceElementsVisitor extends SourceElementsVisitor[Unit]

    Permalink

    Simple implementation of the SourceElementsVisitor trait where all methods do nothing.

  112. sealed abstract class NumericType extends BaseType

    Permalink
  113. final class ObjectType extends ReferenceType

    Permalink

    Represents an ObjectType.

  114. case class ObjectVariableInfo(clazz: ReferenceType) extends VerificationTypeInfo with Product with Serializable

    Permalink
  115. type Opcode = Int

    Permalink
  116. type PC = Int

    Permalink

    A program counter identifies an instruction in a code array.

    A program counter identifies an instruction in a code array.

    A program counter is a value in the range [0/*UShort.min*/, 65535/*UShort.max*/].

    Note

    This type alias serves comprehension purposes.

  117. type PCs = UShortSet

    Permalink

    A collection of program counters using a UShortSet as its backing collection.

    A collection of program counters using a UShortSet as its backing collection.

    Using PCs is in particular well suited for small(er) collections.

    Note

    This type alias serves comprehension purposes.

  118. trait ParameterAnnotationTable extends Attribute

    Permalink

    Parameter annotations.

  119. type ParameterAnnotations = IndexedSeq[Annotations]

    Permalink
  120. case class ProperTypeArgument(varianceIndicator: Option[VarianceIndicator], fieldTypeSignature: FieldTypeSignature) extends TypeArgument with Product with Serializable

    Permalink

    See also

    For matching signatures see Signature.

  121. case class PutFieldMethodHandle(declaringClassType: ObjectType, name: String, fieldType: FieldType) extends FieldWriteAccessMethodHandle with Product with Serializable

    Permalink
  122. case class PutStaticMethodHandle(declaringClassType: ObjectType, name: String, fieldType: FieldType) extends FieldWriteAccessMethodHandle with Product with Serializable

    Permalink
  123. sealed abstract class ReferenceType extends FieldType

    Permalink
  124. trait ReturnTypeSignature extends SignatureElement

    Permalink
  125. case class RuntimeInvisibleAnnotationTable(annotations: Annotations) extends AnnotationTable with Product with Serializable

    Permalink

    The runtime invisible class, method, or field annotations.

  126. case class RuntimeInvisibleParameterAnnotationTable(parameterAnnotations: ParameterAnnotations) extends ParameterAnnotationTable with Product with Serializable

    Permalink

    Parameter annotations.

  127. case class RuntimeInvisibleTypeAnnotationTable(typeAnnotations: TypeAnnotations) extends TypeAnnotationTable with Product with Serializable

    Permalink

    The runtime invisible type annotations.

  128. case class RuntimeVisibleAnnotationTable(annotations: Annotations) extends AnnotationTable with Product with Serializable

    Permalink

    A class, method, or field annotation.

  129. case class RuntimeVisibleParameterAnnotationTable(parameterAnnotations: ParameterAnnotations) extends ParameterAnnotationTable with Product with Serializable

    Permalink

    Parameter annotations.

  130. case class RuntimeVisibleTypeAnnotationTable(typeAnnotations: TypeAnnotations) extends TypeAnnotationTable with Product with Serializable

    Permalink

    A runtime visible type annotation.

  131. final case class SameFrame(frameType: Int) extends StackMapFrame with Product with Serializable

    Permalink
  132. final case class SameFrameExtended(frameType: Int, offsetDelta: Int) extends StackMapFrame with Product with Serializable

    Permalink
  133. final case class SameLocals1StackItemFrame(frameType: Int, verificationTypeInfoStackItem: br.VerificationTypeInfo) extends StackMapFrame with Product with Serializable

    Permalink
  134. final case class SameLocals1StackItemFrameExtended(frameType: Int, offsetDelta: Int, verificationTypeInfoStackItem: br.VerificationTypeInfo) extends StackMapFrame with Product with Serializable

    Permalink
  135. sealed abstract class ShortType extends IntLikeType

    Permalink
  136. case class ShortValue(value: Short) extends BaseTypeElementValue with Product with Serializable

    Permalink
  137. sealed trait Signature extends SignatureElement with Attribute

    Permalink

    An attribute-level signature as defined in the JVM specification.

    An attribute-level signature as defined in the JVM specification.

    To match Signature objects the predefined matchers/extractors can be used. * @example

    Example 1

    interface Processor extends Function<Object, Void> { /*empty*/ }

    ClassSignature: Ljava/lang/Object;Ljava/util/function/Function<Ljava/lang/Object;Ljava/lang/Void;>;

    ClassSignature(
      typeParameters=List(),
      superClass=ClassTypeSignature(Some(java/lang/),SimpleClassTypeSignature(Object,List()),List()),
      superInterfaces=List(
          ClassTypeSignature(
              Some(java/util/function/),
              SimpleClassTypeSignature(Function,
                    List(ProperTypeArgument(
                           None,
                           ClassTypeSignature(
                              Some(java/lang/),
                              SimpleClassTypeSignature(Object,List()),
                              List())),
                       ProperTypeArgument(
                          None,
                          ClassTypeSignature(
                              Some(java/lang/),
                              SimpleClassTypeSignature(Void,List()),
                              List())))),
              List())))

    Example 2

    interface Col<C> { /*empty*/ }

    ClassSignature: <C:Ljava/lang/Object;>Ljava/lang/Object;

    ClassSignature(
        typeParameters=
            List(
                FormalTypeParameter(
                    C,
                    Some(ClassTypeSignature(
                            Some(java/lang/),SimpleClassTypeSignature(Object,List()),List())),
                    List())),
         superClass=ClassTypeSignature(
                Some(java/lang/),SimpleClassTypeSignature(Object,List()),List()),
         superInterfaces=List())

    Example 3

    interface ColObject extends Col<Object> { /*empty*/ }

    ClassSignature: Ljava/lang/Object;LCol<Ljava/lang/Object;>;

    ClassSignature(
        typeParameters=List(),
        superClass=ClassTypeSignature(Some(java/lang/),SimpleClassTypeSignature(Object,List()),List()),
        superInterfaces=List(
                ClassTypeSignature(
                    None,
                    SimpleClassTypeSignature(
                        Col,
                        List(ProperTypeArgument(
                                variance=None,
                                signature=ClassTypeSignature(Some(java/lang/),SimpleClassTypeSignature(Object,List()),List()))
                     )),
                     List())))

    Example 4

    interface ColError<E extends Error> extends Col<E>{/*empty*/}

    ClassSignature: <E:Ljava/lang/Error;>Ljava/lang/Object;LCol<TE;>;

    ClassSignature(
        typeParameters=List(
                FormalTypeParameter(
                    E,
                    Some(ClassTypeSignature(Some(java/lang/),SimpleClassTypeSignature(Error,List()),List())),List())),
        superClass=ClassTypeSignature(Some(java/lang/),SimpleClassTypeSignature(Object,List()),List()),
        superInterfaces=List(
                ClassTypeSignature(
                    None,
                    SimpleClassTypeSignature(
                        Col,
                        List(ProperTypeArgument(variance=None,signature=TypeVariableSignature(E)))),
                    List())))

    Example 5

    class Use {
      // The following fields all have "ClassTypeSignatures"
      Col<?> ce = null; // Signature: LCol<*>;
      Col<Object> co = null; // Signature: LCol;
      Col<? super Serializable> cs = null; // Signature: LCol<-Ljava/io/Serializable;>;
      Col<? extends Comparable<?>> cc = null; // Signature: LCol<+Ljava/lang/Comparable<*>;>;
    
      MyCol<java.util.List<Object>> mco = new MyCol<>();
      MyCol<java.util.List<Object>>.MyInnerCol<Comparable<java.util.List<Object>>> mico = this.mco.new MyInnerCol<Comparable<java.util.List<Object>>>();
      // Signature: LMyCol;>.MyInnerCol;>;>;
    }

    AST of mico:

    ClassSignature(
        typeParameters=List(),
        superClass=ClassTypeSignature(
                None,
                SimpleClassTypeSignature(
                    MyCol,
                    List(ProperTypeArgument(
                            variance=None,
                            signature=ClassTypeSignature(
                                    Some(java/util/),
                                    SimpleClassTypeSignature(
                                        List,
                                        List(ProperTypeArgument(
                                                variance=None,
                                                signature=ClassTypeSignature(
                                                        Some(java/lang/),
                                                        SimpleClassTypeSignature(Object,List()),
                                                        List())))),
                                     List())))),
                /*suffic=*/List(SimpleClassTypeSignature(
                        MyInnerCol,
                        List(ProperTypeArgument(
                                variance=None,
                                signature=ClassTypeSignature(
                                    Some(java/lang/),
                                    SimpleClassTypeSignature(
                                        Comparable,
                                        List(ProperTypeArgument(
                                                variance=None,
                                                signature=ClassTypeSignature(
                                                        Some(java/util/),
                                                        SimpleClassTypeSignature(
                                                            List,
                                                            List(ProperTypeArgument(
                                                                    variance=None,
                                                                    signature=ClassTypeSignature(
                                                                            Some(java/lang/),
                                                                            SimpleClassTypeSignature(Object,List()),
                                                                            List())))),
                                                        List())))),
                                    List())))))),
        superInterfaces=List())

    Matching Signatures

    Scala REPL:

    val SignatureParser = org.opalj.br.reader.SignatureParser
    val GenericType = org.opalj.br.GenericType
    val SimpleGenericType = org.opalj.br.SimpleGenericType
    val BasicClassTypeSignature = org.opalj.br.BasicClassTypeSignature
    
    SignatureParser.parseClassSignature("Ljava/lang/Object;LCol;").superInterfacesSignature.head match { case BasicClassTypeSignature(ot) => ot.toJava; case _ => null}
    // res: String = Col
    
    SignatureParser.parseClassSignature("Ljava/lang/Object;LCol;").superInterfacesSignature.head match { case SimpleGenericType(bt,gt) => bt.toJava+"<"+gt.toJava+">"; case _ => null}
    //res11: String = null
    
    scala> SignatureParser.parseFieldTypeSignature("LCol;") match { case SimpleGenericType(bt,ta) => bt.toJava+"<"+ta+">"; case _ => null}
    res1: String = Col<ObjectType(java/lang/Object)>
    
    scala> SignatureParser.parseFieldTypeSignature("LCol;") match { case GenericType(bt,ta) => bt.toJava+"<"+ta+">"; case _ => null}
    res2: String = Col<List(ProperTypeArgument(variance=None,signature=ClassTypeSignature(Some(java/lang/),SimpleClassTypeSignature(Object,List()),List())))>
  138. trait SignatureElement extends AnyRef

    Permalink

    An element of a Signature used to encode generic type information.

  139. trait SignatureVisitor[T] extends AnyRef

    Permalink

    Implements a visitor for type signatures.

  140. case class SimpleClassTypeSignature(simpleName: String, typeArguments: List[TypeArgument]) extends Product with Serializable

    Permalink

    See also

    For matching signatures see Signature.

  141. case class SourceDebugExtension(debug_extension: Array[Byte]) extends Attribute with Product with Serializable

    Permalink

    Attribute to associate additional debug information with a class.

    Attribute to associate additional debug information with a class. The source debug extension attribute is an optional attribute of a class declaration (org.opalj.br.ClassFile).

  142. trait SourceElement extends CommonSourceElementAttributes

    Permalink

    We treat as a source element every entity that can be referred to by other class files.

  143. type SourceElementID = Int

    Permalink
  144. trait SourceElementsVisitor[T] extends AnyRef

    Permalink

    Classes that traverse a class file can extend this trait to facilitate reporting the traversed source file elements.

  145. case class SourceFile(sourceFile: String) extends Attribute with Product with Serializable

    Permalink

    The source file attribute is an optional attribute in the attributes table of org.opalj.br.ClassFile objects.

    The source file attribute is an optional attribute in the attributes table of org.opalj.br.ClassFile objects.

    sourceFile

    The name of the source file from which this class file was compiled; it will not contain any path information.

  146. sealed trait StackMapFrame extends AnyRef

    Permalink

    Part of the Java 6 stack map table attribute.

  147. type StackMapFrames = IndexedSeq[StackMapFrame]

    Permalink
  148. case class StackMapTable(stackMapFrames: StackMapFrames) extends Attribute with Product with Serializable

    Permalink

    Java 6's stack map table attribute.

  149. case class StringValue(value: String) extends ElementValue with Product with Serializable

    Permalink
  150. trait StructureIdentifier extends AnyRef

    Permalink

    Uniquely identifies a specific element that can (by definition) only exist once in a project.

    Uniquely identifies a specific element that can (by definition) only exist once in a project. For example, in the context of OPAL a type declaration is unique or the combination of a type declaration and a field name or the combination of a type declaration, method name and method descriptor.

  151. case class TAOfCastExpression(offset: Int, type_argument_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  152. case class TAOfCatch(exception_table_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  153. case class TAOfConstructorInMethodReferenceExpression(offset: Int, type_argument_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  154. case class TAOfConstructorInvocation(offset: Int, type_argument_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  155. case class TAOfFormalParameter(formal_parameter_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  156. case class TAOfInstanceOf(offset: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  157. case class TAOfLocalvarDecl(localVarTable: IndexedSeq[LocalvarTableEntry]) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  158. case class TAOfMethodInMethodReferenceExpression(offset: Int, type_argument_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  159. case class TAOfMethodInvocation(offset: Int, type_argument_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  160. case class TAOfMethodReferenceExpressionIdentifier(offset: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  161. case class TAOfMethodReferenceExpressionNew(offset: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  162. case class TAOfNew(offset: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  163. case class TAOfParameterDeclarationOfClassOrInterface(type_parameter_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  164. case class TAOfParameterDeclarationOfMethodOrConstructor(type_parameter_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  165. case class TAOfResourcevarDecl(localVarTable: IndexedSeq[LocalvarTableEntry]) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  166. case class TAOfSupertype(supertype_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  167. case class TAOfThrows(throws_type_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  168. case class TAOfTypeBoundOfParameterDeclarationOfClassOrInterface(type_parameter_index: Int, bound_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  169. case class TAOfTypeBoundOfParameterDeclarationOfMethodOrConstructor(type_parameter_index: Int, bound_index: Int) extends TypeAnnotationTarget with Product with Serializable

    Permalink
  170. case class TAOnNestedType(path: IndexedSeq[TypeAnnotationPathElement]) extends TypeAnnotationPath with Product with Serializable

    Permalink
  171. case class TAOnTypeArgument(type_argument_index: Int) extends TypeAnnotationPathElement with Product with Serializable

    Permalink
  172. sealed trait ThrowsSignature extends SignatureElement

    Permalink
  173. trait TraversingVisitor extends SignatureVisitor[Unit]

    Permalink

    This visitor's visit methods completely traverse all elements of a type signature.

  174. sealed abstract class Type extends UID with Ordered[Type]

    Permalink

    Represents a JVM type.

    Represents a JVM type.

    Programmatically, we distinguish three major kinds of types:

    • base types/primitive types
    • reference types
    • the type void.

    General Information

    From the JVM specification

    There are three kinds of reference types: class types, array types, and interface types. Their values are references to dynamically created class instances, arrays, or class instances or arrays that implement interfaces, respectively.

    A reference value may also be the special null reference, a reference to no object, which will be denoted here by null. The null reference initially has no runtime type, but may be cast to any type. The default value of a reference type is null. The Java virtual machine specification does not mandate a concrete value encoding null.

    Comparing Types/Performance

    Given that the comparison of types is a standard operation in static analysis that is usually done over and over again great care was taken to enable an efficient comparison of types. It is - without exception - always possible to compare types using reference equality (i.e., the eq/ne operators). For each type there will always be at most one object that represents that specific type.

    Additionally, a stable order is defined between types that is based on a type's kind and the unique id of the types in case of reference types. The order is: void type < primitive types < array types < class/interface types

  175. case class TypeAnnotation(target: TypeAnnotationTarget, path: TypeAnnotationPath, annotationType: FieldType, elementValuePairs: ElementValuePairs) extends Product with Serializable

    Permalink

    A type annotation (*TA*).

    A type annotation (*TA*).

    TypeAnnotations were introduced with Java 8 and are associated with a ClassFile, Field, Method or Code using a org.opalj.br.RuntimeInvisibleTypeAnnotationTable or a org.opalj.br.RuntimeVisibleTypeAnnotationTable attribute.

  176. sealed trait TypeAnnotationPath extends AnyRef

    Permalink

    The path that describes which type is actually annotated using a TypeAnnotation.

  177. sealed trait TypeAnnotationPathElement extends AnyRef

    Permalink

    An element of the path that describes which type is actually annotated using a TypeAnnotation.

  178. trait TypeAnnotationTable extends Attribute

    Permalink

    The runtime (in)visible type annotations of a class, method, field or code block.

    The runtime (in)visible type annotations of a class, method, field or code block.

    Note

    For further information about type-level annotations go to: http://cr.openjdk.java.net/~abuckley/8misc.pdf.

  179. sealed trait TypeAnnotationTarget extends AnyRef

    Permalink

    Describes the kind of the target of a TypeAnnotation.

  180. type TypeAnnotations = IndexedSeq[TypeAnnotation]

    Permalink
  181. sealed trait TypeArgument extends SignatureElement

    Permalink

    See also

    For matching signatures see Signature.

  182. trait TypeConversionFactory[T] extends AnyRef

    Permalink

    A factory to create instruction sequences to convert one primitive type into another one.

  183. case class TypeDeclaration(objectType: ObjectType, isInterfaceType: Boolean, theSuperclassType: Option[ObjectType], theSuperinterfaceTypes: Set[ObjectType]) extends Product with Serializable

    Permalink

    Stores information about a type's supertypes.

  184. case class TypeIdentifier(t: Type) extends StructureIdentifier with Product with Serializable

    Permalink
  185. trait TypeSignature extends ReturnTypeSignature

    Permalink
  186. case class TypeVariableSignature(identifier: String) extends FieldTypeSignature with ThrowsSignature with Product with Serializable

    Permalink

    See also

    For matching signatures see Signature.

  187. class TypesVisitor extends TraversingVisitor

    Permalink

    Traverses a signature and calls for each Type the given method.

    Traverses a signature and calls for each Type the given method.

    Thread Safety

    This class is thread-safe and reusable. I.e., you can use one instance of this visitor to simultaneously process multiple signatures. In this case, however, the given function f also has to be thread safe or you have to use different functions.

  188. case class UninitializedVariableInfo(offset: Int) extends VerificationTypeInfo with Product with Serializable

    Permalink
  189. case class UnknownAttribute(attributeName: String, info: Array[Byte]) extends Attribute with Product with Serializable

    Permalink

    Represents (as a byte array) attributes that are not directly supported by OPAL.

  190. case class UnpackedLineNumberTable(lineNumbers: LineNumbers) extends LineNumberTable with Product with Serializable

    Permalink

    A method's line number table.

  191. type UpperTypeBound = UIDSet[ReferenceType]

    Permalink

    An upper type bound represents the available type information about a reference value.

    An upper type bound represents the available type information about a reference value. It is always "just" an upper bound for a concrete type; i.e., we know that the runtime type has to be a subtype (reflexive) of the type identified by the upper bound. Furthermore, an upper bound can identify multiple independent types. E.g., a type bound for array objects could be: java.io.Serializable and java.lang.Cloneable. Here, independent means that no two types of the bound are in a subtype relationship. Hence, an upper bound is always a special set where the values are not equal and are not in an inheritance relation. However, identifying independent types is a class hierarchy's responsibility.

    In general, an upper bound identifies a single class type and a set of independent interface types that are known to be implemented by the current object. Even if the type contains a class type it may just be a super class of the concrete type and, hence, just represent an abstraction.

  192. sealed trait VarianceIndicator extends SignatureElement

    Permalink

    Indicates a TypeArgument's variance.

  193. sealed trait VerificationTypeInfo extends AnyRef

    Permalink

    Part of the Java 6 stack map table attribute.

  194. type VerificationTypeInfoLocals = IndexedSeq[VerificationTypeInfo]

    Permalink
  195. type VerificationTypeInfoStack = IndexedSeq[VerificationTypeInfo]

    Permalink
  196. final case class VirtualClass(thisType: ObjectType) extends VirtualSourceElement with Product with Serializable

    Permalink

    Represents a class for which we have found some references but have not analyzed any class file or do not want to keep the reference to the underlying class file.

  197. sealed trait VirtualClassMember extends VirtualSourceElement

    Permalink

  198. final case class VirtualField(declaringClassType: ObjectType, name: String, fieldType: FieldType) extends VirtualClassMember with Product with Serializable

    Permalink

    Represents a field of a virtual class.

  199. final class VirtualForwardingMethod extends VirtualMethod

    Permalink
  200. sealed class VirtualMethod extends VirtualClassMember

    Permalink

    Represents a method of a virtual class.

  201. sealed trait VirtualSourceElement extends SourceElement with Ordered[VirtualSourceElement]

    Permalink

    A VirtualSourceElement is the representation of some source element that is always detached from the concrete source element that represents the implementation.

  202. sealed abstract class VoidType extends Type with ReturnTypeSignature

    Permalink

    Represents the Java type/keyword void.

  203. sealed trait Wildcard extends TypeArgument

    Permalink

    If a type argument is not further specified (e.g.

    If a type argument is not further specified (e.g. List<?> l = …) then the type argument "?" is represented by this object.

    See also

    For matching signatures see Signature.

Value Members

  1. object Annotation extends Serializable

    Permalink
  2. object AnnotationTable

    Permalink

    Functionality common to annotation tables.

  3. object AnnotationValue extends Serializable

    Permalink
  4. object ArrayElementType

    Permalink

    Facilitates matching against an array's element type.

  5. object ArrayType

    Permalink

    Defines factory and extractor methods for ArrayTypes.

  6. object ArrayTypeSignature extends Serializable

    Permalink
  7. object ArrayValue extends Serializable

    Permalink
  8. object BaseType

    Permalink

    Common constants related to base types (aka.

    Common constants related to base types (aka. primitive types).

  9. object BasicClassTypeSignature

    Permalink

    Extractor/Matcher of the (potentially erased) ObjectType that is defined by a ClassTypeSignature; ignores all further potential type parameters.

    Extractor/Matcher of the (potentially erased) ObjectType that is defined by a ClassTypeSignature; ignores all further potential type parameters.

    See also

    For matching signatures see Signature.

  10. object BooleanType extends BooleanType with Product with Serializable

    Permalink
  11. object BooleanValue extends Serializable

    Permalink
  12. object BootstrapMethodTable extends Serializable

    Permalink
  13. object ByteType extends ByteType with Product with Serializable

    Permalink
  14. object ByteValue extends Serializable

    Permalink
  15. object Category1ComputationalTypeCategory extends ComputationalTypeCategory with Product with Serializable

    Permalink
  16. object Category2ComputationalTypeCategory extends ComputationalTypeCategory with Product with Serializable

    Permalink
  17. object CharType extends CharType with Product with Serializable

    Permalink
  18. object CharValue extends Serializable

    Permalink
  19. object ClassFile

    Permalink

    Defines factory and extractor methods for ClassFile objects as well as related constants.

  20. object ClassHierarchy

    Permalink

    Factory methods for creating ClassHierarchy objects.

  21. object ClassMember

    Permalink

    Defines an extractor method for class members.

  22. object ClassSignature extends Serializable

    Permalink
  23. object ClassTypeSignature extends Serializable

    Permalink
  24. object ClassValue extends Serializable

    Permalink
  25. object Code

    Permalink

    Defines constants useful when analyzing a method's code.

  26. object ComputationalTypeDouble extends ComputationalType with Product with Serializable

    Permalink
  27. object ComputationalTypeFloat extends ComputationalType with Product with Serializable

    Permalink
  28. object ComputationalTypeInt extends ComputationalType with Product with Serializable

    Permalink
  29. object ComputationalTypeLong extends ComputationalType with Product with Serializable

    Permalink
  30. object ComputationalTypeReference extends ComputationalType with Product with Serializable

    Permalink
  31. object ComputationalTypeReturnAddress extends ComputationalType with Product with Serializable

    Permalink
  32. object ConcreteType

    Permalink

    Matches a ClassTypeSignature with a SimpleClassTypeSignature that does not define a generic type.

    Matches a ClassTypeSignature with a SimpleClassTypeSignature that does not define a generic type. For example, java.lang.Object.

    See also

    For matching signatures see Signature.

  33. object ConcreteTypeArgument

    Permalink

    Facilitates matching ProperTypeArguments that define a single concrete/invariant type that is not a generic type on its own.

    Facilitates matching ProperTypeArguments that define a single concrete/invariant type that is not a generic type on its own. E.g., it can be used to match the type argument of List<Integer> and to extract the concrete type Integer. It cannot be used to match, e.g., List<List<Integer>>.

    See also

    For matching signatures see Signature.

  34. object ConstantDouble extends Serializable

    Permalink
  35. object ConstantFloat extends Serializable

    Permalink
  36. object ConstantInteger extends Serializable

    Permalink
  37. object ConstantLong extends Serializable

    Permalink
  38. object ConstantString extends Serializable

    Permalink
  39. object ConstantValue

    Permalink

    Facilitates matching constant values.

  40. object ContravariantIndicator extends ContravariantIndicator with Product with Serializable

    Permalink
  41. object CovariantIndicator extends CovariantIndicator with Product with Serializable

    Permalink
  42. object Deprecated extends Attribute with Product with Serializable

    Permalink

    The deprecated attribute.

  43. object DoubleType extends DoubleType with Product with Serializable

    Permalink
  44. object DoubleValue extends Serializable

    Permalink
  45. object DoubleVariableInfo extends VerificationTypeInfo with Product with Serializable

    Permalink
  46. object ElementValue

    Permalink
  47. object ElementValuePair extends Serializable

    Permalink
  48. object EnclosingMethod extends Serializable

    Permalink
  49. object EnumValue extends Serializable

    Permalink
  50. object ExceptionTable extends Serializable

    Permalink
  51. object Field

    Permalink

    Defines factory and extractor methods for Field objects.

  52. object FieldType

    Permalink

    Factory to parse field type (descriptors) to get field type objects.

  53. object FieldTypeSignature

    Permalink
  54. object FloatType extends FloatType with Product with Serializable

    Permalink
  55. object FloatValue extends Serializable

    Permalink
  56. object FloatVariableInfo extends VerificationTypeInfo with Product with Serializable

    Permalink
  57. object GenericType

    Permalink

    Matches all ClassTypeSignatures which consists of a SimpleClassTypeSignature with a non-empty List of TypeArguments ( which consists of Wildcards or ProperTypeArguments)

    Matches all ClassTypeSignatures which consists of a SimpleClassTypeSignature with a non-empty List of TypeArguments ( which consists of Wildcards or ProperTypeArguments)

    See also

    For matching signatures see Signature.

  58. object GenericTypeArgument

    Permalink

    Facilitates matching the (VarianceIndicator, ObjectType) that is defined within a ProperTypeArgument.

    Facilitates matching the (VarianceIndicator, ObjectType) that is defined within a ProperTypeArgument. It matches ProperTypeArguments which define TypeArguments in the inner ClassTypeSignature.

    Example:
    1. matches e.g.: List<List<Integer>>

      val scts : SimpleClassTypeSignature = ...
      scts.typeArguments match {
          case GenericTypeArgument(varInd, objectType) => ...
          case _ => ...
      }
    See also

    For matching signatures see Signature.

  59. object GenericTypeWithClassSuffix

    Permalink

    Matches all ClassTypeSignatures which consists of a SimpleClassTypeSignature with an optional list of TypeArguments ( which consists of Wildcards or ProperTypeArguments) and a non-empty list of SimpleClassTypeSignature (which encodes the suffix of the ClassTypeSignature for inner classes)

    Matches all ClassTypeSignatures which consists of a SimpleClassTypeSignature with an optional list of TypeArguments ( which consists of Wildcards or ProperTypeArguments) and a non-empty list of SimpleClassTypeSignature (which encodes the suffix of the ClassTypeSignature for inner classes)

    See also

    For matching signatures see Signature.

  60. object HasNoArgsAndReturnsVoid

    Permalink
  61. object InnerClassTable extends Serializable

    Permalink
  62. object IntValue extends Serializable

    Permalink
  63. object IntegerType extends IntegerType with Product with Serializable

    Permalink
  64. object IntegerVariableInfo extends VerificationTypeInfo with Product with Serializable

    Permalink
  65. object LineNumberTable

    Permalink
  66. object LocalVariableTable extends Serializable

    Permalink
  67. object LocalVariableTypeTable extends Serializable

    Permalink
  68. object LongType extends LongType with Product with Serializable

    Permalink
  69. object LongValue extends Serializable

    Permalink
  70. object LongVariableInfo extends VerificationTypeInfo with Product with Serializable

    Permalink
  71. object LowerTypeBound

    Permalink

    Facilitates matching ProperTypeArguments that define a lower type bound.

    Facilitates matching ProperTypeArguments that define a lower type bound. E.g., a type bound which uses a ContravarianceIndicator (? super) such as in List<? super Number>.

    Example:
    1. matches, e.g., List<? super Integer>

      val scts : SimpleClassTypeSignature = ...
      scts.typeArguments.head match {
          case LowerTypeBound(objectType) => ...
          case _ => ...
      }
    See also

    For matching signatures see Signature.

  72. object Method

    Permalink

    Defines factory and extractor methods for Method objects.

  73. object MethodCallMethodHandle

    Permalink
  74. object MethodDescriptor

    Permalink

    Defines extractor and factory methods for MethodDescriptors.

  75. object MethodParameterTable extends Serializable

    Permalink
  76. object MethodTypeSignature extends Serializable

    Permalink
  77. object MethodWithBody

    Permalink

    Provides efficient pattern matching facilities for methods with bodies.

    Provides efficient pattern matching facilities for methods with bodies.

    Example:
    1. Matching all methods that have a method body:

      for {
           classFile ← project.classFiles
           method @ MethodWithBody(code) ← classFile.methods
      } {
           // the type of method is "..resolved.Method"
           // the type of code is "..resolved.Code"
      }
  78. object NoArgumentMethodDescriptor

    Permalink
  79. final def NoPCs: UShortSet

    Permalink
  80. object NotJavaLangObject

    Permalink

    Defines an extractor to match a type against any ObjectType except java.lang.Object.

  81. object NotVoid

    Permalink

    Defines an extractor to match against any Type except void.

    Defines an extractor to match against any Type except void. Can be useful, e.g., when matching MethodDescriptors to select all methods that return something.

  82. object NullVariableInfo extends VerificationTypeInfo with Product with Serializable

    Permalink
  83. object ObjectType

    Permalink

    Defines factory and extractor methods for ObjectTypes.

  84. object ParameterAnnotationTable

    Permalink
  85. object ReferenceType

    Permalink

    Factory to create instances of ReferenceType.

  86. object ReturnType

    Permalink
  87. object RuntimeInvisibleAnnotationTable extends Serializable

    Permalink
  88. object RuntimeInvisibleParameterAnnotationTable extends Serializable

    Permalink
  89. object RuntimeInvisibleTypeAnnotationTable extends Serializable

    Permalink
  90. object RuntimeVisibleAnnotationTable extends Serializable

    Permalink
  91. object RuntimeVisibleParameterAnnotationTable extends Serializable

    Permalink
  92. object RuntimeVisibleTypeAnnotationTable extends Serializable

    Permalink
  93. object ShortType extends ShortType with Product with Serializable

    Permalink
  94. object ShortValue extends Serializable

    Permalink
  95. object SimpleGenericType

    Permalink

    Facilitates matching ClassTypeSignatures that define a simple generic type that has a single type argument with a concrete type.

    Facilitates matching ClassTypeSignatures that define a simple generic type that has a single type argument with a concrete type.

    Example:
    1. The following can be used to match, e.g., List<Object>.

      val f : Field = ...
      f.fieldTypeSignature match {
          case SimpleGenericType(ContainerType,ElementType) => ...
          case _ => ...
      }
  96. object SingleArgumentMethodDescriptor

    Permalink
  97. object SourceDebugExtension extends Serializable

    Permalink
  98. object SourceFile extends Serializable

    Permalink
  99. object StackMapTable extends Serializable

    Permalink
  100. object StringValue extends Serializable

    Permalink
  101. object Synthetic extends Attribute with Product with Serializable

    Permalink

    The synthetic attribute.

  102. object TADeeperInArrayType extends TypeAnnotationPathElement with Product with Serializable

    Permalink
  103. object TADeeperInNestedType extends TypeAnnotationPathElement with Product with Serializable

    Permalink
  104. object TADirectlyOnType extends TypeAnnotationPath with Product with Serializable

    Permalink
  105. object TAOfFieldDeclaration extends TypeAnnotationTarget with Product with Serializable

    Permalink
  106. object TAOfReceiverType extends TypeAnnotationTarget with Product with Serializable

    Permalink
  107. object TAOfReturnType extends TypeAnnotationTarget with Product with Serializable

    Permalink
  108. object TAOnBoundOfWildcardType extends TypeAnnotationPathElement with Product with Serializable

    Permalink
  109. object TheArgument

    Permalink
  110. object TopVariableInfo extends VerificationTypeInfo with Product with Serializable

    Permalink
  111. object TwoArgumentsMethodDescriptor

    Permalink
  112. object Type

    Permalink
  113. object TypeAnnotationTable

    Permalink

    Functionality common to annotation tables.

  114. object TypeVariableSignature extends Serializable

    Permalink
  115. object UninitializedThisVariableInfo extends VerificationTypeInfo with Product with Serializable

    Permalink
  116. object UnknownAttribute extends Serializable

    Permalink
  117. object UpperTypeBound

    Permalink

    Facilitates matching ProperTypeArguments that define an upper type bound.

    Facilitates matching ProperTypeArguments that define an upper type bound. E.g., a type bound which uses a CovarianceIndicator (? extends) such as in List<? extends Number>.

    Example:
    1. val scts : SimpleClassTypeSignature = ...
      scts.typeArguments.head match {
          case UpperTypeBound(objectType) => ...
          case _ => ...
      }
    See also

    For matching signatures see Signature.

  118. object VirtualForwardingMethod

    Permalink
  119. object VirtualMethod

    Permalink
  120. object VirtualSourceElement

    Permalink

    Defines common helper functions related to VirtualSourceElements.

  121. object VirtualTypeFlag extends Attribute with Product with Serializable

    Permalink

    This class file level attribute identifies ClassFile objects that have no direct representation in the bytecode of a project.

    This class file level attribute identifies ClassFile objects that have no direct representation in the bytecode of a project.

    Instead, the class file annotated with this attribute was generated to represent a class file object that is either explicitly generated at runtime and then used by the program or is conceptually generated at runtime by the JavaVM, but not exposed to the program. An example of the later case are the call site objects that are generated for invokedynamic instructions.

    However, such classes are generally required to facilitate subsequent analyses.

  122. object VoidType extends VoidType with Product with Serializable

    Permalink
  123. object Wildcard extends Wildcard with Product with Serializable

    Permalink
  124. package analyses

    Permalink

    Defines implicit conversions to wrap some types of analyses such that they generate results of type org.opalj.br.analyses.ReportableAnalysisResult.

  125. def annotationsToJava(annotations: Annotations, before: String = "", after: String = ""): String

    Permalink

    Converts a given list of annotations into a Java-like representation.

  126. final def assert(assertion: Boolean, message: β‡’ Any): Unit

    Permalink
    Annotations
    @elidable( ASSERTION ) @inline()
  127. def assert(assertion: Boolean): Unit

    Permalink
    Annotations
    @elidable( ASSERTION )
  128. package cfg

    Permalink
  129. def classAccessFlagsToXHTML(accessFlags: Int): Node

    Permalink
  130. package instructions

    Permalink

    Common instruction sequences.

  131. def methodToXHTML(accessFlags: Int, name: String, descriptor: MethodDescriptor, abbreviateTypes: Boolean): Node

    Permalink
  132. def methodToXHTML(name: String, descriptor: MethodDescriptor, abbreviateTypes: Boolean = true): Node

    Permalink

    Creates an (X)HTML5 representation that resembles Java source code method signature.

  133. package reader

    Permalink

    Defines convenience methods related to reading in class files.

  134. def typeToXHTML(accessFlags: Int, t: Type, abbreviateTypes: Boolean): Node

    Permalink
  135. def typeToXHTML(t: Type, abbreviateType: Boolean = true): Node

    Permalink

    Creates an (X)HTML5 representation of the given Java type declaration.

Inherited from AnyRef

Inherited from Any

Ungrouped