From 97b5c5bb0f9446f6c929ca1df85ff5b546e48045 Mon Sep 17 00:00:00 2001 From: hoenicke Date: Sun, 24 Nov 2002 15:51:56 +0000 Subject: [PATCH] deprecated flags for classinfo git-svn-id: https://svn.code.sf.net/p/jode/code/branches/branch_1_1@1374 379699f6-c40d-0410-875b-85095c16579e --- jode/ChangeLog | 11 +++++++++++ jode/jode/bytecode/ClassInfo.java.in | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/jode/ChangeLog b/jode/ChangeLog index 2e2c4db..00953c1 100644 --- a/jode/ChangeLog +++ b/jode/ChangeLog @@ -1,3 +1,14 @@ +2002-11-24 Jochen Hoenicke + + * jode/bytecode/ClassInfo.java.in (deprecatedFlag): Added flag + for deprecated classes. Stuart Ballard noticed that this was + missing. + (readAttribute): Read deprecated attribute. + (prepareWriting): Prepare deprecated attribute. + (writeKnownAttributes): Write deprecated attribute. + (isDeprected): New function. + (setDeprecated): Likewise. + 2002-06-11 Jochen Hoenicke * configure.in: Set version number to 1.1.2. diff --git a/jode/jode/bytecode/ClassInfo.java.in b/jode/jode/bytecode/ClassInfo.java.in index d3e0ebd..09ec98d 100644 --- a/jode/jode/bytecode/ClassInfo.java.in +++ b/jode/jode/bytecode/ClassInfo.java.in @@ -82,6 +82,7 @@ public class ClassInfo extends BinaryInfo { private boolean modified = false; private int modifiers = -1; + private boolean deprecatedFlag; private String name; private ClassInfo superclass; private ClassInfo[] interfaces; @@ -272,6 +273,11 @@ public class ClassInfo extends BinaryInfo { extraClasses[--extraCount] = ici; } } + } else if (name.equals("Deprecated")) { + deprecatedFlag = true; + if (length != 0) + throw new ClassFormatException + ("Deprecated attribute has wrong length"); } else super.readAttribute(name, length, cp, input, howMuch); } @@ -406,6 +412,8 @@ public class ClassInfo extends BinaryInfo { gcp.putUTF8(extraClasses[i].name); } } + if (deprecatedFlag) + gcp.putUTF8("Deprecated"); prepareAttributes(gcp); } @@ -461,6 +469,10 @@ public class ClassInfo extends BinaryInfo { output.writeShort(extraClasses[i].modifiers); } } + if (deprecatedFlag) { + output.writeShort(gcp.putUTF8("Deprecated")); + output.writeInt(0); + } } public void write(DataOutputStream out) throws IOException { @@ -749,6 +761,10 @@ public class ClassInfo extends BinaryInfo { return Modifier.isInterface(getModifiers()); } + public boolean isDeprecated() { + return deprecatedFlag; + } + public FieldInfo findField(String name, String typeSig) { if ((status & FIELDS) == 0) loadInfo(FIELDS); @@ -823,6 +839,10 @@ public class ClassInfo extends BinaryInfo { modified = true; } + public void setDeprecated(boolean flag) { + deprecatedFlag = flag; + } + public void setMethods(MethodInfo[] mi) { methods = mi; modified = true;