| /* | |
| * Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. | |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| * | |
| * This code is free software; you can redistribute it and/or modify it | |
| * under the terms of the GNU General Public License version 2 only, as | |
| * published by the Free Software Foundation. Oracle designates this | |
| * particular file as subject to the "Classpath" exception as provided | |
| * by Oracle in the LICENSE file that accompanied this code. | |
| * | |
| * This code is distributed in the hope that it will be useful, but WITHOUT | |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| * version 2 for more details (a copy is included in the LICENSE file that | |
| * accompanied this code). | |
| * | |
| * You should have received a copy of the GNU General Public License version | |
| * 2 along with this work; if not, write to the Free Software Foundation, | |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| * | |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| * or visit www.oracle.com if you need additional information or have any | |
| * questions. | |
| */ | |
| package com.sun.source.doctree; | |
| /** | |
| * Common interface for all nodes in a documentation syntax tree. | |
| * | |
| * @since 1.8 | |
| */ | |
| public interface DocTree { | |
| /** | |
| * Enumerates all kinds of trees. | |
| */ | |
| enum Kind { | |
| /** | |
| * Used for instances of {@link AttributeTree} | |
| * representing an attribute in an HTML element or tag. | |
| */ | |
| ATTRIBUTE, | |
| /** | |
| * Used for instances of {@link AuthorTree} | |
| * representing an {@code @author} tag. | |
| */ | |
| AUTHOR("author"), | |
| /** | |
| * Used for instances of {@link LiteralTree} | |
| * representing an {@code @code} tag. | |
| */ | |
| CODE("code"), | |
| /** | |
| * Used for instances of {@link CommentTree} | |
| * representing an HTML comment. | |
| */ | |
| COMMENT, | |
| /** | |
| * Used for instances of {@link DeprecatedTree} | |
| * representing an {@code @deprecated} tag. | |
| */ | |
| DEPRECATED("deprecated"), | |
| /** | |
| * Used for instances of {@link DocCommentTree} | |
| * representing a complete doc comment. | |
| */ | |
| DOC_COMMENT, | |
| /** | |
| * Used for instances of {@link DocRootTree} | |
| * representing an {@code @docRoot} tag. | |
| */ | |
| DOC_ROOT("docRoot"), | |
| /** | |
| * Used for instances of {@link DocTypeTree} | |
| * representing an HTML DocType declaration. | |
| * | |
| * @since 10 | |
| */ | |
| DOC_TYPE, | |
| /** | |
| * Used for instances of {@link EndElementTree} | |
| * representing the end of an HTML element. | |
| */ | |
| END_ELEMENT, | |
| /** | |
| * Used for instances of {@link EntityTree} | |
| * representing an HTML entity. | |
| */ | |
| ENTITY, | |
| /** | |
| * Used for instances of {@link ErroneousTree} | |
| * representing some invalid text. | |
| */ | |
| ERRONEOUS, | |
| /** | |
| * Used for instances of {@link EscapeTree} | |
| * representing some escaped documentation text. | |
| * | |
| * @since 21 | |
| */ | |
| ESCAPE, | |
| /** | |
| * Used for instances of {@link ThrowsTree} | |
| * representing an {@code @exception} tag. | |
| */ | |
| EXCEPTION("exception"), | |
| /** | |
| * Used for instances of {@link HiddenTree} | |
| * representing an {@code @hidden} tag. | |
| */ | |
| HIDDEN("hidden"), | |
| /** | |
| * Used for instances of {@link IdentifierTree} | |
| * representing an identifier. | |
| */ | |
| IDENTIFIER, | |
| /** | |
| * Used for instances of {@link IndexTree} | |
| * representing an {@code @index} tag. | |
| * | |
| * @since 9 | |
| */ | |
| INDEX("index"), | |
| /** | |
| * Used for instances of {@link InheritDocTree} | |
| * representing an {@code @inheritDoc} tag. | |
| */ | |
| INHERIT_DOC("inheritDoc"), | |
| /** | |
| * Used for instances of {@link LinkTree} | |
| * representing an {@code @link} tag. | |
| */ | |
| LINK("link"), | |
| /** | |
| * Used for instances of {@link LinkTree} | |
| * representing an {@code @linkplain} tag. | |
| */ | |
| LINK_PLAIN("linkplain"), | |
| /** | |
| * Used for instances of {@link LiteralTree} | |
| * representing an {@code @literal} tag. | |
| */ | |
| LITERAL("literal"), | |
| /** | |
| * Used for instances of {@link RawTextTree} | |
| * representing a fragment of Markdown content. | |
| * | |
| * @since 23 | |
| */ | |
| MARKDOWN, | |
| /** | |
| * Used for instances of {@link ParamTree} | |
| * representing an {@code @param} tag. | |
| */ | |
| PARAM("param"), | |
| /** | |
| * Used for instances of {@link ProvidesTree} | |
| * representing an {@code @provides} tag. | |
| * | |
| * @since 9 | |
| */ | |
| PROVIDES("provides"), | |
| /** | |
| * Used for instances of {@link ReferenceTree} | |
| * representing a reference to an element in the | |
| * Java programming language. | |
| */ | |
| REFERENCE, | |
| /** | |
| * Used for instances of {@link ReturnTree} | |
| * representing an {@code @return} tag. | |
| */ | |
| RETURN("return"), | |
| /** | |
| * Used for instances of {@link SeeTree} | |
| * representing an {@code @see} tag. | |
| */ | |
| SEE("see"), | |
| /** | |
| * Used for instances of {@link SerialTree} | |
| * representing an {@code @serial} tag. | |
| */ | |
| SERIAL("serial"), | |
| /** | |
| * Used for instances of {@link SerialDataTree} | |
| * representing an {@code @serialData} tag. | |
| */ | |
| SERIAL_DATA("serialData"), | |
| /** | |
| * Used for instances of {@link SerialFieldTree} | |
| * representing an {@code @serialField} tag. | |
| */ | |
| SERIAL_FIELD("serialField"), | |
| /** | |
| * Used for instances of {@link SinceTree} | |
| * representing an {@code @since} tag. | |
| */ | |
| SINCE("since"), | |
| /** | |
| * Used for instances of {@link SnippetTree} | |
| * representing an {@code @snippet} tag. | |
| * | |
| * @since 18 | |
| */ | |
| SNIPPET("snippet"), | |
| /** | |
| * Used for instances of {@link SpecTree} | |
| * representing an {@code @spec} tag. | |
| * | |
| * @since 20 | |
| */ | |
| SPEC("spec"), | |
| /** | |
| * Used for instances of {@link StartElementTree} | |
| * representing the start of an HTML element. | |
| */ | |
| START_ELEMENT, | |
| /** | |
| * Used for instances of {@link SystemPropertyTree} | |
| * representing an {@code @systemProperty} tag. | |
| * | |
| * @since 12 | |
| */ | |
| SYSTEM_PROPERTY("systemProperty"), | |
| /** | |
| * Used for instances of {@link SummaryTree} | |
| * representing an {@code @summary} tag. | |
| * | |
| * @since 10 | |
| */ | |
| SUMMARY("summary"), | |
| /** | |
| * Used for instances of {@link TextTree} | |
| * representing some plain documentation text. | |
| */ | |
| TEXT, | |
| /** | |
| * Used for instances of {@link ThrowsTree} | |
| * representing an {@code @throws} tag. | |
| */ | |
| THROWS("throws"), | |
| /** | |
| * Used for instances of {@link UnknownBlockTagTree} | |
| * representing an unknown block tag. | |
| */ | |
| UNKNOWN_BLOCK_TAG, | |
| /** | |
| * Used for instances of {@link UnknownInlineTagTree} | |
| * representing an unknown inline tag. | |
| */ | |
| UNKNOWN_INLINE_TAG, | |
| /** | |
| * Used for instances of {@link UsesTree} | |
| * representing an {@code @uses} tag. | |
| * | |
| * @since 9 | |
| */ | |
| USES("uses"), | |
| /** | |
| * Used for instances of {@link ValueTree} | |
| * representing an {@code @value} tag. | |
| */ | |
| VALUE("value"), | |
| /** | |
| * Used for instances of {@link VersionTree} | |
| * representing an {@code @version} tag. | |
| */ | |
| VERSION("version"), | |
| /** | |
| * An implementation-reserved node. This is not the node | |
| * you are looking for. | |
| */ | |
| OTHER; | |
| /** | |
| * The name of the tag, if any, associated with this kind of node. | |
| */ | |
| public final String tagName; | |
| Kind() { | |
| tagName = null; | |
| } | |
| Kind(String tagName) { | |
| this.tagName = tagName; | |
| } | |
| } | |
| /** | |
| * Returns the kind of this tree. | |
| * | |
| * @return the kind of this tree | |
| */ | |
| Kind getKind(); | |
| /** | |
| * Accept method used to implement the visitor pattern. The | |
| * visitor pattern is used to implement operations on trees. | |
| * | |
| * @param <R> the result type of this operation | |
| * @param <D> the type of additional data | |
| * @param visitor the visitor to be called | |
| * @param data a parameter value to be passed to the visitor method | |
| * @return the value returned from the visitor method | |
| */ | |
| <R, D> R accept(DocTreeVisitor<R,D> visitor, D data); | |
| } |