Class Flags

java.lang.Object
com.strobel.assembler.metadata.Flags

public class Flags extends Object
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
     
    static enum 
     
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
    Modifier masks.
    static final int
    Flag for class symbols to indicate it has been checked and found acyclic.
    static final long
    Flag for annotation type symbols to indicate it has been checked and found acyclic.
    static final int
    Flag that marks attribute interfaces, added in classfile v49.0.
    static final long
     
    static final int
    Flag for synthesized default constructors of anonymous classes.
    static final long
    Flag that marks anonymous inner classes.
    static final int
    Flag is set for compiler-generated anonymous method symbols that `own' an initializer block.
    static final long
    Flag that marks bridge methods.
    static final long
    Flag that marks non-override equivalent methods with the same signature
    static final int
    Flag is set for class symbols if a class file was found for this class.
    static final int
    Modifier masks.
    static final long
    Flag to mark a record constructor as a compact one
    static final int
    Flag is set for compiler-generated compound classes representing multiple variable bounds
    static final int
    Modifier masks.
    static final long
    Flag that marks either a default method or an interface containing default methods.
    static final long
    Indicates a class has been run through the deobfuscating preprocessor.
    static final int
    Flag is set if symbol is deprecated.
    static final long
    Flag that marks an 'effectively final' local variable
    static final int
    An enumeration type or an enumeration constant, added in classfile v49.0.
    static final int
    Flag is set for package symbols if a package has a member or directory and therefore exists.
    static final int
    Modifier masks.
    static final long
     
    static final long
     
    static final long
     
    static final long
     
    static final long
     
    static final int
     
    static final int
    Flag is set for compiler-generated record members, it could be applied to accessors and fields
    static final long
    Flag that marks a generated default constructor.
    static final int
    Flag is set for a variable symbol if the variable's definition has an initializer part.
    static final long
    Flag that marks a hypothetical method that need not really be generated in the binary, but is present in the symbol table to simplify checking for erasure clashes - also used for 292 poly sig methods.
    static final int
     
    static final int
    Modifier masks.
    static final long
     
    static final int
    Modifier masks.
    static final int
    Flag is set for compiler-generated abstract methods that implement an interface method (Miranda methods).
    static final long
    Indicates whether an unsuccessful attempt has been made to load a method's body.
    static final int
    Modifier masks.
    static final long
     
    static final int
    Flag for class symbols is set and later re-set as a lock in Enter to detect cycles in the superclass/superinterface relations.
    static final int
    Added in SE8, represents constructs implicitly declared in source.
    static final int
    Modifier masks.
    static final int
    Modifier masks.
    static final int
    Modifier masks.
    static final long
     
    private static final Map<Long,Set<Modifier>>
     
    static final long
    Flag to indicate class symbol is for module-info
    static final int
    Modifier masks.
    static final int
     
    static final long
    Flag to indicate that the class/interface was declared with the non-sealed modifier.
    static final int
    Flag is set for nested classes that do not access instance members or `this' of an outer class and therefore don't need to be passed a this$n reference.
    static final long
    Flag that marks a special kind of bridge methods (the ones that come from restricted supertype bounds)
    static final long
    Flag that marks formal parameters.
    static final int
     
    static final long
    Flag that marks an internal proprietary class.
    static final int
     
    static final int
     
    static final long
     
    static final long
    Flag to indicate that a class is a record.
    static final int
    Modifier masks.
    static final int
    Modifier masks.
    static final long
    Flag to indicate sealed class/interface declaration.
    static final int
    Flag is set for class symbols if a source file was found for this class.
    static final int
     
    static final int
     
    static final int
    Modifier masks.
    static final int
     
    static final long
    Mirror of ACC_SUPER.
    static final int
     
    static final int
     
    static final int
     
    static final int
    Flag for class symbols is set and later re-set to indicate that a class has been entered but has not yet been attributed.
    static final long
    Flag to mark a record field that was not initialized in the compact constructor
    static final long
    Flag that marks a a multi-catch parameter
    static final long
    Flag that marks varargs methods.
    static final int
    Modifier masks.
    static final int
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    asFlagSet(long mask)
     
    asFlagSet(long mask, Flags.Kind kind)
     
    static Set<Modifier>
    asModifierSet(long flags)
     
    static long
    fromStandardFlags(long accessFlags, Flags.Kind kind)
     
    static boolean
     
    static boolean
    testAll(int value, int flags)
     
    static boolean
    testAll(long value, long flags)
     
    static boolean
    testAny(int value, int flags)
     
    static boolean
    testAny(long value, long flags)
     
    static int
    toModifiers(long flags)
     
    static String
    toString(long flags)
     
    static String
    toString(long flags, Flags.Kind kind)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • PUBLIC

      public static final int PUBLIC
      See Also:
    • PRIVATE

      public static final int PRIVATE
      See Also:
    • PROTECTED

      public static final int PROTECTED
      See Also:
    • STATIC

      public static final int STATIC
      See Also:
    • FINAL

      public static final int FINAL
      See Also:
    • SYNCHRONIZED

      public static final int SYNCHRONIZED
      See Also:
    • VOLATILE

      public static final int VOLATILE
      See Also:
    • TRANSIENT

      public static final int TRANSIENT
      See Also:
    • NATIVE

      public static final int NATIVE
      See Also:
    • INTERFACE

      public static final int INTERFACE
      See Also:
    • ABSTRACT

      public static final int ABSTRACT
      See Also:
    • STRICTFP

      public static final int STRICTFP
      See Also:
    • SYNTHETIC

      public static final int SYNTHETIC
      See Also:
    • ANNOTATION

      public static final int ANNOTATION
      Flag that marks attribute interfaces, added in classfile v49.0.
      See Also:
    • ENUM

      public static final int ENUM
      An enumeration type or an enumeration constant, added in classfile v49.0.
      See Also:
    • MANDATED

      public static final int MANDATED
      Added in SE8, represents constructs implicitly declared in source.
      See Also:
    • StandardFlags

      public static final int StandardFlags
      See Also:
    • ACC_FINAL

      public static final int ACC_FINAL
      See Also:
    • ACC_SUPER

      public static final int ACC_SUPER
      See Also:
    • ACC_BRIDGE

      public static final int ACC_BRIDGE
      See Also:
    • ACC_VARARGS

      public static final int ACC_VARARGS
      See Also:
    • ACC_MODULE

      public static final int ACC_MODULE
      See Also:
    • ACC_OPEN

      public static final int ACC_OPEN
      See Also:
    • ACC_SYNTHETIC

      public static final int ACC_SYNTHETIC
      See Also:
    • ACC_MANDATED

      public static final int ACC_MANDATED
      See Also:
    • ACC_TRANSITIVE

      public static final int ACC_TRANSITIVE
      See Also:
    • ACC_STATIC_PHASE

      public static final int ACC_STATIC_PHASE
      See Also:
    • DEPRECATED

      public static final int DEPRECATED
      Flag is set if symbol is deprecated.
      See Also:
    • HASINIT

      public static final int HASINIT
      Flag is set for a variable symbol if the variable's definition has an initializer part.
      See Also:
    • BLOCK

      public static final int BLOCK
      Flag is set for compiler-generated anonymous method symbols that `own' an initializer block.
      See Also:
    • IPROXY

      public static final int IPROXY
      Flag is set for compiler-generated abstract methods that implement an interface method (Miranda methods).
      See Also:
    • NOOUTERTHIS

      public static final int NOOUTERTHIS
      Flag is set for nested classes that do not access instance members or `this' of an outer class and therefore don't need to be passed a this$n reference. This flag is currently set only for anonymous classes in superclass constructor calls and only for pre 1.4 targets. todo: use this flag for optimizing away this$n parameters in other cases.
      See Also:
    • EXISTS

      public static final int EXISTS
      Flag is set for package symbols if a package has a member or directory and therefore exists.
      See Also:
    • COMPOUND

      public static final int COMPOUND
      Flag is set for compiler-generated compound classes representing multiple variable bounds
      See Also:
    • CLASS_SEEN

      public static final int CLASS_SEEN
      Flag is set for class symbols if a class file was found for this class.
      See Also:
    • SOURCE_SEEN

      public static final int SOURCE_SEEN
      Flag is set for class symbols if a source file was found for this class.
      See Also:
    • LOCKED

      public static final int LOCKED
      Flag for class symbols is set and later re-set as a lock in Enter to detect cycles in the superclass/superinterface relations. Similarly for constructor call cycle detection in Attr.
      See Also:
    • UNATTRIBUTED

      public static final int UNATTRIBUTED
      Flag for class symbols is set and later re-set to indicate that a class has been entered but has not yet been attributed.
      See Also:
    • ANONCONSTR

      public static final int ANONCONSTR
      Flag for synthesized default constructors of anonymous classes.
      See Also:
    • ACYCLIC

      public static final int ACYCLIC
      Flag for class symbols to indicate it has been checked and found acyclic.
      See Also:
    • BRIDGE

      public static final long BRIDGE
      Flag that marks bridge methods.
      See Also:
    • PARAMETER

      public static final long PARAMETER
      Flag that marks formal parameters.
      See Also:
    • VARARGS

      public static final long VARARGS
      Flag that marks varargs methods.
      See Also:
    • ACYCLIC_ANN

      public static final long ACYCLIC_ANN
      Flag for annotation type symbols to indicate it has been checked and found acyclic.
      See Also:
    • GENERATEDCONSTR

      public static final long GENERATEDCONSTR
      Flag that marks a generated default constructor.
      See Also:
    • HYPOTHETICAL

      public static final long HYPOTHETICAL
      Flag that marks a hypothetical method that need not really be generated in the binary, but is present in the symbol table to simplify checking for erasure clashes - also used for 292 poly sig methods.
      See Also:
    • PROPRIETARY

      public static final long PROPRIETARY
      Flag that marks an internal proprietary class.
      See Also:
    • UNION

      public static final long UNION
      Flag that marks a a multi-catch parameter
      See Also:
    • OVERRIDE_BRIDGE

      public static final long OVERRIDE_BRIDGE
      Flag that marks a special kind of bridge methods (the ones that come from restricted supertype bounds)
      See Also:
    • EFFECTIVELY_FINAL

      public static final long EFFECTIVELY_FINAL
      Flag that marks an 'effectively final' local variable
      See Also:
    • CLASH

      public static final long CLASH
      Flag that marks non-override equivalent methods with the same signature
      See Also:
    • DEFAULT

      public static final long DEFAULT
      Flag that marks either a default method or an interface containing default methods.
      See Also:
    • ANONYMOUS

      public static final long ANONYMOUS
      Flag that marks anonymous inner classes.
      See Also:
    • SUPER

      public static final long SUPER
      Mirror of ACC_SUPER.
      See Also:
    • LOAD_BODY_FAILED

      public static final long LOAD_BODY_FAILED
      Indicates whether an unsuccessful attempt has been made to load a method's body.
      See Also:
    • DEOBFUSCATED

      public static final long DEOBFUSCATED
      Indicates a class has been run through the deobfuscating preprocessor.
      See Also:
    • MODULE

      public static final long MODULE
      Flag to indicate class symbol is for module-info
      See Also:
    • RECORD

      public static final long RECORD
      Flag to indicate that a class is a record. The flag is also used to mark fields that are part of the state vector of a record and to mark the canonical constructor
      See Also:
    • COMPACT_RECORD_CONSTRUCTOR

      public static final long COMPACT_RECORD_CONSTRUCTOR
      Flag to mark a record constructor as a compact one
      See Also:
    • UNINITIALIZED_FIELD

      public static final long UNINITIALIZED_FIELD
      Flag to mark a record field that was not initialized in the compact constructor
      See Also:
    • GENERATED_MEMBER

      public static final int GENERATED_MEMBER
      Flag is set for compiler-generated record members, it could be applied to accessors and fields
      See Also:
    • SEALED

      public static final long SEALED
      Flag to indicate sealed class/interface declaration.
      See Also:
    • NON_SEALED

      public static final long NON_SEALED
      Flag to indicate that the class/interface was declared with the non-sealed modifier.
      See Also:
    • ModuleFlags

      public static final int ModuleFlags
      Modifier masks.
      See Also:
    • RequiresFlags

      public static final int RequiresFlags
      Modifier masks.
      See Also:
    • ExportsOpensFlags

      public static final int ExportsOpensFlags
      Modifier masks.
      See Also:
    • AccessFlags

      public static final int AccessFlags
      Modifier masks.
      See Also:
    • LocalClassFlags

      public static final int LocalClassFlags
      Modifier masks.
      See Also:
    • StaticLocalFlags

      public static final int StaticLocalFlags
      Modifier masks.
      See Also:
    • MemberClassFlags

      public static final int MemberClassFlags
      Modifier masks.
      See Also:
    • MemberStaticClassFlags

      public static final int MemberStaticClassFlags
      Modifier masks.
      See Also:
    • ClassFlags

      public static final int ClassFlags
      Modifier masks.
      See Also:
    • InterfaceVarFlags

      public static final int InterfaceVarFlags
      Modifier masks.
      See Also:
    • VarFlags

      public static final int VarFlags
      Modifier masks.
      See Also:
    • ConstructorFlags

      public static final int ConstructorFlags
      Modifier masks.
      See Also:
    • InterfaceMethodFlags

      public static final int InterfaceMethodFlags
      Modifier masks.
      See Also:
    • MethodFlags

      public static final int MethodFlags
      Modifier masks.
      See Also:
    • RecordMethodFlags

      public static final int RecordMethodFlags
      Modifier masks.
      See Also:
    • ExtendedInterfaceFlags

      public static final long ExtendedInterfaceFlags
      See Also:
    • ExtendedStandardFlags

      public static final long ExtendedStandardFlags
      See Also:
    • ExtendedMemberClassFlags

      public static final long ExtendedMemberClassFlags
      See Also:
    • ExtendedMemberStaticClassFlags

      public static final long ExtendedMemberStaticClassFlags
      See Also:
    • ExtendedClassFlags

      public static final long ExtendedClassFlags
      See Also:
    • ModifierFlags

      public static final long ModifierFlags
      See Also:
    • InterfaceMethodMask

      public static final long InterfaceMethodMask
      See Also:
    • AnnotationTypeElementMask

      public static final long AnnotationTypeElementMask
      See Also:
    • LocalVarFlags

      public static final long LocalVarFlags
      See Also:
    • ReceiverParamFlags

      public static final long ReceiverParamFlags
      See Also:
    • modifierSets

      private static final Map<Long,Set<Modifier>> modifierSets
  • Constructor Details

    • Flags

      private Flags()
  • Method Details

    • toString

      public static String toString(long flags)
    • toString

      public static String toString(long flags, Flags.Kind kind)
    • asFlagSet

      public static EnumSet<Flags.Flag> asFlagSet(long mask)
    • asFlagSet

      public static EnumSet<Flags.Flag> asFlagSet(long mask, Flags.Kind kind)
    • asModifierSet

      public static Set<Modifier> asModifierSet(long flags)
    • toModifiers

      public static int toModifiers(long flags)
    • testAny

      public static boolean testAny(int value, int flags)
    • testAll

      public static boolean testAll(int value, int flags)
    • testAny

      public static boolean testAny(long value, long flags)
    • testAll

      public static boolean testAll(long value, long flags)
    • isEnum

      public static boolean isEnum(TypeDefinition symbol)
    • fromStandardFlags

      public static long fromStandardFlags(long accessFlags, Flags.Kind kind)