All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.jdt.core.dom.AbstractTextElement Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * Copyright (c) 2022 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

package org.eclipse.jdt.core.dom;

import org.eclipse.jdt.internal.compiler.util.Util;

/**
 * AST node for a text element within a doc comment.
 * 
 * AbstractTextElement:
 *     Sequence of characters not including a close comment delimiter */
 * 
* * @see TextElement * @see JavaDocTextElement * @since 3.31 */ @SuppressWarnings("rawtypes") public abstract class AbstractTextElement extends ASTNode implements IDocElement { /** * The "text" structural property of this node type (type: {@link String}). */ public static final SimplePropertyDescriptor internalTextPropertyFactory(Class nodeClass) { return new SimplePropertyDescriptor(nodeClass, "text", String.class, MANDATORY); //$NON-NLS-1$ } /** * The text element; defaults to the empty string. */ String text = Util.EMPTY_STRING; /** * Creates a new AST node for a text element owned by the given AST. *

* N.B. This constructor is package-private; all subclasses must be * declared in the same package; clients are unable to declare * additional subclasses. *

* * @param ast the AST that is to own this node */ AbstractTextElement(AST ast) { super(ast); } /** * Returns structural property descriptor for the "text" property * of this node (element type: {@link String}). * * @return the property descriptor */ abstract SimplePropertyDescriptor internalTextPropertyFactory(); /** * Returns structural property descriptor for the "text" property * of this node (child type: {@link String}). * * @return the property descriptor */ public final SimplePropertyDescriptor getTextNameProperty() { return internalTextPropertyFactory(); } @Override final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) { if (property == internalTextPropertyFactory()) { if (get) { return getText(); } else { setText((String) value); return null; } } // allow default implementation to flag the error return super.internalGetSetObjectProperty(property, get, value); } /** * Returns this node's tag name, or null if none. * For top level doc tags such as parameter tags, the tag name * includes the "@" character ("@param"). * For inline doc tags such as link tags, the tag name * includes the "@" character ("@link"). * The tag name may also be null; this is used to * represent the material at the start of a doc comment preceding * the first explicit tag. * * @return the tag name, or null if none */ public String getText() { return this.text; } /** * Sets the text of this node to the given value. *

* The text element typically includes leading and trailing * whitespace that separates it from the immediately preceding * or following elements. *

* * @param text the text of this node * @exception IllegalArgumentException if the text is null */ public void setText(String text) { if (text == null) { throw new IllegalArgumentException(); } } /** * Returns whether this tag element is nested within another * tag element. Nested tag elements appears enclosed in * "{" and "}"; certain doc tags, including "@link" and * "@linkplain" are only meaningful as nested tags. * Top-level (i.e., non-nested) doc tags begin on a new line; * certain doc tags, including "@param" and * "@see" are only meaningful as top-level tags. *

* This convenience methods checks to see whether the parent * of this node is of type {@link org.eclipse.jdt.core.dom.AbstractTextElement}. *

* * @return true if this node is a nested tag element, * and false if this node is either parented by a doc comment node * ({@link Javadoc}), or is unparented */ public boolean isNested() { return (getParent() instanceof AbstractTextElement); } @Override int memSize() { int size = BASE_NODE_SIZE + 2 * 3 + stringSize(this.text); return size; } @Override int treeSize() { return memSize(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy