diff options
Diffstat (limited to 'src/proguard/classfile/LibraryClass.java')
-rw-r--r-- | src/proguard/classfile/LibraryClass.java | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/src/proguard/classfile/LibraryClass.java b/src/proguard/classfile/LibraryClass.java index 0a27593..625d088 100644 --- a/src/proguard/classfile/LibraryClass.java +++ b/src/proguard/classfile/LibraryClass.java @@ -2,7 +2,7 @@ * ProGuard -- shrinking, optimization, obfuscation, and preverification * of Java bytecode. * - * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) + * Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free @@ -137,6 +137,17 @@ public class LibraryClass implements Clazz } + public String getRefName(int constantIndex) + { + throw new UnsupportedOperationException("Library class ["+thisClassName+"] doesn't store constant pool"); + } + + public String getRefType(int constantIndex) + { + throw new UnsupportedOperationException("Library class ["+thisClassName+"] doesn't store constant pool"); + } + + public void addSubClass(Clazz clazz) { if (subClasses == null) @@ -179,6 +190,18 @@ public class LibraryClass implements Clazz } + public boolean extends_(String className) + { + if (getName().equals(className)) + { + return true; + } + + return superClass != null && + superClass.extends_(className); + } + + public boolean extendsOrImplements(Clazz clazz) { if (this.equals(clazz)) @@ -209,6 +232,36 @@ public class LibraryClass implements Clazz } + public boolean extendsOrImplements(String className) + { + if (getName().equals(className)) + { + return true; + } + + if (superClass != null && + superClass.extendsOrImplements(className)) + { + return true; + } + + if (interfaceClasses != null) + { + for (int index = 0; index < interfaceClasses.length; index++) + { + Clazz interfaceClass = interfaceClasses[index]; + if (interfaceClass != null && + interfaceClass.extendsOrImplements(className)) + { + return true; + } + } + } + + return false; + } + + public Field findField(String name, String descriptor) { for (int index = 0; index < fields.length; index++) @@ -467,6 +520,12 @@ public class LibraryClass implements Clazz } + public void attributeAccept(String name, AttributeVisitor attributeVisitor) + { + throw new UnsupportedOperationException("Library class ["+thisClassName+"] doesn't store attributes"); + } + + // Implementations for VisitorAccepter. public Object getVisitorInfo() |