src/share/classes/com/sun/tools/javac/tree/DCTree.java

Sun, 17 Feb 2013 16:44:55 -0500

author
dholmes
date
Sun, 17 Feb 2013 16:44:55 -0500
changeset 1571
af8417e590f4
parent 1535
3ab64e4293a1
child 1704
ed918a442b83
permissions
-rw-r--r--

Merge

jjg@1409 1 /*
jjg@1535 2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
jjg@1409 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
jjg@1409 4 *
jjg@1409 5 * This code is free software; you can redistribute it and/or modify it
jjg@1409 6 * under the terms of the GNU General Public License version 2 only, as
jjg@1409 7 * published by the Free Software Foundation. Oracle designates this
jjg@1409 8 * particular file as subject to the "Classpath" exception as provided
jjg@1409 9 * by Oracle in the LICENSE file that accompanied this code.
jjg@1409 10 *
jjg@1409 11 * This code is distributed in the hope that it will be useful, but WITHOUT
jjg@1409 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
jjg@1409 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
jjg@1409 14 * version 2 for more details (a copy is included in the LICENSE file that
jjg@1409 15 * accompanied this code).
jjg@1409 16 *
jjg@1409 17 * You should have received a copy of the GNU General Public License version
jjg@1409 18 * 2 along with this work; if not, write to the Free Software Foundation,
jjg@1409 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
jjg@1409 20 *
jjg@1409 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
jjg@1409 22 * or visit www.oracle.com if you need additional information or have any
jjg@1409 23 * questions.
jjg@1409 24 */
jjg@1409 25
jjg@1409 26 package com.sun.tools.javac.tree;
jjg@1409 27
jjg@1409 28
jjg@1409 29 import javax.tools.Diagnostic;
jjg@1409 30
jjg@1409 31 import com.sun.source.doctree.*;
jjg@1409 32 import com.sun.tools.javac.parser.Tokens.Comment;
jjg@1409 33 import com.sun.tools.javac.util.Assert;
jjg@1409 34 import com.sun.tools.javac.util.DiagnosticSource;
jjg@1409 35 import com.sun.tools.javac.util.JCDiagnostic;
jjg@1409 36 import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition;
jjg@1409 37 import com.sun.tools.javac.util.List;
jjg@1409 38 import com.sun.tools.javac.util.Name;
jjg@1455 39 import java.io.IOException;
jjg@1455 40 import java.io.StringWriter;
jjg@1409 41 import javax.tools.JavaFileObject;
jjg@1409 42
jjg@1409 43 /**
jjg@1409 44 * <p><b>This is NOT part of any supported API.
jjg@1409 45 * If you write code that depends on this, you do so at your own risk.
jjg@1409 46 * This code and its internal interfaces are subject to change or
jjg@1409 47 * deletion without notice.</b>
jjg@1409 48 */
jjg@1409 49 public abstract class DCTree implements DocTree {
jjg@1409 50
jjg@1409 51 /**
jjg@1409 52 * The position in the comment string.
jjg@1409 53 * Use {@link #getSourcePosition getSourcePosition} to convert
jjg@1409 54 * it to a position in the source file.
jjg@1409 55 *
jjg@1409 56 * TODO: why not simply translate all these values into
jjg@1409 57 * source file positions? Is it useful to have string-offset
jjg@1409 58 * positions as well?
jjg@1409 59 */
jjg@1409 60 public int pos;
jjg@1409 61
jjg@1409 62 public long getSourcePosition(DCDocComment dc) {
jjg@1409 63 return dc.comment.getSourcePos(pos);
jjg@1409 64 }
jjg@1409 65
jjg@1409 66 public JCDiagnostic.DiagnosticPosition pos(DCDocComment dc) {
jjg@1409 67 return new SimpleDiagnosticPosition(dc.comment.getSourcePos(pos));
jjg@1409 68 }
jjg@1409 69
jjg@1455 70 /** Convert a tree to a pretty-printed string. */
jjg@1455 71 @Override
jjg@1455 72 public String toString() {
jjg@1455 73 StringWriter s = new StringWriter();
jjg@1455 74 try {
jjg@1455 75 new DocPretty(s).print(this);
jjg@1455 76 }
jjg@1455 77 catch (IOException e) {
jjg@1455 78 // should never happen, because StringWriter is defined
jjg@1455 79 // never to throw any IOExceptions
jjg@1455 80 throw new AssertionError(e);
jjg@1455 81 }
jjg@1455 82 return s.toString();
jjg@1455 83 }
jjg@1455 84
jjg@1409 85 public static class DCDocComment extends DCTree implements DocCommentTree {
jjg@1409 86 final Comment comment; // required for the implicit source pos table
jjg@1409 87
jjg@1409 88 public final List<DCTree> firstSentence;
jjg@1409 89 public final List<DCTree> body;
jjg@1409 90 public final List<DCTree> tags;
jjg@1409 91
jjg@1409 92 public DCDocComment(Comment comment,
jjg@1409 93 List<DCTree> firstSentence, List<DCTree> body, List<DCTree> tags) {
jjg@1409 94 this.comment = comment;
jjg@1409 95 this.firstSentence = firstSentence;
jjg@1409 96 this.body = body;
jjg@1409 97 this.tags = tags;
jjg@1409 98 }
jjg@1409 99
jjg@1409 100 public Kind getKind() {
jjg@1409 101 return Kind.DOC_COMMENT;
jjg@1409 102 }
jjg@1409 103
jjg@1409 104 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 105 return v.visitDocComment(this, d);
jjg@1409 106 }
jjg@1409 107
jjg@1409 108 public List<? extends DocTree> getFirstSentence() {
jjg@1409 109 return firstSentence;
jjg@1409 110 }
jjg@1409 111
jjg@1409 112 public List<? extends DocTree> getBody() {
jjg@1409 113 return body;
jjg@1409 114 }
jjg@1409 115
jjg@1409 116 public List<? extends DocTree> getBlockTags() {
jjg@1409 117 return tags;
jjg@1409 118 }
jjg@1409 119
jjg@1409 120 }
jjg@1409 121
jjg@1535 122 public static abstract class DCBlockTag extends DCTree implements BlockTagTree {
jjg@1409 123 public String getTagName() {
jjg@1409 124 return getKind().tagName;
jjg@1409 125 }
jjg@1409 126 }
jjg@1409 127
jjg@1409 128 public static abstract class DCInlineTag extends DCTree implements InlineTagTree {
jjg@1409 129 public String getTagName() {
jjg@1409 130 return getKind().tagName;
jjg@1409 131 }
jjg@1409 132 }
jjg@1409 133
jjg@1409 134 public static class DCAttribute extends DCTree implements AttributeTree {
jjg@1409 135 public final Name name;
jjg@1409 136 public final ValueKind vkind;
jjg@1409 137 public final List<DCTree> value;
jjg@1409 138
jjg@1409 139 DCAttribute(Name name, ValueKind vkind, List<DCTree> value) {
jjg@1409 140 Assert.check((vkind == ValueKind.EMPTY) ? (value == null) : (value != null));
jjg@1409 141 this.name = name;
jjg@1409 142 this.vkind = vkind;
jjg@1409 143 this.value = value;
jjg@1409 144 }
jjg@1409 145
jjg@1409 146 @Override
jjg@1409 147 public Kind getKind() {
jjg@1409 148 return Kind.ATTRIBUTE;
jjg@1409 149 }
jjg@1409 150
jjg@1409 151 @Override
jjg@1409 152 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 153 return v.visitAttribute(this, d);
jjg@1409 154 }
jjg@1409 155
jjg@1409 156 @Override
jjg@1409 157 public Name getName() {
jjg@1409 158 return name;
jjg@1409 159 }
jjg@1409 160
jjg@1409 161 @Override
jjg@1409 162 public ValueKind getValueKind() {
jjg@1409 163 return vkind;
jjg@1409 164 }
jjg@1409 165
jjg@1409 166 @Override
jjg@1409 167 public List<DCTree> getValue() {
jjg@1409 168 return value;
jjg@1409 169 }
jjg@1409 170 }
jjg@1409 171
jjg@1535 172 public static class DCAuthor extends DCBlockTag implements AuthorTree {
jjg@1409 173 public final List<DCTree> name;
jjg@1409 174
jjg@1409 175 DCAuthor(List<DCTree> name) {
jjg@1409 176 this.name = name;
jjg@1409 177 }
jjg@1409 178
jjg@1409 179 @Override
jjg@1409 180 public Kind getKind() {
jjg@1409 181 return Kind.AUTHOR;
jjg@1409 182 }
jjg@1409 183
jjg@1409 184 @Override
jjg@1409 185 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 186 return v.visitAuthor(this, d);
jjg@1409 187 }
jjg@1409 188
jjg@1409 189 @Override
jjg@1409 190 public List<? extends DocTree> getName() {
jjg@1409 191 return name;
jjg@1409 192 }
jjg@1409 193 }
jjg@1409 194
jjg@1409 195 public static class DCComment extends DCTree implements CommentTree {
jjg@1409 196 public final String body;
jjg@1409 197
jjg@1409 198 DCComment(String body) {
jjg@1409 199 this.body = body;
jjg@1409 200 }
jjg@1409 201
jjg@1409 202 @Override
jjg@1409 203 public Kind getKind() {
jjg@1409 204 return Kind.COMMENT;
jjg@1409 205 }
jjg@1409 206
jjg@1409 207 @Override
jjg@1409 208 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 209 return v.visitComment(this, d);
jjg@1409 210 }
jjg@1409 211
jjg@1409 212 @Override
jjg@1409 213 public String getBody() {
jjg@1409 214 return body;
jjg@1409 215 }
jjg@1409 216 }
jjg@1409 217
jjg@1409 218 public static class DCDeprecated extends DCBlockTag implements DeprecatedTree {
jjg@1409 219 public final List<DCTree> body;
jjg@1409 220
jjg@1409 221 DCDeprecated(List<DCTree> body) {
jjg@1409 222 this.body = body;
jjg@1409 223 }
jjg@1409 224
jjg@1409 225 @Override
jjg@1409 226 public Kind getKind() {
jjg@1409 227 return Kind.DEPRECATED;
jjg@1409 228 }
jjg@1409 229
jjg@1409 230 @Override
jjg@1409 231 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 232 return v.visitDeprecated(this, d);
jjg@1409 233 }
jjg@1409 234
jjg@1409 235 @Override
jjg@1409 236 public List<? extends DocTree> getBody() {
jjg@1409 237 return body;
jjg@1409 238 }
jjg@1409 239 }
jjg@1409 240
jjg@1409 241 public static class DCDocRoot extends DCInlineTag implements DocRootTree {
jjg@1409 242
jjg@1409 243 @Override
jjg@1409 244 public Kind getKind() {
jjg@1409 245 return Kind.DOC_ROOT;
jjg@1409 246 }
jjg@1409 247
jjg@1409 248 @Override
jjg@1409 249 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 250 return v.visitDocRoot(this, d);
jjg@1409 251 }
jjg@1409 252 }
jjg@1409 253
jjg@1409 254 public static class DCEndElement extends DCTree implements EndElementTree {
jjg@1409 255 public final Name name;
jjg@1409 256
jjg@1409 257 DCEndElement(Name name) {
jjg@1409 258 this.name = name;
jjg@1409 259 }
jjg@1409 260
jjg@1409 261 @Override
jjg@1409 262 public Kind getKind() {
jjg@1409 263 return Kind.END_ELEMENT;
jjg@1409 264 }
jjg@1409 265
jjg@1409 266 @Override
jjg@1409 267 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 268 return v.visitEndElement(this, d);
jjg@1409 269 }
jjg@1409 270
jjg@1409 271 @Override
jjg@1409 272 public Name getName() {
jjg@1409 273 return name;
jjg@1409 274 }
jjg@1409 275 }
jjg@1409 276
jjg@1409 277 public static class DCEntity extends DCTree implements EntityTree {
jjg@1409 278 public final Name name;
jjg@1409 279
jjg@1409 280 DCEntity(Name name) {
jjg@1409 281 this.name = name;
jjg@1409 282 }
jjg@1409 283
jjg@1409 284 @Override
jjg@1409 285 public Kind getKind() {
jjg@1409 286 return Kind.ENTITY;
jjg@1409 287 }
jjg@1409 288
jjg@1409 289 @Override
jjg@1409 290 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 291 return v.visitEntity(this, d);
jjg@1409 292 }
jjg@1409 293
jjg@1409 294 @Override
jjg@1409 295 public Name getName() {
jjg@1409 296 return name;
jjg@1409 297 }
jjg@1409 298 }
jjg@1409 299
jjg@1409 300 public static class DCErroneous extends DCTree implements ErroneousTree, JCDiagnostic.DiagnosticPosition {
jjg@1409 301 public final String body;
jjg@1409 302 public final JCDiagnostic diag;
jjg@1409 303
jjg@1409 304 DCErroneous(String body, JCDiagnostic.Factory diags, DiagnosticSource diagSource, String code, Object... args) {
jjg@1409 305 this.body = body;
jjg@1409 306 this.diag = diags.error(diagSource, this, code, args);
jjg@1409 307 }
jjg@1409 308
jjg@1409 309 @Override
jjg@1409 310 public Kind getKind() {
jjg@1409 311 return Kind.ERRONEOUS;
jjg@1409 312 }
jjg@1409 313
jjg@1409 314 @Override
jjg@1409 315 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 316 return v.visitErroneous(this, d);
jjg@1409 317 }
jjg@1409 318
jjg@1409 319 @Override
jjg@1409 320 public String getBody() {
jjg@1409 321 return body;
jjg@1409 322 }
jjg@1409 323
jjg@1409 324 @Override
jjg@1409 325 public Diagnostic<JavaFileObject> getDiagnostic() {
jjg@1409 326 return diag;
jjg@1409 327 }
jjg@1409 328
jjg@1409 329 @Override
jjg@1409 330 public JCTree getTree() {
jjg@1409 331 return null;
jjg@1409 332 }
jjg@1409 333
jjg@1409 334 @Override
jjg@1409 335 public int getStartPosition() {
jjg@1409 336 return pos;
jjg@1409 337 }
jjg@1409 338
jjg@1409 339 @Override
jjg@1409 340 public int getPreferredPosition() {
jjg@1409 341 return pos + body.length() - 1;
jjg@1409 342 }
jjg@1409 343
jjg@1409 344 @Override
jjg@1409 345 public int getEndPosition(EndPosTable endPosTable) {
jjg@1409 346 return pos + body.length();
jjg@1409 347 }
jjg@1409 348 }
jjg@1409 349
jjg@1409 350 public static class DCIdentifier extends DCTree implements IdentifierTree {
jjg@1409 351 public final Name name;
jjg@1409 352
jjg@1409 353 DCIdentifier(Name name) {
jjg@1409 354 this.name = name;
jjg@1409 355 }
jjg@1409 356
jjg@1409 357 @Override
jjg@1409 358 public Kind getKind() {
jjg@1409 359 return Kind.IDENTIFIER;
jjg@1409 360 }
jjg@1409 361
jjg@1409 362 @Override
jjg@1409 363 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 364 return v.visitIdentifier(this, d);
jjg@1409 365 }
jjg@1409 366
jjg@1409 367 @Override
jjg@1409 368 public Name getName() {
jjg@1409 369 return name;
jjg@1409 370 }
jjg@1409 371 }
jjg@1409 372
jjg@1409 373 public static class DCInheritDoc extends DCInlineTag implements InheritDocTree {
jjg@1409 374 @Override
jjg@1409 375 public Kind getKind() {
jjg@1409 376 return Kind.INHERIT_DOC;
jjg@1409 377 }
jjg@1409 378
jjg@1409 379 @Override
jjg@1409 380 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 381 return v.visitInheritDoc(this, d);
jjg@1409 382 }
jjg@1409 383 }
jjg@1409 384
jjg@1409 385 public static class DCLink extends DCInlineTag implements LinkTree {
jjg@1409 386 public final Kind kind;
jjg@1409 387 public final DCReference ref;
jjg@1409 388 public final List<DCTree> label;
jjg@1409 389
jjg@1409 390 DCLink(Kind kind, DCReference ref, List<DCTree> label) {
jjg@1409 391 Assert.check(kind == Kind.LINK || kind == Kind.LINK_PLAIN);
jjg@1409 392 this.kind = kind;
jjg@1409 393 this.ref = ref;
jjg@1409 394 this.label = label;
jjg@1409 395 }
jjg@1409 396
jjg@1409 397 @Override
jjg@1409 398 public Kind getKind() {
jjg@1409 399 return kind;
jjg@1409 400 }
jjg@1409 401
jjg@1409 402 @Override
jjg@1409 403 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 404 return v.visitLink(this, d);
jjg@1409 405 }
jjg@1409 406
jjg@1409 407 @Override
jjg@1409 408 public ReferenceTree getReference() {
jjg@1409 409 return ref;
jjg@1409 410 }
jjg@1409 411
jjg@1409 412 @Override
jjg@1409 413 public List<? extends DocTree> getLabel() {
jjg@1409 414 return label;
jjg@1409 415 }
jjg@1409 416 }
jjg@1409 417
jjg@1409 418 public static class DCLiteral extends DCInlineTag implements LiteralTree {
jjg@1409 419 public final Kind kind;
jjg@1409 420 public final DCText body;
jjg@1409 421
jjg@1409 422 DCLiteral(Kind kind, DCText body) {
jjg@1409 423 Assert.check(kind == Kind.CODE || kind == Kind.LITERAL);
jjg@1409 424 this.kind = kind;
jjg@1409 425 this.body = body;
jjg@1409 426 }
jjg@1409 427
jjg@1409 428 @Override
jjg@1409 429 public Kind getKind() {
jjg@1409 430 return kind;
jjg@1409 431 }
jjg@1409 432
jjg@1409 433 @Override
jjg@1409 434 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 435 return v.visitLiteral(this, d);
jjg@1409 436 }
jjg@1409 437
jjg@1409 438 @Override
jjg@1409 439 public DCText getBody() {
jjg@1409 440 return body;
jjg@1409 441 }
jjg@1409 442 }
jjg@1409 443
jjg@1409 444 public static class DCParam extends DCBlockTag implements ParamTree {
jjg@1409 445 public final boolean isTypeParameter;
jjg@1409 446 public final DCIdentifier name;
jjg@1409 447 public final List<DCTree> description;
jjg@1409 448
jjg@1409 449 DCParam(boolean isTypeParameter, DCIdentifier name, List<DCTree> description) {
jjg@1409 450 this.isTypeParameter = isTypeParameter;
jjg@1409 451 this.name = name;
jjg@1409 452 this.description = description;
jjg@1409 453 }
jjg@1409 454
jjg@1409 455 @Override
jjg@1409 456 public Kind getKind() {
jjg@1409 457 return Kind.PARAM;
jjg@1409 458 }
jjg@1409 459
jjg@1409 460 @Override
jjg@1409 461 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 462 return v.visitParam(this, d);
jjg@1409 463 }
jjg@1409 464
jjg@1409 465 @Override
jjg@1409 466 public boolean isTypeParameter() {
jjg@1409 467 return isTypeParameter;
jjg@1409 468 }
jjg@1409 469
jjg@1409 470 @Override
jjg@1409 471 public IdentifierTree getName() {
jjg@1409 472 return name;
jjg@1409 473 }
jjg@1409 474
jjg@1409 475 @Override
jjg@1409 476 public List<? extends DocTree> getDescription() {
jjg@1409 477 return description;
jjg@1409 478 }
jjg@1409 479 }
jjg@1409 480
jjg@1409 481 public static class DCReference extends DCTree implements ReferenceTree {
jjg@1409 482 public final String signature;
jjg@1409 483
jjg@1409 484 // The following are not directly exposed through ReferenceTree
jjg@1409 485 // use DocTrees.getElement(TreePath,ReferenceTree)
jjg@1409 486 public final JCTree qualifierExpression;
jjg@1409 487 public final Name memberName;
jjg@1409 488 public final List<JCTree> paramTypes;
jjg@1409 489
jjg@1409 490
jjg@1409 491 DCReference(String signature, JCTree qualExpr, Name member, List<JCTree> paramTypes) {
jjg@1409 492 this.signature = signature;
jjg@1409 493 qualifierExpression = qualExpr;
jjg@1409 494 memberName = member;
jjg@1409 495 this.paramTypes = paramTypes;
jjg@1409 496 }
jjg@1409 497
jjg@1409 498 @Override
jjg@1409 499 public Kind getKind() {
jjg@1409 500 return Kind.REFERENCE;
jjg@1409 501 }
jjg@1409 502
jjg@1409 503 @Override
jjg@1409 504 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 505 return v.visitReference(this, d);
jjg@1409 506 }
jjg@1409 507
jjg@1409 508 @Override
jjg@1409 509 public String getSignature() {
jjg@1409 510 return signature;
jjg@1409 511 }
jjg@1409 512 }
jjg@1409 513
jjg@1409 514 public static class DCReturn extends DCBlockTag implements ReturnTree {
jjg@1409 515 public final List<DCTree> description;
jjg@1409 516
jjg@1409 517 DCReturn(List<DCTree> description) {
jjg@1409 518 this.description = description;
jjg@1409 519 }
jjg@1409 520
jjg@1409 521 @Override
jjg@1409 522 public Kind getKind() {
jjg@1409 523 return Kind.RETURN;
jjg@1409 524 }
jjg@1409 525
jjg@1409 526 @Override
jjg@1409 527 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 528 return v.visitReturn(this, d);
jjg@1409 529 }
jjg@1409 530
jjg@1409 531 @Override
jjg@1409 532 public List<? extends DocTree> getDescription() {
jjg@1409 533 return description;
jjg@1409 534 }
jjg@1409 535 }
jjg@1409 536
jjg@1409 537 public static class DCSee extends DCBlockTag implements SeeTree {
jjg@1409 538 public final List<DCTree> reference;
jjg@1409 539
jjg@1409 540 DCSee(List<DCTree> reference) {
jjg@1409 541 this.reference = reference;
jjg@1409 542 }
jjg@1409 543
jjg@1409 544 @Override
jjg@1409 545 public Kind getKind() {
jjg@1409 546 return Kind.SEE;
jjg@1409 547 }
jjg@1409 548
jjg@1409 549 @Override
jjg@1409 550 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 551 return v.visitSee(this, d);
jjg@1409 552 }
jjg@1409 553
jjg@1409 554 @Override
jjg@1409 555 public List<? extends DocTree> getReference() {
jjg@1409 556 return reference;
jjg@1409 557 }
jjg@1409 558 }
jjg@1409 559
jjg@1409 560 public static class DCSerial extends DCBlockTag implements SerialTree {
jjg@1409 561 public final List<DCTree> description;
jjg@1409 562
jjg@1409 563 DCSerial(List<DCTree> description) {
jjg@1409 564 this.description = description;
jjg@1409 565 }
jjg@1409 566
jjg@1409 567 @Override
jjg@1409 568 public Kind getKind() {
jjg@1409 569 return Kind.SERIAL;
jjg@1409 570 }
jjg@1409 571
jjg@1409 572 @Override
jjg@1409 573 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 574 return v.visitSerial(this, d);
jjg@1409 575 }
jjg@1409 576
jjg@1409 577 @Override
jjg@1409 578 public List<? extends DocTree> getDescription() {
jjg@1409 579 return description;
jjg@1409 580 }
jjg@1409 581 }
jjg@1409 582
jjg@1409 583 public static class DCSerialData extends DCBlockTag implements SerialDataTree {
jjg@1409 584 public final List<DCTree> description;
jjg@1409 585
jjg@1409 586 DCSerialData(List<DCTree> description) {
jjg@1409 587 this.description = description;
jjg@1409 588 }
jjg@1409 589
jjg@1409 590 @Override
jjg@1409 591 public Kind getKind() {
jjg@1409 592 return Kind.SERIAL_DATA;
jjg@1409 593 }
jjg@1409 594
jjg@1409 595 @Override
jjg@1409 596 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 597 return v.visitSerialData(this, d);
jjg@1409 598 }
jjg@1409 599
jjg@1409 600 @Override
jjg@1409 601 public List<? extends DocTree> getDescription() {
jjg@1409 602 return description;
jjg@1409 603 }
jjg@1409 604 }
jjg@1409 605
jjg@1409 606 public static class DCSerialField extends DCBlockTag implements SerialFieldTree {
jjg@1409 607 public final DCIdentifier name;
jjg@1409 608 public final DCReference type;
jjg@1409 609 public final List<DCTree> description;
jjg@1409 610
jjg@1409 611 DCSerialField(DCIdentifier name, DCReference type, List<DCTree> description) {
jjg@1409 612 this.description = description;
jjg@1409 613 this.name = name;
jjg@1409 614 this.type = type;
jjg@1409 615 }
jjg@1409 616
jjg@1409 617 @Override
jjg@1409 618 public Kind getKind() {
jjg@1409 619 return Kind.SERIAL_FIELD;
jjg@1409 620 }
jjg@1409 621
jjg@1409 622 @Override
jjg@1409 623 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 624 return v.visitSerialField(this, d);
jjg@1409 625 }
jjg@1409 626
jjg@1409 627 @Override
jjg@1409 628 public List<? extends DocTree> getDescription() {
jjg@1409 629 return description;
jjg@1409 630 }
jjg@1409 631
jjg@1409 632 @Override
jjg@1409 633 public IdentifierTree getName() {
jjg@1409 634 return name;
jjg@1409 635 }
jjg@1409 636
jjg@1409 637 @Override
jjg@1409 638 public ReferenceTree getType() {
jjg@1409 639 return type;
jjg@1409 640 }
jjg@1409 641 }
jjg@1409 642
jjg@1535 643 public static class DCSince extends DCBlockTag implements SinceTree {
jjg@1409 644 public final List<DCTree> body;
jjg@1409 645
jjg@1409 646 DCSince(List<DCTree> body) {
jjg@1409 647 this.body = body;
jjg@1409 648 }
jjg@1409 649
jjg@1409 650 @Override
jjg@1409 651 public Kind getKind() {
jjg@1409 652 return Kind.SINCE;
jjg@1409 653 }
jjg@1409 654
jjg@1409 655 @Override
jjg@1409 656 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 657 return v.visitSince(this, d);
jjg@1409 658 }
jjg@1409 659
jjg@1409 660 @Override
jjg@1409 661 public List<? extends DocTree> getBody() {
jjg@1409 662 return body;
jjg@1409 663 }
jjg@1409 664 }
jjg@1409 665
jjg@1409 666 public static class DCStartElement extends DCTree implements StartElementTree {
jjg@1409 667 public final Name name;
jjg@1409 668 public final List<DCTree> attrs;
jjg@1409 669 public final boolean selfClosing;
jjg@1409 670
jjg@1409 671 DCStartElement(Name name, List<DCTree> attrs, boolean selfClosing) {
jjg@1409 672 this.name = name;
jjg@1409 673 this.attrs = attrs;
jjg@1409 674 this.selfClosing = selfClosing;
jjg@1409 675 }
jjg@1409 676
jjg@1409 677 @Override
jjg@1409 678 public Kind getKind() {
jjg@1409 679 return Kind.START_ELEMENT;
jjg@1409 680 }
jjg@1409 681
jjg@1409 682 @Override
jjg@1409 683 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 684 return v.visitStartElement(this, d);
jjg@1409 685 }
jjg@1409 686
jjg@1409 687 @Override
jjg@1409 688 public Name getName() {
jjg@1409 689 return name;
jjg@1409 690 }
jjg@1409 691
jjg@1409 692 @Override
jjg@1409 693 public List<? extends DocTree> getAttributes() {
jjg@1409 694 return attrs;
jjg@1409 695 }
jjg@1409 696
jjg@1409 697 @Override
jjg@1409 698 public boolean isSelfClosing() {
jjg@1409 699 return selfClosing;
jjg@1409 700 }
jjg@1409 701 }
jjg@1409 702
jjg@1409 703 public static class DCText extends DCTree implements TextTree {
jjg@1409 704 public final String text;
jjg@1409 705
jjg@1409 706 DCText(String text) {
jjg@1409 707 this.text = text;
jjg@1409 708 }
jjg@1409 709
jjg@1409 710 @Override
jjg@1409 711 public Kind getKind() {
jjg@1409 712 return Kind.TEXT;
jjg@1409 713 }
jjg@1409 714
jjg@1409 715 @Override
jjg@1409 716 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 717 return v.visitText(this, d);
jjg@1409 718 }
jjg@1409 719
jjg@1409 720 @Override
jjg@1409 721 public String getBody() {
jjg@1409 722 return text;
jjg@1409 723 }
jjg@1409 724 }
jjg@1409 725
jjg@1409 726 public static class DCThrows extends DCBlockTag implements ThrowsTree {
jjg@1409 727 public final Kind kind;
jjg@1409 728 public final DCReference name;
jjg@1409 729 public final List<DCTree> description;
jjg@1409 730
jjg@1409 731 DCThrows(Kind kind, DCReference name, List<DCTree> description) {
jjg@1409 732 Assert.check(kind == Kind.EXCEPTION || kind == Kind.THROWS);
jjg@1409 733 this.kind = kind;
jjg@1409 734 this.name = name;
jjg@1409 735 this.description = description;
jjg@1409 736 }
jjg@1409 737
jjg@1409 738 @Override
jjg@1409 739 public Kind getKind() {
jjg@1409 740 return kind;
jjg@1409 741 }
jjg@1409 742
jjg@1409 743 @Override
jjg@1409 744 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 745 return v.visitThrows(this, d);
jjg@1409 746 }
jjg@1409 747
jjg@1409 748 @Override
jjg@1409 749 public ReferenceTree getExceptionName() {
jjg@1409 750 return name;
jjg@1409 751 }
jjg@1409 752
jjg@1409 753 @Override
jjg@1409 754 public List<? extends DocTree> getDescription() {
jjg@1409 755 return description;
jjg@1409 756 }
jjg@1409 757 }
jjg@1409 758
jjg@1409 759 public static class DCUnknownBlockTag extends DCBlockTag implements UnknownBlockTagTree {
jjg@1409 760 public final Name name;
jjg@1409 761 public final List<DCTree> content;
jjg@1409 762
jjg@1409 763 DCUnknownBlockTag(Name name, List<DCTree> content) {
jjg@1409 764 this.name = name;
jjg@1409 765 this.content = content;
jjg@1409 766 }
jjg@1409 767
jjg@1409 768 @Override
jjg@1409 769 public Kind getKind() {
jjg@1409 770 return Kind.UNKNOWN_BLOCK_TAG;
jjg@1409 771 }
jjg@1409 772
jjg@1409 773 @Override
jjg@1409 774 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 775 return v.visitUnknownBlockTag(this, d);
jjg@1409 776 }
jjg@1409 777
jjg@1409 778 @Override
jjg@1409 779 public String getTagName() {
jjg@1409 780 return name.toString();
jjg@1409 781 }
jjg@1409 782
jjg@1409 783 @Override
jjg@1409 784 public List<? extends DocTree> getContent() {
jjg@1409 785 return content;
jjg@1409 786 }
jjg@1409 787 }
jjg@1409 788
jjg@1409 789 public static class DCUnknownInlineTag extends DCInlineTag implements UnknownInlineTagTree {
jjg@1409 790 public final Name name;
jjg@1409 791 public final List<DCTree> content;
jjg@1409 792
jjg@1409 793 DCUnknownInlineTag(Name name, List<DCTree> content) {
jjg@1409 794 this.name = name;
jjg@1409 795 this.content = content;
jjg@1409 796 }
jjg@1409 797
jjg@1409 798 @Override
jjg@1409 799 public Kind getKind() {
jjg@1409 800 return Kind.UNKNOWN_INLINE_TAG;
jjg@1409 801 }
jjg@1409 802
jjg@1409 803 @Override
jjg@1409 804 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 805 return v.visitUnknownInlineTag(this, d);
jjg@1409 806 }
jjg@1409 807
jjg@1409 808 @Override
jjg@1409 809 public String getTagName() {
jjg@1409 810 return name.toString();
jjg@1409 811 }
jjg@1409 812
jjg@1409 813 @Override
jjg@1409 814 public List<? extends DocTree> getContent() {
jjg@1409 815 return content;
jjg@1409 816 }
jjg@1409 817 }
jjg@1409 818
jjg@1409 819 public static class DCValue extends DCInlineTag implements ValueTree {
jjg@1409 820 public final DCReference ref;
jjg@1409 821
jjg@1409 822 DCValue(DCReference ref) {
jjg@1409 823 this.ref = ref;
jjg@1409 824 }
jjg@1409 825
jjg@1409 826 @Override
jjg@1409 827 public Kind getKind() {
jjg@1409 828 return Kind.VALUE;
jjg@1409 829 }
jjg@1409 830
jjg@1409 831 @Override
jjg@1409 832 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 833 return v.visitValue(this, d);
jjg@1409 834 }
jjg@1409 835
jjg@1409 836 @Override
jjg@1409 837 public ReferenceTree getReference() {
jjg@1409 838 return ref;
jjg@1409 839 }
jjg@1409 840 }
jjg@1409 841
jjg@1409 842 public static class DCVersion extends DCBlockTag implements VersionTree {
jjg@1409 843 public final List<DCTree> body;
jjg@1409 844
jjg@1409 845 DCVersion(List<DCTree> body) {
jjg@1409 846 this.body = body;
jjg@1409 847 }
jjg@1409 848
jjg@1409 849 @Override
jjg@1409 850 public Kind getKind() {
jjg@1409 851 return Kind.VERSION;
jjg@1409 852 }
jjg@1409 853
jjg@1409 854 @Override
jjg@1409 855 public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
jjg@1409 856 return v.visitVersion(this, d);
jjg@1409 857 }
jjg@1409 858
jjg@1409 859 @Override
jjg@1409 860 public List<? extends DocTree> getBody() {
jjg@1409 861 return body;
jjg@1409 862 }
jjg@1409 863 }
jjg@1409 864
jjg@1409 865 }

mercurial