KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jas > InnerClassSpecAttr


1 /**
2  * InnerClassSpec attributes are embedded into class files
3  * and used for further ???
4  * @author $Author: Jennifer Lhotak$
5  * @version $Revision: 1.1 $
6  */

7
8 package jas;
9
10 import java.io.*;
11 import java.util.*;
12
13 public class InnerClassSpecAttr {
14     
15     String JavaDoc inner_class_name;
16     String JavaDoc outer_class_name;
17     String JavaDoc inner_name;
18     short access;
19
20     void resolve(ClassEnv e){
21         e.addCPItem(new ClassCP(inner_class_name));
22         if (!outer_class_name.equals("null")){
23             e.addCPItem(new ClassCP(outer_class_name));
24         }
25         if (!inner_name.equals("null")){
26             e.addCPItem(new AsciiCP(inner_name));
27         }
28     }
29
30     /**
31     * Note: An inner class attr is associated with a <em>class</em>, so you
32     * need to create a new InnerClassAttr for each class you create
33     */

34     public InnerClassSpecAttr(String JavaDoc a, String JavaDoc b, String JavaDoc c, short d) { //
35
inner_class_name = a;
36         outer_class_name = b;
37         inner_name = c;
38         access = d;
39     }
40
41     int size(){
42         return 8;
43     }
44
45
46     void write(ClassEnv e, DataOutputStream out)
47         throws IOException, jasError
48         {
49         
50             out.writeShort(e.getCPIndex(new ClassCP(inner_class_name)));
51             if (outer_class_name.equals("null")){
52                 out.writeShort(0);
53             }
54             else {
55                 out.writeShort(e.getCPIndex(new ClassCP(outer_class_name)));
56             }
57             if (inner_name.equals("null")){
58                 out.writeShort(0);
59             }
60             else {
61                 out.writeShort(e.getCPIndex(new AsciiCP(inner_name)));
62             }
63             out.writeShort(access);
64             /*out.writeShort(e.getCPIndex(attr));
65     out.writeInt(2 + 4*(pc.size()));
66     out.writeShort(pc.size());
67     for (Enumeration en = pc.elements(), ien = line.elements();
68      en.hasMoreElements();)
69       {
70     Label l = (Label)(en.nextElement());
71     Integer i = (Integer)(ien.nextElement());
72     l.writeOffset(ce, null, out);
73     out.writeShort((int) i.intValue());*/

74     }
75 }
76
Popular Tags