00001 package edu.ksu.cis.bandera.prog;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 import java.util.Hashtable;
00037 import java.util.Vector;
00038 import java.util.Enumeration;
00039 import java.io.*;
00040
00041 import ca.mcgill.sable.soot.*;
00042 import ca.mcgill.sable.soot.jimple.*;
00043 import ca.mcgill.sable.util.*;
00044
00045 import edu.ksu.cis.bandera.jjjc.*;
00046
00047 class IITreeNode
00048 {
00049 private SootClass element;
00050 private int depth;
00051 private int maxNodes;
00052 private IITreeNode[] children;
00053 private int childrenCount;
00054
00055 public IITreeNode(SootClass sc, int num)
00056 {
00057 depth = 0;
00058 element = sc;
00059 maxNodes = num;
00060 children = new IITreeNode[maxNodes];
00061 childrenCount = 0;
00062 }
00063 public void addChild(SootClass sc)
00064 {
00065 IITreeNode child = new IITreeNode(sc, maxNodes);
00066 children[childrenCount] = child;
00067 childrenCount++;
00068 }
00069 public void addChild(IITreeNode child)
00070 {
00071 children[childrenCount] = child;
00072 childrenCount++;
00073 }
00074 public IITreeNode[] getChildren()
00075 {
00076 return children;
00077 }
00078 public int getChildrenCount()
00079 {
00080 return childrenCount;
00081 }
00082 public int getDepth()
00083 {
00084 return depth;
00085 }
00086 public SootClass getElement()
00087 {
00088 return element;
00089 }
00090 public int number(int d)
00091 {
00092 int tmp;
00093 int maxd = d;
00094
00095 depth = d;
00096 for (int i=0; i<childrenCount; i++) {
00097 tmp = children[i].number(d+1);
00098 if (tmp > maxd) maxd = tmp;
00099 }
00100 return maxd;
00101 }
00102 public void print()
00103 {
00104 System.out.println();
00105 System.out.println("Children of "+this.element.getName()+":");
00106 for(int i=0; i<childrenCount; i++)
00107 {
00108 System.out.print(((children[i]).element).getName()+"\t");
00109
00110 }
00111 System.out.println();
00112 for(int i=0; i<childrenCount; i++)
00113 (children[i]).print();
00114 }
00115 }