/** * Returns true if this class is an interface. * * If this class is not defined, then this will throw an UnresolvedClassException * * @return True if this class is an interface */ public boolean isInterface() { ClassDef classDef = getClassDef(); return (classDef.getAccessFlags() & AccessFlags.INTERFACE.getValue()) != 0; }
public byte[] build(ClassDef classDef) { log.debug("Building input class: {}", classDef); ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS); visitClass(classDef, classWriter); visitFields(classDef.getFields(), classWriter, classDef.getAccessFlags()); if ((classDef.getAccessFlags() & Opcodes.ACC_ENUM) != 0) { visitEnumMethods(classDef, classDef.getFields(), classWriter); } else { visitMethods(classDef, classDef.getMethods(), classWriter); } classWriter.visitEnd(); return classWriter.toByteArray(); }
classDef.getAccessFlags(), classDef.getSuperclass(), classDef.getInterfaces(),
boolean isInterface = (Opcodes.ACC_INTERFACE & classDef.getAccessFlags()) != 0; if (!isInterface) {
private void visitClass(ClassDef classDef, ClassWriter classWriter) { int version = Opcodes.V1_8; int access = classDef.getAccessFlags(); String name = stripName(classDef.getType()); // Signature should be type signature for the class, which is uncommon. String signature = buildASMSignature(classDef); String superName = null; if (classDef.getSuperclass() != null) { superName = stripName(classDef.getSuperclass()); } String[] interfaces = buildInterfaces(classDef); classWriter.visit(version, access, name, signature, superName, interfaces); classWriter.visitSource(classDef.getSourceFile(), null); visitClassAnnotations(classDef.getAnnotations(), classWriter); }
int accessFlags = defItem.getAccessFlags(); sc.setModifiers(accessFlags);
@Override public int getAccessFlags() { return classDef.getAccessFlags(); }
@Override public int getAccessFlags() { return classDef.getAccessFlags(); }
@Override public int getAccessFlags() { return classDef.getAccessFlags(); }
@Override public int getAccessFlags() { return classDef.getAccessFlags(); }
/** * Returns true if this class is an interface. * * If this class is not defined, then this will throw an UnresolvedClassException * * @return True if this class is an interface */ public boolean isInterface() { ClassDef classDef = getClassDef(); return (classDef.getAccessFlags() & AccessFlags.INTERFACE.getValue()) != 0; }
/** * Returns true if this class is an interface. * * If this class is not defined, then this will throw an UnresolvedClassException * * @return True if this class is an interface */ public boolean isInterface() { ClassDef classDef = getClassDef(); return (classDef.getAccessFlags() & AccessFlags.INTERFACE.getValue()) != 0; }
public static boolean canAccessClass(@Nonnull String accessorType, @Nonnull ClassDef accesseeClassDef) { if (AccessFlags.PUBLIC.isSet(accesseeClassDef.getAccessFlags())) { return true; } // Classes can only be public or package private. Any private or protected inner classes are actually // package private. return getPackage(accesseeClassDef.getType()).equals(getPackage(accessorType)); }
public static boolean canAccessClass(@Nonnull String accessorType, @Nonnull ClassDef accesseeClassDef) { if (AccessFlags.PUBLIC.isSet(accesseeClassDef.getAccessFlags())) { return true; } // Classes can only be public or package private. Any private or protected inner classes are actually // package private. return getPackage(accesseeClassDef.getType()).equals(getPackage(accessorType)); }
private boolean canAccessClass(@Nonnull ClassDef accessorClassDef, @Nonnull ClassDef accesseeClassDef) { if (AccessFlags.PUBLIC.isSet(accesseeClassDef.getAccessFlags())) { return true; } // Classes can only be public or package private. Any private or protected inner classes are actually // package private. return getPackage(accesseeClassDef.getType()).equals(getPackage(accessorClassDef.getType())); }
private void writeAccessFlags(IndentingWriter writer) throws IOException { for (AccessFlags accessFlag: AccessFlags.getAccessFlagsForClass(classDef.getAccessFlags())) { writer.write(accessFlag.toString()); writer.write(' '); } }
private void writeAccessFlags(IndentingWriter writer) throws IOException { for (AccessFlags accessFlag: AccessFlags.getAccessFlagsForClass(classDef.getAccessFlags())) { writer.write(accessFlag.toString()); writer.write(' '); } }
private void writeAccessFlags(IndentingWriter writer) throws IOException { for (AccessFlags accessFlag: AccessFlags.getAccessFlagsForClass(classDef.getAccessFlags())) { writer.write(accessFlag.toString()); writer.write(' '); } }
private void writeAccessFlags(IndentingWriter writer) throws IOException { for (AccessFlags accessFlag : AccessFlags.getAccessFlagsForClass(classDef.getAccessFlags())) { writer.write(accessFlag.toString()); writer.write(' '); } }
private static ClassDef reDexClass(@Nonnull ClassDef classDef) { return new ImmutableClassDef(classDef.getType(), classDef.getAccessFlags(), classDef.getSuperclass(), classDef.getInterfaces(), classDef.getSourceFile(), classDef.getAnnotations(), classDef.getFields(), reDexMethods(classDef)); }