
org.opalj.bi.AccessFlags.scala Maven / Gradle / Ivy
The newest version!
/* BSD 2-Clause License - see OPAL/LICENSE for details. */
package org.opalj
package bi
/**
* Convenience methods related to access flags.
*/
object AccessFlags {
final val ACC_PUBLIC_STATIC /*:Int*/ = ACC_PUBLIC.mask | ACC_STATIC.mask
final val ACC_NATIVE_VARARGS /*:Int*/ = ACC_NATIVE.mask | ACC_VARARGS.mask
final val ACC_SYNTHETIC_PUBLIC_SUPER = ACC_SYNTHETIC.mask | ACC_PUBLIC.mask | ACC_SUPER.mask
final val ACC_SYNTHETIC_STATIC_PUBLIC = ACC_SYNTHETIC.mask | ACC_STATIC.mask | ACC_PUBLIC.mask
final val ACC_SYNTHETIC_STATIC_PRIVATE = ACC_SYNTHETIC.mask | ACC_STATIC.mask | ACC_PRIVATE.mask
/**
* Returns the names of the access flags set in a respective vector.
*/
def toStrings(accessFlags: Int, ctx: AccessFlagsContext): Iterator[String] = {
AccessFlagsIterator(accessFlags, ctx) map { accessFlag ⇒
accessFlag.javaName.getOrElse("/*"+accessFlag.toString+"*/")
}
}
def toString(accessFlags: Int, ctx: AccessFlagsContext): String = {
toStrings(accessFlags, ctx).mkString(" ")
}
def classFlagsToJava(accessFlags: Int): String = {
// ACC_PUBLIC,ACC_FINAL,ACC_SUPER,ACC_INTERFACE,ACC_ABSTRACT,
// ACC_SYNTHETIC,ACC_ANNOTATION,ACC_ENUM,ACC_MODULE
if (ACC_MODULE.unapply(accessFlags))
return "module";
var flags = List.empty[String]
if (ACC_SYNTHETIC.unapply(accessFlags)) {
flags ::= "/*synthetic*/"
}
if (ACC_PUBLIC.unapply(accessFlags)) {
flags ::= "public"
}
if (ACC_FINAL.unapply(accessFlags)) {
flags ::= "final"
}
if (ACC_ABSTRACT.unapply(accessFlags) && !ACC_INTERFACE.unapply(accessFlags))
flags ::= "abstract"
if (ACC_INTERFACE.unapply(accessFlags)) {
if (!ACC_ABSTRACT.unapply(accessFlags))
flags ::= "/*NOT abstract (specification violation)*/"
if (ACC_ANNOTATION.unapply(accessFlags))
flags ::= "@interface"
else
flags ::= "interface"
}
if (!ACC_SUPER.unapply(accessFlags) && !ACC_MODULE.unapply(accessFlags))
flags ::= "/*super bit NOT set*/"
if (ACC_ENUM.unapply(accessFlags))
flags ::= "enum"
else if (!ACC_INTERFACE.unapply(accessFlags))
flags ::= "class"
flags.reverse.mkString(" ")
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy