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

org.opalj.br.InnerClassTable.scala Maven / Gradle / Ivy

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

import org.opalj.bi.AccessFlags
import org.opalj.bi.AccessFlagsContexts

/**
 * Attribute in a class' attribute table that encodes information about inner classes.
 *
 * @author Michael Eichberg
 */
case class InnerClassTable(innerClasses: InnerClasses) extends Attribute {

    override def kindId: Int = InnerClassTable.KindId

    override def similar(other: Attribute, config: SimilarityTestConfiguration): Boolean = {
        other match {
            case that: InnerClassTable => this.similar(that)
            case _                     => false
        }
    }

    def similar(other: InnerClassTable): Boolean = {
        // the order of two inner classes tables does not need to be identical
        this.innerClasses.size == other.innerClasses.size &&
            this.innerClasses.forall(other.innerClasses.contains)
    }

}
object InnerClassTable {

    final val KindId = 9

}

case class InnerClass(
        innerClassType:        ObjectType,
        outerClassType:        Option[ObjectType],
        innerName:             Option[String],
        innerClassAccessFlags: Int
) {

    override def toString(): String = {
        "InnerClass"+
            "(type="+innerClassType.toJava+
            ",outerType="+outerClassType.map(_.toJava)+
            ",innerName="+innerName+
            ",accessFlags=\""+AccessFlags.toString(innerClassAccessFlags, AccessFlagsContexts.INNER_CLASS)+"\""+
            ")"
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy