blob: aec72c13f1808699b7882dbdd0d730a3570927f2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2008 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.ast.Javadoc;
/**
* Represents a full Javadoc comment for the {@link FormatterCommentParser}.
* <p>
* It might have one or several blocks ( see {@link FormatJavadocBlock}). The
* javadoc comment might starts with a <b>description</b> which means that its
* first block has no tag.
* </p>
*/
public class FormatJavadoc extends Javadoc {
FormatJavadocBlock[] blocks;
int textStart, textEnd;
int lineStart, lineEnd;
public FormatJavadoc(int sourceStart, int sourceEnd, int length) {
super(sourceStart, sourceEnd);
if (length > 0) {
this.blocks = new FormatJavadocBlock[length];
}
}
/**
* Return the first block of the javadoc or <code>null</code> if has no block
* at all.
*
* @return a {@link FormatJavadocBlock} or <code>null</code>.
*/
public FormatJavadocBlock getFirstBlock() {
if (this.blocks != null) {
return this.blocks[0];
}
return null;
}
/**
* Returns whether it has several lines or not.
*
* @return <code>true</code> if the javadoc comment has several lines
* <code>false</code> otherwise (e.g. header and footer are on the same
* line).
*/
public boolean isMultiLine() {
return this.lineStart < this.lineEnd;
}
public String toDebugString(char[] source) {
if (this.blocks == null) {
return "No block in current Javadoc comment"; //$NON-NLS-1$
}
StringBuffer buffer = new StringBuffer();
int length = this.blocks.length;
for (int i=0; i<length; i++) {
this.blocks[i].toStringDebug(buffer, source);
buffer.append('\n');
}
return buffer.toString();
}
}