/******************************************************************************* | |
* Copyright (c) 2001 International Business Machines Corp. and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Common Public License v0.5 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/cpl-v05.html | |
* | |
* Contributors: | |
* IBM Corporation - initial API and implementation | |
******************************************************************************/ | |
package org.eclipse.jdt.core.dom; | |
/** | |
* Abstract base class of all AST nodes that represent body declarations | |
* that may appear in the body of a class or interface declaration. | |
* <p> | |
* <pre> | |
* ClassBodyDeclaration: | |
* ClassDeclaration | |
* InterfaceDeclaration | |
* MethodDeclaration | |
* ConstructorDeclaration | |
* FieldDeclaration | |
* Initializer | |
* InterfaceBodyDeclaration: | |
* ClassDeclaration | |
* InterfaceDeclaration | |
* MethodDeclaration | |
* FieldDeclaration | |
* </pre> | |
* </p> | |
* <p> | |
* Most types of body declarations can carry a Javadoc comment; Initializer | |
* is the only ones that does not. The source range for body declarations | |
* always includes the Javadoc comment if present. | |
* </p> | |
* | |
* @since 2.0 | |
*/ | |
public abstract class BodyDeclaration extends ASTNode { | |
/** | |
* The Javadoc comment, or <code>null</code> if none. | |
* Defaults to none. | |
*/ | |
private Javadoc optionalJavadoc = null; | |
/** | |
* Creates a new AST node for a body declaration node owned by the | |
* given AST. | |
* <p> | |
* N.B. This constructor is package-private. | |
* </p> | |
* | |
* @param ast the AST that is to own this node | |
*/ | |
BodyDeclaration(AST ast) { | |
super(ast); | |
} | |
/** | |
* Returns the Javadoc comment node. | |
* | |
* @return the javadoc comment node, or <code>null</code> if none | |
*/ | |
public Javadoc getJavadoc() { | |
return optionalJavadoc; | |
} | |
/** | |
* Sets or clears the Javadoc comment node. | |
* | |
* @param javadoc the javadoc comment node, or <code>null</code> if none | |
* @exception IllegalArgumentException if the Java comment string is invalid | |
*/ | |
public void setJavadoc(Javadoc javadoc) { | |
replaceChild(this.optionalJavadoc, javadoc, false); | |
this.optionalJavadoc = javadoc; | |
} | |
/* (omit javadoc for this method) | |
* Method declared on ASTNode. | |
*/ | |
int memSize() { | |
return BASE_NODE_SIZE + 1 * 4; | |
} | |
} | |