| /******************************************************************************* |
| * 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 |
| } |
| |
| } |