jas
Class ClassEnv

java.lang.Object
  extended byjas.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_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, 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, 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_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_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_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, 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_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_ldc_w, opc_ldc2_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, opc_xxxunusedxxx, opcLengths, opcNames, T_BOOLEAN, T_BYTE, T_CHAR, T_CLASS, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT
 
Constructor Summary
ClassEnv()
           
 
Method Summary
 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 addInterface(CP ifc)
          Add this CP to the list of interfaces supposedly implemented by this class.
 void addInterface(CP[] ilist)
          Add this 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 addMethod(short acc, String name, String sig, CodeAttr code, ExceptAttr ex)
          Here is where code gets added to a class.
 void setClass(CP name)
          Define this class to have this name.
 void setClassAccess(short access)
          Set the class access for this class.
 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 write(DataOutputStream out)
          Write the contents of the class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, 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

addMethod

public void addMethod(short acc,
                      String name,
                      String sig,
                      CodeAttr code,
                      ExceptAttr ex)
Here is where code gets added to a class.

Parameters:
acc - method_access permissions, expressed with some combination of the values defined in RuntimeConstants
name - Name of the method
sig - Signature for the method
code - Actual code for the method
ex - Any exception attribute to be associated with method

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

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)


addMethod

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



Copyright © 2004 Jonathan Meyer, USA All rights reserved.