jas
Class ClassEnv

java.lang.Object
  extended by jas.ClassEnv
All Implemented Interfaces:
RuntimeConstants

public class ClassEnv
extends Object
implements RuntimeConstants

This is the place where all information about the class to be created resides.

Version:
$Revision: 1.1 $
Author:
$Author: jonmeyerny $

Field Summary
 
Fields inherited from interface jas.RuntimeConstants
ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, CONSTANT_CLASS, CONSTANT_DOUBLE, CONSTANT_FIELD, CONSTANT_FLOAT, CONSTANT_INTEGER, CONSTANT_INTERFACEMETHOD, CONSTANT_LONG, CONSTANT_METHOD, CONSTANT_NAMEANDTYPE, CONSTANT_STRING, CONSTANT_UNICODE, CONSTANT_UTF8, JAVA_MAGIC, JAVA_MINOR_VERSION, JAVA_VERSION, opcLengths, opcNames, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_breakpoint, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dead, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_dup_x1, opc_dup_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_int2byte, opc_int2char, opc_int2short, opc_invokedynamic, opc_invokeinterface, opc_invokenonvirtual, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_label, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc2_w, opc_ldc_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_try, opc_wide, T_BOOLEAN, T_BYTE, T_CHAR, T_CLASS, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT
 
Constructor Summary
ClassEnv()
           
 
Method Summary
 Annotation addAnnotation(boolean visible, String clsname)
           
 void addCPItem(CP cp)
          This is the method to add CPE items to a class.
 void addField(Var v)
           
 void addGenericAttr(GenericAttr g)
          Add a generic attribute to the class file.
 void addInnerClass(short iacc, String name, String inner, String outer)
           
 void addInterface(CP[] ilist)
          Add this to the list of interfaces supposedly implemented by this class.
 void addInterface(CP ifc)
          Add this CP to the list of interfaces supposedly implemented by this class.
 void addMethod(Method m)
          This allows more control over generating CP's for methods if you feel so inclined.
 void endHeader()
           
 void setClassAccess(short access)
          Set the class access for this class.
 void setClass(CP name)
          Define this class to have this name.
 void setDeprecated(DeprecatedAttr depr)
           
 void setEnclosingMethod(String cls, String mtd, String dsc)
          Add an attribute specifying the enclosing method of this class
 void setSignature(String sig)
          Add an attribute specifying the signature of this class
 void setSourceDebugExtension(String debug)
          Add an attribute specifying extended debug information
 void setSource(SourceAttr source)
          Add an attribute specifying the name of the source file for the class
 void setSource(String source)
          Add an attribute specifying the name of the source file for the clas.
 void setSuperClass(CP name)
          Define this class to have this superclass
 void setVersion(short version_high, short version_low)
          Change the bytecode version of this class The version will be version_high.version_low
 void write(DataOutputStream out)
          Write the contents of the class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notifyAll, notify, toString, wait, wait, wait
 

Constructor Detail

ClassEnv

public ClassEnv()
Method Detail

setClass

public void setClass(CP name)
Define this class to have this name.

Parameters:
name - CPE representing name for class. (This is usually a ClassCP)

setSuperClass

public void setSuperClass(CP name)
Define this class to have this superclass

Parameters:
name - CPE representing name for class. (This is usually a ClassCP)

setClassAccess

public void setClassAccess(short access)
Set the class access for this class. Constants understood by this are present along with the java Beta distribution.

Parameters:
access - number representing access permissions for the entire class.
See Also:
RuntimeConstants

addInterface

public void addInterface(CP ifc)
Add this CP to the list of interfaces supposedly implemented by this class. Note that the CP ought to be a ClassCP to make sense to the VM.


addInterface

public void addInterface(CP[] ilist)
Add this to the list of interfaces supposedly implemented by this class. Note that each CP is usually a ClassCP.

Parameters:
ilist - An array of CP items representing the interfaces implemented by this class.

addField

public void addField(Var v)

write

public void write(DataOutputStream out)
           throws IOException,
                  jasError
Write the contents of the class.

Parameters:
out - DataOutputStream on which the contents are written.
Throws:
IOException
jasError

addCPItem

public void addCPItem(CP cp)
This is the method to add CPE items to a class. CPE items for a class are "uniquefied". Ie, if you add a CPE items whose contents already exist in the class, only one entry is finally written out when the class is written.

Parameters:
cp - Item to be added to the class

setSource

public void setSource(SourceAttr source)
Add an attribute specifying the name of the source file for the class

Parameters:
source - SourceAttribute specifying the source for the file

setSource

public void setSource(String source)
Add an attribute specifying the name of the source file for the clas.

Parameters:
source - String with the name of the class

setSourceDebugExtension

public void setSourceDebugExtension(String debug)
Add an attribute specifying extended debug information

Parameters:
debug - String the extended debug information

setEnclosingMethod

public void setEnclosingMethod(String cls,
                               String mtd,
                               String dsc)
Add an attribute specifying the enclosing method of this class

Parameters:
cls - String the enclosing class
mtd - String the enclosing method
dsc - String the enclosing method descriptor

setSignature

public void setSignature(String sig)
Add an attribute specifying the signature of this class

Parameters:
sig - String the signature

setDeprecated

public void setDeprecated(DeprecatedAttr depr)

addGenericAttr

public void addGenericAttr(GenericAttr g)
Add a generic attribute to the class file. A generic attribute contains a stream of uninterpreted bytes which is ignored by the VM (as long as its name doesn't conflict with other names for attributes that are understood by the VM)


addInnerClass

public void addInnerClass(short iacc,
                          String name,
                          String inner,
                          String outer)

addAnnotation

public Annotation addAnnotation(boolean visible,
                                String clsname)

endHeader

public void endHeader()

addMethod

public void addMethod(Method m)
This allows more control over generating CP's for methods if you feel so inclined.


setVersion

public void setVersion(short version_high,
                       short version_low)
Change the bytecode version of this class The version will be version_high.version_low

Parameters:
version_high - short
version_low - short


Copyright © 2006 Jonathan Meyer, USA All rights reserved.