Class ClassBands


  • public class ClassBands
    extends BandSet
    Class bands (corresponds to the class_bands set of bands in the pack200 specification)
    • Field Summary

    • Constructor Summary

      Constructors 
      Constructor Description
      ClassBands​(Segment segment, int numClasses, int effort, boolean stripDebug)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addAnnotation​(int context, java.lang.String desc, boolean visible, java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)  
      void addAnnotationDefault​(java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)  
      void addClass​(int major, int flags, java.lang.String className, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)  
      void addClassAttribute​(NewAttribute attribute)
      Adds a new class attribute.
      void addCode()  
      void addCodeAttribute​(NewAttribute attribute)
      Adds a new code attribute.
      void addEnclosingMethod​(java.lang.String ownerClassName, java.lang.String name, java.lang.String signature)
      Adds an enclosing method.
      void addField​(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)  
      void addFieldAttribute​(NewAttribute attribute)
      Adds a new field attribute.
      void addHandler​(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, java.lang.String type)  
      void addLineNumber​(int line, org.objectweb.asm.Label start)  
      void addLocalVariable​(java.lang.String name, java.lang.String desc, java.lang.String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int indx)  
      void addMaxStack​(int maxStack, int maxLocals)  
      void addMethod​(int flags, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)  
      void addMethodAttribute​(NewAttribute attribute)
      Adds a new method attribute.
      void addParameterAnnotation​(int parameter, java.lang.String desc, boolean visible, java.util.List<java.lang.String> nameRU, java.util.List<java.lang.String> tags, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> caseArrayN, java.util.List<java.lang.String> nestTypeRS, java.util.List<java.lang.String> nestNameRU, java.util.List<java.lang.Integer> nestPairN)  
      void addSourceFile​(java.lang.String source)
      Adds a source file path.
      protected static int countArgs​(java.lang.String descriptor)
      Counts arguments in a descriptor.
      void currentClassReferencesInnerClass​(CPClass inner)  
      void doBciRenumbering​(IntList bciRenumbering, java.util.Map<org.objectweb.asm.Label,​java.lang.Integer> labelsToOffsets)  
      void endOfClass()
      Called when all the data for the current class has been.
      void endOfMethod()
      Called when all the data for the current method has been.
      void finaliseBands()
      All input classes for the segment have now been read in, so this method is called so that this class can calculate/complete anything it could not do while classes were being read.
      boolean isAnySyntheticClasses()
      Tests whether there are any synthetic classes.
      boolean isAnySyntheticFields()
      Tests whether there are any synthetic fields.
      boolean isAnySyntheticMethods()
      Tests whether there are any synthetic methods.
      int numClassesProcessed()
      Gets the number of classes processed.
      void pack​(java.io.OutputStream out)
      Writes the packed set of bands to the given output stream.
      void removeCurrentClass()
      Remove all entries for the current class
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ClassBands

        public ClassBands​(Segment segment,
                          int numClasses,
                          int effort,
                          boolean stripDebug)
                   throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • countArgs

        protected static int countArgs​(java.lang.String descriptor)
        Counts arguments in a descriptor.
        Parameters:
        descriptor - the descriptor to parse.
        Returns:
        the argument count.
      • addAnnotation

        public void addAnnotation​(int context,
                                  java.lang.String desc,
                                  boolean visible,
                                  java.util.List<java.lang.String> nameRU,
                                  java.util.List<java.lang.String> tags,
                                  java.util.List<java.lang.Object> values,
                                  java.util.List<java.lang.Integer> caseArrayN,
                                  java.util.List<java.lang.String> nestTypeRS,
                                  java.util.List<java.lang.String> nestNameRU,
                                  java.util.List<java.lang.Integer> nestPairN)
      • addAnnotationDefault

        public void addAnnotationDefault​(java.util.List<java.lang.String> nameRU,
                                         java.util.List<java.lang.String> tags,
                                         java.util.List<java.lang.Object> values,
                                         java.util.List<java.lang.Integer> caseArrayN,
                                         java.util.List<java.lang.String> nestTypeRS,
                                         java.util.List<java.lang.String> nestNameRU,
                                         java.util.List<java.lang.Integer> nestPairN)
      • addClass

        public void addClass​(int major,
                             int flags,
                             java.lang.String className,
                             java.lang.String signature,
                             java.lang.String superName,
                             java.lang.String[] interfaces)
      • addClassAttribute

        public void addClassAttribute​(NewAttribute attribute)
        Adds a new class attribute.
        Parameters:
        attribute - the new class attribute.
      • addCodeAttribute

        public void addCodeAttribute​(NewAttribute attribute)
        Adds a new code attribute.
        Parameters:
        attribute - the new code attribute.
      • addEnclosingMethod

        public void addEnclosingMethod​(java.lang.String ownerClassName,
                                       java.lang.String name,
                                       java.lang.String signature)
        Adds an enclosing method.
        Parameters:
        ownerClassName - a fully-qualifed class name.
        name - a method name.
        signature - a signature in the constant pool.
      • addField

        public void addField​(int flags,
                             java.lang.String name,
                             java.lang.String desc,
                             java.lang.String signature,
                             java.lang.Object value)
      • addFieldAttribute

        public void addFieldAttribute​(NewAttribute attribute)
        Adds a new field attribute.
        Parameters:
        attribute - the new field attribute.
      • addHandler

        public void addHandler​(org.objectweb.asm.Label start,
                               org.objectweb.asm.Label end,
                               org.objectweb.asm.Label handler,
                               java.lang.String type)
      • addLineNumber

        public void addLineNumber​(int line,
                                  org.objectweb.asm.Label start)
      • addLocalVariable

        public void addLocalVariable​(java.lang.String name,
                                     java.lang.String desc,
                                     java.lang.String signature,
                                     org.objectweb.asm.Label start,
                                     org.objectweb.asm.Label end,
                                     int indx)
      • addMaxStack

        public void addMaxStack​(int maxStack,
                                int maxLocals)
      • addMethod

        public void addMethod​(int flags,
                              java.lang.String name,
                              java.lang.String desc,
                              java.lang.String signature,
                              java.lang.String[] exceptions)
      • addMethodAttribute

        public void addMethodAttribute​(NewAttribute attribute)
        Adds a new method attribute.
        Parameters:
        attribute - the new method attribute.
      • addParameterAnnotation

        public void addParameterAnnotation​(int parameter,
                                           java.lang.String desc,
                                           boolean visible,
                                           java.util.List<java.lang.String> nameRU,
                                           java.util.List<java.lang.String> tags,
                                           java.util.List<java.lang.Object> values,
                                           java.util.List<java.lang.Integer> caseArrayN,
                                           java.util.List<java.lang.String> nestTypeRS,
                                           java.util.List<java.lang.String> nestNameRU,
                                           java.util.List<java.lang.Integer> nestPairN)
      • addSourceFile

        public void addSourceFile​(java.lang.String source)
        Adds a source file path.
        Parameters:
        source - a source file path.
      • doBciRenumbering

        public void doBciRenumbering​(IntList bciRenumbering,
                                     java.util.Map<org.objectweb.asm.Label,​java.lang.Integer> labelsToOffsets)
      • finaliseBands

        public void finaliseBands()
        All input classes for the segment have now been read in, so this method is called so that this class can calculate/complete anything it could not do while classes were being read.
      • isAnySyntheticClasses

        public boolean isAnySyntheticClasses()
        Tests whether there are any synthetic classes.
        Returns:
        whether there are any synthetic classes.
      • isAnySyntheticFields

        public boolean isAnySyntheticFields()
        Tests whether there are any synthetic fields.
        Returns:
        whether there are any synthetic fields.
      • isAnySyntheticMethods

        public boolean isAnySyntheticMethods()
        Tests whether there are any synthetic methods.
        Returns:
        whether there are any synthetic methods.
      • numClassesProcessed

        public int numClassesProcessed()
        Gets the number of classes processed.
        Returns:
        the number of classes processed.
      • pack

        public void pack​(java.io.OutputStream out)
                  throws java.io.IOException,
                         Pack200Exception
        Description copied from class: BandSet
        Writes the packed set of bands to the given output stream.
        Specified by:
        pack in class BandSet
        Parameters:
        out - TODO
        Throws:
        java.io.IOException - If an I/O error occurs.
        Pack200Exception - If a Pack200 semantic error occurs.
      • removeCurrentClass

        public void removeCurrentClass()
        Remove all entries for the current class