All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mockit.asm.LineNumberWriter Maven / Gradle / Ivy

Go to download

JMockit is a Java toolkit for automated developer testing. It contains mocking/faking APIs and a code coverage tool, supporting both JUnit and TestNG. The mocking APIs allow all kinds of Java code, without testability restrictions, to be tested in isolation from selected dependencies.

There is a newer version: 1.49
Show newest version
package mockit.asm;

import javax.annotation.*;

final class LineNumberWriter extends AttributeWriter
{
   /**
    * Number of entries in the LineNumberTable attribute.
    */
   @Nonnegative private int lineNumberCount;

   /**
    * The LineNumberTable attribute.
    */
   @Nullable private ByteVector lineNumbers;

   LineNumberWriter(@Nonnull ConstantPoolGeneration cp) { super(cp); }

   void addLineNumber(@Nonnegative int line, @Nonnull Label start) {
      if (lineNumbers == null) {
         setAttribute("LineNumberTable");
         lineNumbers = new ByteVector();
      }

      lineNumberCount++;
      lineNumbers.putShort(start.position);
      lineNumbers.putShort(line);
   }

   boolean hasLineNumbers() { return lineNumbers != null; }

   @Nonnegative @Override
   int getSize() { return lineNumbers == null ? 0 : 8 + lineNumbers.length; }

   @Override
   void put(@Nonnull ByteVector out) {
      if (lineNumbers != null) {
         put(out, lineNumbers.length + 2);
         out.putShort(lineNumberCount);
         out.putByteVector(lineNumbers);
      }
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy