001 package AST; 002 003 import java.util.HashSet; 004 import java.io.File; 005 import java.util.*; 006 import beaver.*; 007 import java.util.ArrayList; 008 import java.util.zip.*; 009 import java.io.*; 010 import java.io.FileNotFoundException; 011 import java.util.Collection; 012 /** 013 * @ast class 014 * 015 */ 016 public class CONSTANT_Class_Info extends CONSTANT_Info { 017 018 public int name_index; 019 020 021 022 public CONSTANT_Class_Info(BytecodeParser parser) { 023 super(parser); 024 name_index = p.u2(); 025 } 026 027 028 029 public String toString() { 030 return "ClassInfo: " + name(); 031 } 032 033 034 035 public String name() { 036 String name = ((CONSTANT_Utf8_Info) this.p.constantPool[name_index]).string(); 037 //name = name.replaceAll("\\/", "."); 038 name = name.replace('/', '.'); 039 return name; 040 } 041 042 043 044 public String simpleName() { 045 String name = name(); 046 //name = name.replace('$', '.'); 047 int pos = name.lastIndexOf('.'); 048 return name.substring(pos + 1, name.length()); 049 } 050 051 052 053 public String packageDecl() { 054 String name = name(); 055 //name = name.replace('$', '.'); 056 int pos = name.lastIndexOf('.'); 057 if(pos == -1) 058 return ""; 059 return name.substring(0, pos); 060 } 061 062 063 064 public Access access() { 065 String name = name(); 066 int pos = name.lastIndexOf('.'); 067 String typeName = name.substring(pos + 1, name.length()); 068 String packageName = pos == -1 ? "" : name.substring(0, pos); 069 if(typeName.indexOf('$') != -1) 070 return new BytecodeTypeAccess(packageName, typeName); 071 else 072 return new TypeAccess(packageName, typeName); 073 } 074 075 076 }