pool = cp;
}
+ protected void extendToString(StringBuffer buffer) {
+ buffer.append(" pool=");
+ buffer.append(pool);
+ }
+
public ClassPool getClassPool() {
return pool;
}
methodInfo = minfo;
}
+ protected void extendToString(StringBuffer buffer) {
+ buffer.append(' ');
+ buffer.append(getName());
+ buffer.append(' ');
+ buffer.append(methodInfo.getDescriptor());
+ }
+
/**
* Returns the MethodInfo representing this member in the
* class file.
qualifiedName = name;
}
+ /**
+ * Converts the object to a string.
+ */
+ public String toString() {
+ StringBuffer buf = new StringBuffer(getClass().getName());
+ buf.append("@");
+ buf.append(Integer.toHexString(hashCode()));
+ buf.append("[");
+ buf.append(Modifier.toString(getModifiers()));
+ buf.append(' ');
+ buf.append(getName());
+ extendToString(buf);
+ buf.append("]");
+ return buf.toString();
+ }
+
+ /**
+ * Implemented in subclasses to add to the {@link #toString()} result.
+ * Subclasses should put a space before each token added to the buffer.
+ */
+ abstract protected void extendToString(StringBuffer buffer);
+
/**
* Returns a <code>ClassPool</code> for this class.
*/
qualifiedName = classfile.getName();
}
+ protected void extendToString(StringBuffer buffer) {
+ if (wasChanged)
+ buffer.append(" changed");
+
+ if (wasFrozen)
+ buffer.append(" frozen");
+
+ CtField field = getFieldsCache();
+ buffer.append(" fields=");
+ while (field != null) {
+ buffer.append(field);
+ buffer.append(", ");
+ field = field.next;
+ }
+
+ CtConstructor c = getConstructorsCache();
+ buffer.append(" constructors=");
+ while (c != null) {
+ buffer.append(c);
+ buffer.append(", ");
+ c = c.next;
+ }
+
+ CtMethod m = getMethodsCache();
+ buffer.append(" methods=");
+ while (m != null) {
+ buffer.append(m);
+ buffer.append(", ");
+ m = m.next;
+ }
+ }
+
protected void eraseCache() {
fieldsCache = null;
constructorsCache = null;
next = null;
}
+ protected void extendToString(StringBuffer buffer) {
+ buffer.append(' ');
+ buffer.append(getName());
+ buffer.append(' ');
+ buffer.append(fieldInfo.getDescriptor());
+ }
+
/* Javac.CtFieldWithInit overrides.
*/
protected ASTree getInitAST() { return null; }
protected CtMember(CtClass clazz) { declaringClass = clazz; }
+ public String toString() {
+ StringBuffer buffer = new StringBuffer(getClass().getName());
+ buffer.append("@");
+ buffer.append(Integer.toHexString(hashCode()));
+ buffer.append("[");
+ buffer.append(Modifier.toString(getModifiers()));
+ extendToString(buffer);
+ buffer.append("]");
+ return buffer.toString();
+ }
+
+ /**
+ * Invoked by {@link #toString()} to add to the buffer and provide the
+ * complete value. Subclasses should invoke this method, adding a
+ * space before each token. The modifiers for the member are
+ * provided first; subclasses should provide additional data such
+ * as return type, field or method name, etc.
+ */
+ protected abstract void extendToString(StringBuffer buffer);
+
/**
* Returns the class that declares this member.
*/
hasConstructor = isInterface;
}
+ protected void extendToString(StringBuffer buffer) {
+ if (hasConstructor)
+ buffer.append(" hasConstructor");
+
+ super.extendToString(buffer);
+ }
+
public void addConstructor(CtConstructor c)
throws CannotCompileException
{
dataSize = size;
}
+ protected void extendToString(StringBuffer buffer) {}
+
/**
* Returns <code>true</code> if this object represents a primitive
* Java type: boolean, byte, char, short, int, long, float, double,