org.gjt.sp.jedit.bsh.org.objectweb.asm

## Class ClassWriter

- java.lang.Object
- - org.gjt.sp.jedit.bsh.org.objectweb.asm.ClassWriter

- All Implemented Interfaces:
    ClassVisitor

      public class ClassWriter
      extends java.lang.Object
      implements ClassVisitor

  A `ClassVisitor` that generates Java class files. More precisely this visitor generates a byte array conforming to the Java class file format. It can be used alone, to generate a Java class "from scratch", or with one or more adapter class visitors to generate a modified class from one or more existing Java classes.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ClassWriter(boolean computeMaxs)` Constructs a new `ClassWriter` object.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `toByteArray()` Returns the bytecode of the class that was build with this class writer.
    `void` | `visit(int access, java.lang.String name, java.lang.String superName, java.lang.String[] interfaces, java.lang.String sourceFile)` Visits the header of the class.
    `void` | `visitEnd()` Visits the end of the class.
    `void` | `visitField(int access, java.lang.String name, java.lang.String desc, java.lang.Object value)` Visits a field of the class.
    `void` | `visitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int access)` Visits information about an inner class.
    `CodeVisitor` | `visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String[] exceptions)` Visits a method of the class.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ClassWriter

          public ClassWriter(boolean computeMaxs)

      Constructs a new `ClassWriter` object.
      Parameters:
        `computeMaxs` - `true` if the maximum stack size and the maximum number of local variables must be automatically computed. If this flag is `true`, then the arguments of the `visitMaxs` method of the `CodeVisitor` returned by the `visitMethod` method will be ignored, and computed automatically from the signature and the bytecode of each method.

  - ### Method Detail

    - #### visit

          public void visit(int access,
                   java.lang.String name,
                   java.lang.String superName,
                   java.lang.String[] interfaces,
                   java.lang.String sourceFile)

      Description copied from interface: `ClassVisitor`
      Visits the header of the class.
      Specified by:
        `visit` in interface `ClassVisitor`
      Parameters:
        `access` - the class's access flags (see `Constants`). This parameter also indicates if the class is deprecated.
        `name` - the internal name of the class (see `getInternalName`).
        `superName` - the internal of name of the super class (see `getInternalName`). For interfaces, the super class is `Object`. May be `null`, but only for the `java.lang.Object` class.
        `interfaces` - the internal names of the class's interfaces (see `getInternalName`). May be `null`.
        `sourceFile` - the name of the source file from which this class was compiled. May be `null`.

    - #### visitInnerClass

          public void visitInnerClass(java.lang.String name,
                             java.lang.String outerName,
                             java.lang.String innerName,
                             int access)

      Description copied from interface: `ClassVisitor`
      Visits information about an inner class. This inner class is not necessarily a member of the class being visited.
      Specified by:
        `visitInnerClass` in interface `ClassVisitor`
      Parameters:
        `name` - the internal name of an inner class (see `getInternalName`).
        `outerName` - the internal name of the class to which the inner class belongs (see `getInternalName`). May be `null`.
        `innerName` - the (simple) name of the inner class inside its enclosing class. May be `null` for anonymous inner classes.
        `access` - the access flags of the inner class as originally declared in the enclosing class.

    - #### visitField

          public void visitField(int access,
                        java.lang.String name,
                        java.lang.String desc,
                        java.lang.Object value)

      Description copied from interface: `ClassVisitor`
      Visits a field of the class.
      Specified by:
        `visitField` in interface `ClassVisitor`
      Parameters:
        `access` - the field's access flags (see `Constants`). This parameter also indicates if the field is synthetic and/or deprecated.
        `name` - the field's name.
        `desc` - the field's descriptor (see `Type`).
        `value` - the field's initial value. This parameter, which may be `null` if the field does not have an initial value, must be an `Integer`, a `Float`, a `Long`, a `Double` or a `String`.

    - #### visitMethod

          public CodeVisitor visitMethod(int access,
                                java.lang.String name,
                                java.lang.String desc,
                                java.lang.String[] exceptions)

      Description copied from interface: `ClassVisitor`
      Visits a method of the class. This method must return a new `CodeVisitor` instance (or `null`) each time it is called, i.e., it should not return a previously returned visitor.
      Specified by:
        `visitMethod` in interface `ClassVisitor`
      Parameters:
        `access` - the method's access flags (see `Constants`). This parameter also indicates if the method is synthetic and/or deprecated.
        `name` - the method's name.
        `desc` - the method's descriptor (see `Type`).
        `exceptions` - the internal names of the method's exception classes (see `getInternalName`). May be `null`.
      Returns:
        an object to visit the byte code of the method, or `null` if this class visitor is not interested in visiting the code of this method.

    - #### visitEnd

          public void visitEnd()

      Description copied from interface: `ClassVisitor`
      Visits the end of the class. This method, which is the last one to be called, is used to inform the visitor that all the fields and methods of the class have been visited.
      Specified by:
        `visitEnd` in interface `ClassVisitor`

    - #### toByteArray

          public byte[] toByteArray()

      Returns the bytecode of the class that was build with this class writer.
      Returns:
        the bytecode of the class that was build with this class writer.