blob: 6f7f92ff5da8ff7616abc357da0cf30faa0b2ac0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.formatter;
import org.eclipse.jdt.internal.compiler.parser.JavadocTagConstants;
/**
* Abstract class for all {@link FormatJavadoc} nodes.
* <p>
* The basic information for these nodes are the start and end positions in the
* source.
* </p>
*/
public abstract class FormatJavadocNode implements JavadocTagConstants {
// default size used for array
final static int DEFAULT_ARRAY_SIZE = 10;
final static int INCREMENT_ARRAY_SIZE = 10;
protected int sourceStart, sourceEnd;
protected int lineStart;
protected int linesBefore = 0;
public FormatJavadocNode(int start, int end, int line) {
this.sourceStart = start;
this.sourceEnd = end;
this.lineStart = line;
}
abstract void clean();
FormatJavadocNode getLastNode() {
return null;
}
public int getLength() {
return this.sourceEnd - this.sourceStart + 1;
}
/**
* Returns whether the node is a text (see {@link FormatJavadocText} or not.
* In case not, that means that the node is an block (see
* {@link FormatJavadocBlock}).
*
* @return <code>true</code> if the node is a text <code>false</code>
* otherwise.
*/
public boolean isText() {
return false;
}
/**
* Returns whether the node is immutable or not. If <code>true</code>, then
* the formatter will leave it contents unchanged.
*
* @return <code>true</code> if the node is immutable, <code>false</code>
* otherwise.
*/
public boolean isImmutable() {
return false;
}
public String toString() {
StringBuffer buffer = new StringBuffer();
toString(buffer);
return buffer.toString();
}
protected void toString(StringBuffer buffer) {
buffer.append(": "); //$NON-NLS-1$
buffer.append(this.sourceStart);
buffer.append(" -> "); //$NON-NLS-1$
buffer.append(this.sourceEnd);
}
public String toStringDebug(char[] source) {
StringBuffer buffer = new StringBuffer();
toStringDebug(buffer, source);
return buffer.toString();
}
public void toStringDebug(StringBuffer buffer, char[] source) {
buffer.append(source, this.sourceStart, this.sourceEnd-this.sourceStart+1);
buffer.append(' ');
}
void setHeaderLine(int javadocLineStart) {
// do nothing
}
}