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

org.opalj.br.reader.InnerClasses_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.InnerClasses_attributeReader

import scala.reflect.ClassTag

/**
 * The factory methods to create inner classes attributes and entries.
 *
 * @author Michael Eichberg
 */
trait InnerClasses_attributeBinding
    extends InnerClasses_attributeReader
    with ConstantPoolBinding
    with AttributeBinding {

    type InnerClasses_attribute = br.InnerClassTable
    type InnerClassesEntry = br.InnerClass
    override implicit val innerClassesEntryType: ClassTag[InnerClassesEntry] = ClassTag(classOf[br.InnerClass])

    def InnerClasses_attribute(
        cp:                   Constant_Pool,
        ap_name_index:        Constant_Pool_Index,
        ap_descriptor_index:  Constant_Pool_Index,
        attribute_name_index: Constant_Pool_Index,
        inner_classes:        InnerClasses
    ): InnerClasses_attribute =
        new InnerClasses_attribute(inner_classes)

    def InnerClassesEntry(
        cp:                       Constant_Pool,
        inner_class_info_index:   Constant_Pool_Index,
        outer_class_info_index:   Constant_Pool_Index,
        inner_name_index:         Constant_Pool_Index,
        inner_class_access_flags: Int
    ): InnerClassesEntry = {
        new InnerClassesEntry(
            cp(inner_class_info_index).asObjectType(cp),
            if (outer_class_info_index == 0)
                None
            else
                Some(cp(outer_class_info_index).asObjectType(cp)),
            if (inner_name_index == 0)
                None
            else
                Some(cp(inner_name_index).asString),
            inner_class_access_flags
        )
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy