Java Code Examples for org.apache.bcel.Constants#ACC_INTERFACE

The following examples show how to use org.apache.bcel.Constants#ACC_INTERFACE . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: ApkToolPlus   File: Utility.java    License: Apache License 2.0 6 votes vote down vote up
/**
  * Convert bit field of flags into string such as `static final'.
  *
  * Special case: Classes compiled with new compilers and with the
  * `ACC_SUPER' flag would be said to be "synchronized". This is
  * because SUN used the same value for the flags `ACC_SUPER' and
  * `ACC_SYNCHRONIZED'. 
  *
  * @param  access_flags Access flags
  * @param  for_class access flags are for class qualifiers ?
  * @return String representation of flags
  */
 public static final String accessToString(int access_flags, 
				    boolean for_class)
 {
   StringBuffer buf = new StringBuffer();

   int p = 0;
   for(int i=0; p < Constants.MAX_ACC_FLAG; i++) { // Loop through known flags
     p = pow2(i);

     if((access_flags & p) != 0) {
/* Special case: Classes compiled with new compilers and with the
 * `ACC_SUPER' flag would be said to be "synchronized". This is
 * because SUN used the same value for the flags `ACC_SUPER' and
 * `ACC_SYNCHRONIZED'.
 */
if(for_class && ((p == Constants.ACC_SUPER) || (p == Constants.ACC_INTERFACE)))
  continue;	    

buf.append(Constants.ACCESS_NAMES[i] + " ");
     }
   }

   return buf.toString().trim();
 }
 
Example 2
Source Project: ApkToolPlus   File: ClassParser.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * Read information about the class and its super class.
 * @throws  IOException
 * @throws  ClassFormatException
 */
private final void readClassInfo() throws IOException, ClassFormatException
{
  access_flags = file.readUnsignedShort();

  /* Interfaces are implicitely abstract, the flag should be set
   * according to the JVM specification.
   */
  if((access_flags & Constants.ACC_INTERFACE) != 0)
    access_flags |= Constants.ACC_ABSTRACT;

  if(((access_flags & Constants.ACC_ABSTRACT) != 0) && 
     ((access_flags & Constants.ACC_FINAL)    != 0 ))
    throw new ClassFormatException("Class can't be both final and abstract");

  class_name_index      = file.readUnsignedShort();
  superclass_name_index = file.readUnsignedShort();
}
 
Example 3
Source Project: ApkToolPlus   File: AccessFlags.java    License: Apache License 2.0 4 votes vote down vote up
public final boolean isInterface() {
  return (access_flags & Constants.ACC_INTERFACE) != 0;
}
 
Example 4
Source Project: ApkToolPlus   File: Utility.java    License: Apache License 2.0 4 votes vote down vote up
/**
 * @return "class" or "interface", depending on the ACC_INTERFACE flag
 */
public static final String classOrInterface(int access_flags) {
  return ((access_flags & Constants.ACC_INTERFACE) != 0)? "interface" : "class";
}
 
Example 5
Source Project: ApkToolPlus   File: JavaClass.java    License: Apache License 2.0 4 votes vote down vote up
public final boolean isClass() {
  return (access_flags & Constants.ACC_INTERFACE) == 0;
}