<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--NewPage--> <HTML> <HEAD> <!-- Generated by javadoc (build 1.6.0_0) on Wed Dec 30 04:50:29 EST 2009 --> <TITLE> ClassWriter </TITLE> <META NAME="date" CONTENT="2009-12-30"> <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style"> <SCRIPT type="text/javascript"> function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { parent.document.title="ClassWriter"; } } </SCRIPT> <NOSCRIPT> </NOSCRIPT> </HEAD> <BODY BGCOLOR="white" onload="windowTitle();"> <HR> <!-- ========= START OF TOP NAVBAR ======= --> <A NAME="navbar_top"><!-- --></A> <A HREF="#skip-navbar_top" title="Skip navigation links"></A> <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> <TR> <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A NAME="navbar_top_firstrow"><!-- --></A> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> </TR> </TABLE> </TD> <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> </EM> </TD> </TR> <TR> <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm"><B>PREV CLASS</B></A> <A HREF="../../../com/sleepycat/asm/FieldVisitor.html" title="interface in com.sleepycat.asm"><B>NEXT CLASS</B></A></FONT></TD> <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../index.html?com/sleepycat/asm/ClassWriter.html" target="_top"><B>FRAMES</B></A> <A HREF="ClassWriter.html" target="_top"><B>NO FRAMES</B></A> <SCRIPT type="text/javascript"> <!-- if(window==top) { document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>'); } //--> </SCRIPT> <NOSCRIPT> <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A> </NOSCRIPT> </FONT></TD> </TR> <TR> <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD> <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD> </TR> </TABLE> <A NAME="skip-navbar_top"></A> <!-- ========= END OF TOP NAVBAR ========= --> <HR> <!-- ======== START OF CLASS DATA ======== --> <H2> <FONT SIZE="-1"> com.sleepycat.asm</FONT> <BR> Class ClassWriter</H2> <PRE> java.lang.Object <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>com.sleepycat.asm.ClassWriter</B> </PRE> <DL> <DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></DD> </DL> <HR> <DL> <DT><PRE>public class <B>ClassWriter</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></DL> </PRE> <P> A <A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm"><CODE>ClassVisitor</CODE></A> that generates classes in bytecode form. 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 <A HREF="../../../com/sleepycat/asm/ClassReader.html" title="class in com.sleepycat.asm"><CODE>ClassReader</CODE></A> and adapter class visitor to generate a modified class from one or more existing Java classes. <P> <P> <HR> <P> <!-- ======== CONSTRUCTOR SUMMARY ======== --> <A NAME="constructor_summary"><!-- --></A> <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> <B>Constructor Summary</B></FONT></TH> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#ClassWriter(boolean)">ClassWriter</A></B>(boolean computeMaxs)</CODE> <BR> Constructs a new <A HREF="../../../com/sleepycat/asm/ClassWriter.html" title="class in com.sleepycat.asm"><CODE>ClassWriter</CODE></A> object.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#ClassWriter(boolean, boolean)">ClassWriter</A></B>(boolean computeMaxs, boolean skipUnknownAttributes)</CODE> <BR> Constructs a new <A HREF="../../../com/sleepycat/asm/ClassWriter.html" title="class in com.sleepycat.asm"><CODE>ClassWriter</CODE></A> object.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#ClassWriter(com.sleepycat.asm.ClassReader, boolean)">ClassWriter</A></B>(<A HREF="../../../com/sleepycat/asm/ClassReader.html" title="class in com.sleepycat.asm">ClassReader</A> classReader, boolean computeMaxs)</CODE> <BR> Constructs a new <A HREF="../../../com/sleepycat/asm/ClassWriter.html" title="class in com.sleepycat.asm"><CODE>ClassWriter</CODE></A> object and enables optimizations for "mostly add" bytecode transformations.</TD> </TR> </TABLE> <!-- ========== METHOD SUMMARY =========== --> <A NAME="method_summary"><!-- --></A> <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> <B>Method Summary</B></FONT></TH> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> int</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#newClass(java.lang.String)">newClass</A></B>(java.lang.String value)</CODE> <BR> Adds a class reference to the constant pool of the class being build.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> int</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#newConst(java.lang.Object)">newConst</A></B>(java.lang.Object cst)</CODE> <BR> Adds a number or string constant to the constant pool of the class being build.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> int</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#newField(java.lang.String, java.lang.String, java.lang.String)">newField</A></B>(java.lang.String owner, java.lang.String name, java.lang.String desc)</CODE> <BR> Adds a field reference to the constant pool of the class being build.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> int</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#newMethod(java.lang.String, java.lang.String, java.lang.String, boolean)">newMethod</A></B>(java.lang.String owner, java.lang.String name, java.lang.String desc, boolean itf)</CODE> <BR> Adds a method reference to the constant pool of the class being build.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> int</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#newNameType(java.lang.String, java.lang.String)">newNameType</A></B>(java.lang.String name, java.lang.String desc)</CODE> <BR> Adds a name and type to the constant pool of the class being build.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> int</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#newUTF8(java.lang.String)">newUTF8</A></B>(java.lang.String value)</CODE> <BR> Adds an UTF8 string to the constant pool of the class being build.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> byte[]</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#toByteArray()">toByteArray</A></B>()</CODE> <BR> Returns the bytecode of the class that was build with this class writer.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> void</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])">visit</A></B>(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)</CODE> <BR> Visits the header of the class.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> <A HREF="../../../com/sleepycat/asm/AnnotationVisitor.html" title="interface in com.sleepycat.asm">AnnotationVisitor</A></CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitAnnotation(java.lang.String, boolean)">visitAnnotation</A></B>(java.lang.String desc, boolean visible)</CODE> <BR> Visits an annotation of the class.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> void</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitAttribute(com.sleepycat.asm.Attribute)">visitAttribute</A></B>(<A HREF="../../../com/sleepycat/asm/Attribute.html" title="class in com.sleepycat.asm">Attribute</A> attr)</CODE> <BR> Visits a non standard attribute of the class.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> void</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitEnd()">visitEnd</A></B>()</CODE> <BR> Visits the end of the class.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> <A HREF="../../../com/sleepycat/asm/FieldVisitor.html" title="interface in com.sleepycat.asm">FieldVisitor</A></CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)">visitField</A></B>(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)</CODE> <BR> Visits a field of the class.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> void</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int)">visitInnerClass</A></B>(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int access)</CODE> <BR> Visits information about an inner class.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> <A HREF="../../../com/sleepycat/asm/MethodVisitor.html" title="interface in com.sleepycat.asm">MethodVisitor</A></CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])">visitMethod</A></B>(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)</CODE> <BR> Visits a method of the class.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> void</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitOuterClass(java.lang.String, java.lang.String, java.lang.String)">visitOuterClass</A></B>(java.lang.String owner, java.lang.String name, java.lang.String desc)</CODE> <BR> Visits the enclosing class of the class.</TD> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> <CODE> void</CODE></FONT></TD> <TD><CODE><B><A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitSource(java.lang.String, java.lang.String)">visitSource</A></B>(java.lang.String file, java.lang.String debug)</CODE> <BR> Visits the source of the class.</TD> </TR> </TABLE> <A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A> <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor"> <TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH> </TR> <TR BGCOLOR="white" CLASS="TableRowColor"> <TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD> </TR> </TABLE> <P> <!-- ========= CONSTRUCTOR DETAIL ======== --> <A NAME="constructor_detail"><!-- --></A> <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> <B>Constructor Detail</B></FONT></TH> </TR> </TABLE> <A NAME="ClassWriter(boolean)"><!-- --></A><H3> ClassWriter</H3> <PRE> public <B>ClassWriter</B>(boolean computeMaxs)</PRE> <DL> <DD>Constructs a new <A HREF="../../../com/sleepycat/asm/ClassWriter.html" title="class in com.sleepycat.asm"><CODE>ClassWriter</CODE></A> object. <P> <DL> <DT><B>Parameters:</B><DD><CODE>computeMaxs</CODE> - <tt>true</tt> if the maximum stack size and the maximum number of local variables must be automatically computed. If this flag is <tt>true</tt>, then the arguments of the <A HREF="../../../com/sleepycat/asm/MethodVisitor.html#visitMaxs(int, int)"><CODE>visitMaxs</CODE></A> method of the <A HREF="../../../com/sleepycat/asm/MethodVisitor.html" title="interface in com.sleepycat.asm"><CODE>MethodVisitor</CODE></A> returned by the <A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])"><CODE>visitMethod</CODE></A> method will be ignored, and computed automatically from the signature and the bytecode of each method.</DL> </DL> <HR> <A NAME="ClassWriter(boolean, boolean)"><!-- --></A><H3> ClassWriter</H3> <PRE> public <B>ClassWriter</B>(boolean computeMaxs, boolean skipUnknownAttributes)</PRE> <DL> <DD>Constructs a new <A HREF="../../../com/sleepycat/asm/ClassWriter.html" title="class in com.sleepycat.asm"><CODE>ClassWriter</CODE></A> object. <P> <DL> <DT><B>Parameters:</B><DD><CODE>computeMaxs</CODE> - <tt>true</tt> if the maximum stack size and the maximum number of local variables must be automatically computed. If this flag is <tt>true</tt>, then the arguments of the <A HREF="../../../com/sleepycat/asm/MethodVisitor.html#visitMaxs(int, int)"><CODE>visitMaxs</CODE></A> method of the <A HREF="../../../com/sleepycat/asm/MethodVisitor.html" title="interface in com.sleepycat.asm"><CODE>MethodVisitor</CODE></A> returned by the <A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])"><CODE>visitMethod</CODE></A> method will be ignored, and computed automatically from the signature and the bytecode of each method.<DD><CODE>skipUnknownAttributes</CODE> - <b>Deprecated</b>. The value of this parameter is ignored.</DL> </DL> <HR> <A NAME="ClassWriter(com.sleepycat.asm.ClassReader, boolean)"><!-- --></A><H3> ClassWriter</H3> <PRE> public <B>ClassWriter</B>(<A HREF="../../../com/sleepycat/asm/ClassReader.html" title="class in com.sleepycat.asm">ClassReader</A> classReader, boolean computeMaxs)</PRE> <DL> <DD>Constructs a new <A HREF="../../../com/sleepycat/asm/ClassWriter.html" title="class in com.sleepycat.asm"><CODE>ClassWriter</CODE></A> object and enables optimizations for "mostly add" bytecode transformations. These optimizations are the following: <ul> <li>The constant pool from the original class is copied as is in the new class, which saves time. New constant pool entries will be added at the end if necessary, but unused constant pool entries <i>won't be removed</i>.</li> <li>Methods that are not transformed are copied as is in the new class, directly from the original class bytecode (i.e. without emitting visit events for all the method instructions), which saves a <i>lot</i> of time. Untransformed methods are detected by the fact that the <A HREF="../../../com/sleepycat/asm/ClassReader.html" title="class in com.sleepycat.asm"><CODE>ClassReader</CODE></A> receives <A HREF="../../../com/sleepycat/asm/MethodVisitor.html" title="interface in com.sleepycat.asm"><CODE>MethodVisitor</CODE></A> objects that come from a <A HREF="../../../com/sleepycat/asm/ClassWriter.html" title="class in com.sleepycat.asm"><CODE>ClassWriter</CODE></A> (and not from a custom <A HREF="../../../com/sleepycat/asm/ClassAdapter.html" title="class in com.sleepycat.asm"><CODE>ClassAdapter</CODE></A> or any other <A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm"><CODE>ClassVisitor</CODE></A> instance).</li> </ul> <P> <DL> <DT><B>Parameters:</B><DD><CODE>classReader</CODE> - the <A HREF="../../../com/sleepycat/asm/ClassReader.html" title="class in com.sleepycat.asm"><CODE>ClassReader</CODE></A> used to read the original class. It will be used to copy the entire constant pool from the original class and also to copy other fragments of original bytecode where applicable.<DD><CODE>computeMaxs</CODE> - <tt>true</tt> if the maximum stack size and the maximum number of local variables must be automatically computed. If this flag is <tt>true</tt>, then the arguments of the <A HREF="../../../com/sleepycat/asm/MethodVisitor.html#visitMaxs(int, int)"><CODE>visitMaxs</CODE></A> method of the <A HREF="../../../com/sleepycat/asm/MethodVisitor.html" title="interface in com.sleepycat.asm"><CODE>MethodVisitor</CODE></A> returned by the <A HREF="../../../com/sleepycat/asm/ClassWriter.html#visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])"><CODE>visitMethod</CODE></A> method will be ignored, and computed automatically from the signature and the bytecode of each method.</DL> </DL> <!-- ============ METHOD DETAIL ========== --> <A NAME="method_detail"><!-- --></A> <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> <B>Method Detail</B></FONT></TH> </TR> </TABLE> <A NAME="visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])"><!-- --></A><H3> visit</H3> <PRE> public void <B>visit</B>(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])">ClassVisitor</A></CODE></B></DD> <DD>Visits the header of the class. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])">visit</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>version</CODE> - the class version.<DD><CODE>access</CODE> - the class's access flags (see <A HREF="../../../com/sleepycat/asm/Opcodes.html" title="interface in com.sleepycat.asm"><CODE>Opcodes</CODE></A>). This parameter also indicates if the class is deprecated.<DD><CODE>name</CODE> - the internal name of the class (see <A HREF="../../../com/sleepycat/asm/Type.html#getInternalName()"><CODE>getInternalName</CODE></A>).<DD><CODE>signature</CODE> - the signature of this class. May be <tt>null</tt> if the class is not a generic one, and does not extend or implement generic classes or interfaces.<DD><CODE>superName</CODE> - the internal of name of the super class (see <A HREF="../../../com/sleepycat/asm/Type.html#getInternalName()"><CODE>getInternalName</CODE></A>). For interfaces, the super class is <CODE>Object</CODE>. May be <tt>null</tt>, but only for the <CODE>Object</CODE> class.<DD><CODE>interfaces</CODE> - the internal names of the class's interfaces (see <A HREF="../../../com/sleepycat/asm/Type.html#getInternalName()"><CODE>getInternalName</CODE></A>). May be <tt>null</tt>.</DL> </DD> </DL> <HR> <A NAME="visitSource(java.lang.String, java.lang.String)"><!-- --></A><H3> visitSource</H3> <PRE> public void <B>visitSource</B>(java.lang.String file, java.lang.String debug)</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitSource(java.lang.String, java.lang.String)">ClassVisitor</A></CODE></B></DD> <DD>Visits the source of the class. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitSource(java.lang.String, java.lang.String)">visitSource</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>file</CODE> - the name of the source file from which the class was compiled. May be <tt>null</tt>.<DD><CODE>debug</CODE> - additional debug information to compute the correspondance between source and compiled elements of the class. May be <tt>null</tt>.</DL> </DD> </DL> <HR> <A NAME="visitOuterClass(java.lang.String, java.lang.String, java.lang.String)"><!-- --></A><H3> visitOuterClass</H3> <PRE> public void <B>visitOuterClass</B>(java.lang.String owner, java.lang.String name, java.lang.String desc)</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitOuterClass(java.lang.String, java.lang.String, java.lang.String)">ClassVisitor</A></CODE></B></DD> <DD>Visits the enclosing class of the class. This method must be called only if the class has an enclosing class. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitOuterClass(java.lang.String, java.lang.String, java.lang.String)">visitOuterClass</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>owner</CODE> - internal name of the enclosing class of the class.<DD><CODE>name</CODE> - the name of the method that contains the class, or <tt>null</tt> if the class is not enclosed in a method of its enclosing class.<DD><CODE>desc</CODE> - the descriptor of the method that contains the class, or <tt>null</tt> if the class is not enclosed in a method of its enclosing class.</DL> </DD> </DL> <HR> <A NAME="visitAnnotation(java.lang.String, boolean)"><!-- --></A><H3> visitAnnotation</H3> <PRE> public <A HREF="../../../com/sleepycat/asm/AnnotationVisitor.html" title="interface in com.sleepycat.asm">AnnotationVisitor</A> <B>visitAnnotation</B>(java.lang.String desc, boolean visible)</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitAnnotation(java.lang.String, boolean)">ClassVisitor</A></CODE></B></DD> <DD>Visits an annotation of the class. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitAnnotation(java.lang.String, boolean)">visitAnnotation</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>desc</CODE> - the class descriptor of the annotation class.<DD><CODE>visible</CODE> - <tt>true</tt> if the annotation is visible at runtime. <DT><B>Returns:</B><DD>a non null visitor to visit the annotation values.</DL> </DD> </DL> <HR> <A NAME="visitAttribute(com.sleepycat.asm.Attribute)"><!-- --></A><H3> visitAttribute</H3> <PRE> public void <B>visitAttribute</B>(<A HREF="../../../com/sleepycat/asm/Attribute.html" title="class in com.sleepycat.asm">Attribute</A> attr)</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitAttribute(com.sleepycat.asm.Attribute)">ClassVisitor</A></CODE></B></DD> <DD>Visits a non standard attribute of the class. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitAttribute(com.sleepycat.asm.Attribute)">visitAttribute</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>attr</CODE> - an attribute.</DL> </DD> </DL> <HR> <A NAME="visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int)"><!-- --></A><H3> visitInnerClass</H3> <PRE> public void <B>visitInnerClass</B>(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int access)</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int)">ClassVisitor</A></CODE></B></DD> <DD>Visits information about an inner class. This inner class is not necessarily a member of the class being visited. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int)">visitInnerClass</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>name</CODE> - the internal name of an inner class (see <A HREF="../../../com/sleepycat/asm/Type.html#getInternalName()"><CODE>getInternalName</CODE></A>).<DD><CODE>outerName</CODE> - the internal name of the class to which the inner class belongs (see <A HREF="../../../com/sleepycat/asm/Type.html#getInternalName()"><CODE>getInternalName</CODE></A>). May be <tt>null</tt>.<DD><CODE>innerName</CODE> - the (simple) name of the inner class inside its enclosing class. May be <tt>null</tt> for anonymous inner classes.<DD><CODE>access</CODE> - the access flags of the inner class as originally declared in the enclosing class.</DL> </DD> </DL> <HR> <A NAME="visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)"><!-- --></A><H3> visitField</H3> <PRE> public <A HREF="../../../com/sleepycat/asm/FieldVisitor.html" title="interface in com.sleepycat.asm">FieldVisitor</A> <B>visitField</B>(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)">ClassVisitor</A></CODE></B></DD> <DD>Visits a field of the class. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)">visitField</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>access</CODE> - the field's access flags (see <A HREF="../../../com/sleepycat/asm/Opcodes.html" title="interface in com.sleepycat.asm"><CODE>Opcodes</CODE></A>). This parameter also indicates if the field is synthetic and/or deprecated.<DD><CODE>name</CODE> - the field's name.<DD><CODE>desc</CODE> - the field's descriptor (see <A HREF="../../../com/sleepycat/asm/Type.html" title="class in com.sleepycat.asm"><CODE>Type</CODE></A>).<DD><CODE>signature</CODE> - the field's signature. May be <tt>null</tt> if the field's type does not use generic types.<DD><CODE>value</CODE> - the field's initial value. This parameter, which may be <tt>null</tt> if the field does not have an initial value, must be an <CODE>Integer</CODE>, a <CODE>Float</CODE>, a <CODE>Long</CODE>, a <CODE>Double</CODE> or a <CODE>String</CODE> (for <tt>int</tt>, <tt>float</tt>, <tt>long</tt> or <tt>String</tt> fields respectively). <i>This parameter is only used for static fields</i>. Its value is ignored for non static fields, which must be initialized through bytecode instructions in constructors or methods. <DT><B>Returns:</B><DD>a visitor to visit field annotations and attributes, or <tt>null</tt> if this class visitor is not interested in visiting these annotations and attributes.</DL> </DD> </DL> <HR> <A NAME="visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])"><!-- --></A><H3> visitMethod</H3> <PRE> public <A HREF="../../../com/sleepycat/asm/MethodVisitor.html" title="interface in com.sleepycat.asm">MethodVisitor</A> <B>visitMethod</B>(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])">ClassVisitor</A></CODE></B></DD> <DD>Visits a method of the class. This method <i>must</i> return a new <A HREF="../../../com/sleepycat/asm/MethodVisitor.html" title="interface in com.sleepycat.asm"><CODE>MethodVisitor</CODE></A> instance (or <tt>null</tt>) each time it is called, i.e., it should not return a previously returned visitor. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])">visitMethod</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>access</CODE> - the method's access flags (see <A HREF="../../../com/sleepycat/asm/Opcodes.html" title="interface in com.sleepycat.asm"><CODE>Opcodes</CODE></A>). This parameter also indicates if the method is synthetic and/or deprecated.<DD><CODE>name</CODE> - the method's name.<DD><CODE>desc</CODE> - the method's descriptor (see <A HREF="../../../com/sleepycat/asm/Type.html" title="class in com.sleepycat.asm"><CODE>Type</CODE></A>).<DD><CODE>signature</CODE> - the method's signature. May be <tt>null</tt> if the method parameters, return type and exceptions do not use generic types.<DD><CODE>exceptions</CODE> - the internal names of the method's exception classes (see <A HREF="../../../com/sleepycat/asm/Type.html#getInternalName()"><CODE>getInternalName</CODE></A>). May be <tt>null</tt>. <DT><B>Returns:</B><DD>an object to visit the byte code of the method, or <tt>null</tt> if this class visitor is not interested in visiting the code of this method.</DL> </DD> </DL> <HR> <A NAME="visitEnd()"><!-- --></A><H3> visitEnd</H3> <PRE> public void <B>visitEnd</B>()</PRE> <DL> <DD><B>Description copied from interface: <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitEnd()">ClassVisitor</A></CODE></B></DD> <DD>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. <P> <DD><DL> <DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html#visitEnd()">visitEnd</A></CODE> in interface <CODE><A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm">ClassVisitor</A></CODE></DL> </DD> <DD><DL> </DL> </DD> </DL> <HR> <A NAME="toByteArray()"><!-- --></A><H3> toByteArray</H3> <PRE> public byte[] <B>toByteArray</B>()</PRE> <DL> <DD>Returns the bytecode of the class that was build with this class writer. <P> <DD><DL> </DL> </DD> <DD><DL> <DT><B>Returns:</B><DD>the bytecode of the class that was build with this class writer.</DL> </DD> </DL> <HR> <A NAME="newConst(java.lang.Object)"><!-- --></A><H3> newConst</H3> <PRE> public int <B>newConst</B>(java.lang.Object cst)</PRE> <DL> <DD>Adds a number or string constant to the constant pool of the class being build. Does nothing if the constant pool already contains a similar item. <i>This method is intended for <A HREF="../../../com/sleepycat/asm/Attribute.html" title="class in com.sleepycat.asm"><CODE>Attribute</CODE></A> sub classes, and is normally not needed by class generators or adapters.</i> <P> <DD><DL> </DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>cst</CODE> - the value of the constant to be added to the constant pool. This parameter must be an <CODE>Integer</CODE>, a <CODE>Float</CODE>, a <CODE>Long</CODE>, a <CODE>Double</CODE> or a <CODE>String</CODE>. <DT><B>Returns:</B><DD>the index of a new or already existing constant item with the given value.</DL> </DD> </DL> <HR> <A NAME="newUTF8(java.lang.String)"><!-- --></A><H3> newUTF8</H3> <PRE> public int <B>newUTF8</B>(java.lang.String value)</PRE> <DL> <DD>Adds an UTF8 string to the constant pool of the class being build. Does nothing if the constant pool already contains a similar item. <i>This method is intended for <A HREF="../../../com/sleepycat/asm/Attribute.html" title="class in com.sleepycat.asm"><CODE>Attribute</CODE></A> sub classes, and is normally not needed by class generators or adapters.</i> <P> <DD><DL> </DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>value</CODE> - the String value. <DT><B>Returns:</B><DD>the index of a new or already existing UTF8 item.</DL> </DD> </DL> <HR> <A NAME="newClass(java.lang.String)"><!-- --></A><H3> newClass</H3> <PRE> public int <B>newClass</B>(java.lang.String value)</PRE> <DL> <DD>Adds a class reference to the constant pool of the class being build. Does nothing if the constant pool already contains a similar item. <i>This method is intended for <A HREF="../../../com/sleepycat/asm/Attribute.html" title="class in com.sleepycat.asm"><CODE>Attribute</CODE></A> sub classes, and is normally not needed by class generators or adapters.</i> <P> <DD><DL> </DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>value</CODE> - the internal name of the class. <DT><B>Returns:</B><DD>the index of a new or already existing class reference item.</DL> </DD> </DL> <HR> <A NAME="newField(java.lang.String, java.lang.String, java.lang.String)"><!-- --></A><H3> newField</H3> <PRE> public int <B>newField</B>(java.lang.String owner, java.lang.String name, java.lang.String desc)</PRE> <DL> <DD>Adds a field reference to the constant pool of the class being build. Does nothing if the constant pool already contains a similar item. <i>This method is intended for <A HREF="../../../com/sleepycat/asm/Attribute.html" title="class in com.sleepycat.asm"><CODE>Attribute</CODE></A> sub classes, and is normally not needed by class generators or adapters.</i> <P> <DD><DL> </DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>owner</CODE> - the internal name of the field's owner class.<DD><CODE>name</CODE> - the field's name.<DD><CODE>desc</CODE> - the field's descriptor. <DT><B>Returns:</B><DD>the index of a new or already existing field reference item.</DL> </DD> </DL> <HR> <A NAME="newMethod(java.lang.String, java.lang.String, java.lang.String, boolean)"><!-- --></A><H3> newMethod</H3> <PRE> public int <B>newMethod</B>(java.lang.String owner, java.lang.String name, java.lang.String desc, boolean itf)</PRE> <DL> <DD>Adds a method reference to the constant pool of the class being build. Does nothing if the constant pool already contains a similar item. <i>This method is intended for <A HREF="../../../com/sleepycat/asm/Attribute.html" title="class in com.sleepycat.asm"><CODE>Attribute</CODE></A> sub classes, and is normally not needed by class generators or adapters.</i> <P> <DD><DL> </DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>owner</CODE> - the internal name of the method's owner class.<DD><CODE>name</CODE> - the method's name.<DD><CODE>desc</CODE> - the method's descriptor.<DD><CODE>itf</CODE> - <tt>true</tt> if <tt>owner</tt> is an interface. <DT><B>Returns:</B><DD>the index of a new or already existing method reference item.</DL> </DD> </DL> <HR> <A NAME="newNameType(java.lang.String, java.lang.String)"><!-- --></A><H3> newNameType</H3> <PRE> public int <B>newNameType</B>(java.lang.String name, java.lang.String desc)</PRE> <DL> <DD>Adds a name and type to the constant pool of the class being build. Does nothing if the constant pool already contains a similar item. <i>This method is intended for <A HREF="../../../com/sleepycat/asm/Attribute.html" title="class in com.sleepycat.asm"><CODE>Attribute</CODE></A> sub classes, and is normally not needed by class generators or adapters.</i> <P> <DD><DL> </DL> </DD> <DD><DL> <DT><B>Parameters:</B><DD><CODE>name</CODE> - a name.<DD><CODE>desc</CODE> - a type descriptor. <DT><B>Returns:</B><DD>the index of a new or already existing name and type item.</DL> </DD> </DL> <!-- ========= END OF CLASS DATA ========= --> <HR> <!-- ======= START OF BOTTOM NAVBAR ====== --> <A NAME="navbar_bottom"><!-- --></A> <A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> <TR> <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A NAME="navbar_bottom_firstrow"><!-- --></A> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> </TR> </TABLE> </TD> <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> </EM> </TD> </TR> <TR> <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../com/sleepycat/asm/ClassVisitor.html" title="interface in com.sleepycat.asm"><B>PREV CLASS</B></A> <A HREF="../../../com/sleepycat/asm/FieldVisitor.html" title="interface in com.sleepycat.asm"><B>NEXT CLASS</B></A></FONT></TD> <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../index.html?com/sleepycat/asm/ClassWriter.html" target="_top"><B>FRAMES</B></A> <A HREF="ClassWriter.html" target="_top"><B>NO FRAMES</B></A> <SCRIPT type="text/javascript"> <!-- if(window==top) { document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>'); } //--> </SCRIPT> <NOSCRIPT> <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A> </NOSCRIPT> </FONT></TD> </TR> <TR> <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD> <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD> </TR> </TABLE> <A NAME="skip-navbar_bottom"></A> <!-- ======== END OF BOTTOM NAVBAR ======= --> <HR> </BODY> </HTML>