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

org.opalj.br.reader.StackMapTable_attributeBinding.scala Maven / Gradle / Ivy

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

import org.opalj.bi.reader.StackMapTable_attributeReader
import org.opalj.bi.reader.StackMapFrameReader
import org.opalj.bi.reader.VerificationTypeInfoReader

import scala.reflect.ClassTag

/**
 * Provides the factory methods to create a stack map table attribute and
 * its entries.
 *
 * @author Michael Eichberg
 */
trait StackMapTable_attributeBinding
    extends StackMapTable_attributeReader
    with StackMapFrameReader
    with VerificationTypeInfoReader
    with ConstantPoolBinding
    with AttributeBinding {

    type VerificationTypeInfo = br.VerificationTypeInfo
    override implicit val verificationTypeInfoType: ClassTag[VerificationTypeInfo] = ClassTag(classOf[br.VerificationTypeInfo])
    type StackMapTable_attribute = br.StackMapTable
    type StackMapFrame = br.StackMapFrame
    override implicit val stackMapFrameType: ClassTag[StackMapFrame] = ClassTag(classOf[br.StackMapFrame])
    type FullFrame = br.FullFrame
    type SameFrame = br.SameFrame
    type AppendFrame = br.AppendFrame
    type SameFrameExtended = br.SameFrameExtended
    type ChopFrame = br.ChopFrame
    type SameLocals1StackItemFrame = br.SameLocals1StackItemFrame
    type SameLocals1StackItemFrameExtended = br.SameLocals1StackItemFrameExtended

    type ObjectVariableInfo = br.ObjectVariableInfo
    type UninitializedVariableInfo = br.UninitializedVariableInfo
    type TopVariableInfo = br.VerificationTypeInfo
    type IntegerVariableInfo = br.VerificationTypeInfo
    type FloatVariableInfo = br.VerificationTypeInfo
    type LongVariableInfo = br.VerificationTypeInfo
    type DoubleVariableInfo = br.VerificationTypeInfo
    type NullVariableInfo = br.VerificationTypeInfo
    type UninitializedThisVariableInfo = br.VerificationTypeInfo

    def StackMapTable_attribute(
        cp:                   Constant_Pool,
        ap_name_index:        Constant_Pool_Index,
        ap_descriptor_index:  Constant_Pool_Index,
        attribute_name_index: Constant_Pool_Index,
        stack_map_frames:     StackMapFrames
    ): StackMapTable_attribute = StackMapTable(stack_map_frames)

    def SameFrame(frame_type: Int): StackMapFrame = br.SameFrame(frame_type)

    def SameLocals1StackItemFrame(
        frame_type:                   Int,
        verification_type_info_stack: VerificationTypeInfo
    ): StackMapFrame = br.SameLocals1StackItemFrame(frame_type, verification_type_info_stack)

    def SameLocals1StackItemFrameExtended(
        frame_type:                   Int,
        offset_delta:                 Int,
        verification_type_info_stack: VerificationTypeInfo
    ): StackMapFrame =
        br.SameLocals1StackItemFrameExtended(offset_delta, verification_type_info_stack)

    def ChopFrame(
        frame_type:   Int,
        offset_delta: Int
    ): ChopFrame = br.ChopFrame(frame_type, offset_delta)

    def SameFrameExtended(
        frame_type:   Int,
        offset_delta: Int
    ): StackMapFrame = br.SameFrameExtended(offset_delta)

    def AppendFrame(
        frame_type:                    Int,
        offset_delta:                  Int,
        verification_type_info_locals: VerificationTypeInfoLocals
    ): StackMapFrame = br.AppendFrame(frame_type, offset_delta, verification_type_info_locals)

    def FullFrame(
        frame_type:                    Int,
        offset_delta:                  Int,
        verification_type_info_locals: VerificationTypeInfoLocals,
        verification_type_info_stack:  VerificationTypeInfoStack
    ): StackMapFrame = {
        br.FullFrame(offset_delta, verification_type_info_locals, verification_type_info_stack)
    }

    def TopVariableInfo(): br.TopVariableInfo.type = br.TopVariableInfo

    def IntegerVariableInfo(): br.IntegerVariableInfo.type = br.IntegerVariableInfo

    def FloatVariableInfo(): br.FloatVariableInfo.type = br.FloatVariableInfo

    def LongVariableInfo(): br.LongVariableInfo.type = br.LongVariableInfo

    def DoubleVariableInfo(): br.DoubleVariableInfo.type = br.DoubleVariableInfo

    def NullVariableInfo(): br.NullVariableInfo.type = br.NullVariableInfo

    def UninitializedThisVariableInfo(): br.UninitializedThisVariableInfo.type = {
        br.UninitializedThisVariableInfo
    }

    def UninitializedVariableInfo(offset: Int) = new UninitializedVariableInfo(offset)

    def ObjectVariableInfo(
        cp:         Constant_Pool,
        type_index: Constant_Pool_Index
    ): ObjectVariableInfo = {
        new ObjectVariableInfo(cp(type_index).asReferenceType(cp))
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy