Package com.strobel.reflection
Class Flags
- java.lang.Object
-
- com.strobel.reflection.Flags
-
public class Flags extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Flags.Flag
-
Field Summary
Fields Modifier and Type Field Description static int
ABSTRACT
static int
ACC_BRIDGE
static int
ACC_SUPER
static int
ACC_SYNTHETIC
static int
ACC_VARARGS
static int
AccessFlags
Modifier masks.static int
ACYCLIC
Flag for class symbols to indicate it has been checked and found acyclic.static long
ACYCLIC_ANN
Flag for annotation type symbols to indicate it has been checked and found acyclic.static int
ANNOTATION
Flag that marks attribute interfaces, added in classfile v49.0.static int
ANONCONSTR
Flag for synthesized default constructors of anonymous classes.static int
BLOCK
Flag is set for compiler-generated anonymous method symbols that `own' an initializer block.static long
BRIDGE
Flag that marks bridge methods.static long
CLASH
Flag that marks non-override equivalent methods with the same signaturestatic int
CLASS_SEEN
Flag is set for class symbols if a class file was found for this class.static int
ClassFlags
Modifier masks.static int
COMPOUND
Flag is set for compiler-generated compound classes representing multiple variable boundsstatic int
ConstructorFlags
Modifier masks.static long
DEFAULT
Flag that marks either a default method or an interface containing default methods.static int
DEPRECATED
Flag is set if symbol is deprecated.static long
EFFECTIVELY_FINAL
Flag that marks an 'effectively final' local variablestatic int
ENUM
An enumeration type or an enumeration constant, added in classfile v49.0.static int
EXISTS
Flag is set for package symbols if a package has a member or directory and therefore exists.static int
FINAL
static long
GENERATEDCONSTR
Flag that marks a generated default constructor.static int
HASINIT
Flag is set for a variable symbol if the variable's definition has an initializer part.static 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.static int
INTERFACE
static int
InterfaceMethodFlags
Modifier masks.static int
InterfaceVarFlags
Modifier masks.static int
IPROXY
Flag is set for compiler-generated abstract methods that implement an interface method (Miranda methods).static int
LocalClassFlags
Modifier masks.static long
LocalVarFlags
static 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.static int
MemberClassFlags
Modifier masks.static int
MethodFlags
Modifier masks.static int
ModifierFlags
private static java.util.Map<java.lang.Long,java.util.Set<javax.lang.model.element.Modifier>>
modifierSets
static int
NATIVE
static 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.static long
OVERRIDE_BRIDGE
Flag that marks a special kind of bridge methods (the ones that come from restricted supertype bounds)static long
PARAMETER
Flag that marks formal parameters.static int
PRIVATE
static long
PROPRIETARY
Flag that marks an internal proprietary class.static int
PROTECTED
static int
PUBLIC
static int
SOURCE_SEEN
Flag is set for class symbols if a source file was found for this class.static int
StandardFlags
static int
STATIC
static int
STRICTFP
static int
SYNCHRONIZED
static int
SYNTHETIC
static int
TRANSIENT
static 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.static long
UNION
Flag that marks a a multi-catch parameterstatic long
VARARGS
Flag that marks varargs methods.static int
VarFlags
Modifier masks.static int
VOLATILE
-
Constructor Summary
Constructors Modifier Constructor Description private
Flags()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.util.EnumSet<Flags.Flag>
asFlagSet(long mask)
static java.util.Set<javax.lang.model.element.Modifier>
asModifierSet(long flags)
static java.util.Set<javax.lang.model.element.Modifier>
asModifierSet(MemberType memberType, long flags)
static boolean
isEnum(MemberInfo symbol)
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 java.lang.String
toString(long flags)
-
-
-
Field Detail
-
PUBLIC
public static final int PUBLIC
- See Also:
- Constant Field Values
-
PRIVATE
public static final int PRIVATE
- See Also:
- Constant Field Values
-
PROTECTED
public static final int PROTECTED
- See Also:
- Constant Field Values
-
STATIC
public static final int STATIC
- See Also:
- Constant Field Values
-
FINAL
public static final int FINAL
- See Also:
- Constant Field Values
-
SYNCHRONIZED
public static final int SYNCHRONIZED
- See Also:
- Constant Field Values
-
VOLATILE
public static final int VOLATILE
- See Also:
- Constant Field Values
-
TRANSIENT
public static final int TRANSIENT
- See Also:
- Constant Field Values
-
NATIVE
public static final int NATIVE
- See Also:
- Constant Field Values
-
INTERFACE
public static final int INTERFACE
- See Also:
- Constant Field Values
-
ABSTRACT
public static final int ABSTRACT
- See Also:
- Constant Field Values
-
STRICTFP
public static final int STRICTFP
- See Also:
- Constant Field Values
-
SYNTHETIC
public static final int SYNTHETIC
- See Also:
- Constant Field Values
-
ANNOTATION
public static final int ANNOTATION
Flag that marks attribute interfaces, added in classfile v49.0.- See Also:
- Constant Field Values
-
ENUM
public static final int ENUM
An enumeration type or an enumeration constant, added in classfile v49.0.- See Also:
- Constant Field Values
-
StandardFlags
public static final int StandardFlags
- See Also:
- Constant Field Values
-
ModifierFlags
public static final int ModifierFlags
- See Also:
- Constant Field Values
-
ACC_SUPER
public static final int ACC_SUPER
- See Also:
- Constant Field Values
-
ACC_BRIDGE
public static final int ACC_BRIDGE
- See Also:
- Constant Field Values
-
ACC_VARARGS
public static final int ACC_VARARGS
- See Also:
- Constant Field Values
-
ACC_SYNTHETIC
public static final int ACC_SYNTHETIC
- See Also:
- Constant Field Values
-
DEPRECATED
public static final int DEPRECATED
Flag is set if symbol is deprecated.- See Also:
- Constant Field Values
-
HASINIT
public static final int HASINIT
Flag is set for a variable symbol if the variable's definition has an initializer part.- See Also:
- Constant Field Values
-
BLOCK
public static final int BLOCK
Flag is set for compiler-generated anonymous method symbols that `own' an initializer block.- See Also:
- Constant Field Values
-
IPROXY
public static final int IPROXY
Flag is set for compiler-generated abstract methods that implement an interface method (Miranda methods).- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
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:
- Constant Field Values
-
COMPOUND
public static final int COMPOUND
Flag is set for compiler-generated compound classes representing multiple variable bounds- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
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:
- Constant Field Values
-
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:
- Constant Field Values
-
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:
- Constant Field Values
-
ANONCONSTR
public static final int ANONCONSTR
Flag for synthesized default constructors of anonymous classes.- See Also:
- Constant Field Values
-
ACYCLIC
public static final int ACYCLIC
Flag for class symbols to indicate it has been checked and found acyclic.- See Also:
- Constant Field Values
-
BRIDGE
public static final long BRIDGE
Flag that marks bridge methods.- See Also:
- Constant Field Values
-
PARAMETER
public static final long PARAMETER
Flag that marks formal parameters.- See Also:
- Constant Field Values
-
VARARGS
public static final long VARARGS
Flag that marks varargs methods.- See Also:
- Constant Field Values
-
ACYCLIC_ANN
public static final long ACYCLIC_ANN
Flag for annotation type symbols to indicate it has been checked and found acyclic.- See Also:
- Constant Field Values
-
GENERATEDCONSTR
public static final long GENERATEDCONSTR
Flag that marks a generated default constructor.- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
PROPRIETARY
public static final long PROPRIETARY
Flag that marks an internal proprietary class.- See Also:
- Constant Field Values
-
UNION
public static final long UNION
Flag that marks a a multi-catch parameter- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
EFFECTIVELY_FINAL
public static final long EFFECTIVELY_FINAL
Flag that marks an 'effectively final' local variable- See Also:
- Constant Field Values
-
CLASH
public static final long CLASH
Flag that marks non-override equivalent methods with the same signature- See Also:
- Constant Field Values
-
DEFAULT
public static final long DEFAULT
Flag that marks either a default method or an interface containing default methods.- See Also:
- Constant Field Values
-
AccessFlags
public static final int AccessFlags
Modifier masks.- See Also:
- Constant Field Values
-
LocalClassFlags
public static final int LocalClassFlags
Modifier masks.- See Also:
- Constant Field Values
-
MemberClassFlags
public static final int MemberClassFlags
Modifier masks.- See Also:
- Constant Field Values
-
ClassFlags
public static final int ClassFlags
Modifier masks.- See Also:
- Constant Field Values
-
InterfaceVarFlags
public static final int InterfaceVarFlags
Modifier masks.- See Also:
- Constant Field Values
-
VarFlags
public static final int VarFlags
Modifier masks.- See Also:
- Constant Field Values
-
ConstructorFlags
public static final int ConstructorFlags
Modifier masks.- See Also:
- Constant Field Values
-
InterfaceMethodFlags
public static final int InterfaceMethodFlags
Modifier masks.- See Also:
- Constant Field Values
-
MethodFlags
public static final int MethodFlags
Modifier masks.- See Also:
- Constant Field Values
-
LocalVarFlags
public static final long LocalVarFlags
- See Also:
- Constant Field Values
-
modifierSets
private static final java.util.Map<java.lang.Long,java.util.Set<javax.lang.model.element.Modifier>> modifierSets
-
-
Method Detail
-
toString
public static java.lang.String toString(long flags)
-
asFlagSet
public static java.util.EnumSet<Flags.Flag> asFlagSet(long mask)
-
asModifierSet
public static java.util.Set<javax.lang.model.element.Modifier> asModifierSet(long flags)
-
asModifierSet
public static java.util.Set<javax.lang.model.element.Modifier> asModifierSet(MemberType memberType, 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(MemberInfo symbol)
-
-