1920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson/* 2920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Copyright (C) 2010 Google Inc. 3920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 4920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Licensed under the Apache License, Version 2.0 (the "License"); 5920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * you may not use this file except in compliance with the License. 6920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * You may obtain a copy of the License at 7920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 8920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * http://www.apache.org/licenses/LICENSE-2.0 9920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 10920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Unless required by applicable law or agreed to in writing, software 11920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * distributed under the License is distributed on an "AS IS" BASIS, 12920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * See the License for the specific language governing permissions and 14920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * limitations under the License. 15920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 16920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 17920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpackage com.google.doclava; 18920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 19920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport com.google.clearsilver.jsilver.data.Data; 20920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 21920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpublic class TagInfo { 22920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private String mName; 23920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private String mText; 24920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private String mKind; 25920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private SourcePositionInfo mPosition; 26920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 27920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson TagInfo(String n, String k, String t, SourcePositionInfo sp) { 28920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mName = n; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mText = t; 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mKind = k; 31920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mPosition = sp; 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 33920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String name() { 35920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mName; 36920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 37920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 38920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String text() { 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mText; 40920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 41920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 42920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String kind() { 43920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mKind; 44920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 45920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 46920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson SourcePositionInfo position() { 47920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mPosition; 48920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 49920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 50920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson void setKind(String kind) { 51920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mKind = kind; 52920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 53920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 54920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public void makeHDF(Data data, String base) { 55920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".name", name()); 56920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".text", text()); 57920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".kind", kind()); 58920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 60920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void makeHDF(Data data, String base, TagInfo[] tags) { 61920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson makeHDF(data, base, tags, null, 0, 0); 62920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 63920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 64920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void makeHDF(Data data, String base, InheritedTags tags) { 65920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson makeHDF(data, base, tags.tags(), tags.inherited(), 0, 0); 66920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 67920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 68920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private static int makeHDF(Data data, String base, TagInfo[] tags, InheritedTags inherited, 69920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int j, int depth) { 70920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int i; 71920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int len = tags.length; 72920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (len == 0 && inherited != null) { 73920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson j = makeHDF(data, base, inherited.tags(), inherited.inherited(), j, depth + 1); 74920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 75920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (i = 0; i < len; i++, j++) { 76920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson TagInfo t = tags[i]; 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (inherited != null && t.name().equals("@inheritDoc")) { 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson j = makeHDF(data, base, inherited.tags(), inherited.inherited(), j, depth + 1); 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (t.name().equals("@inheritDoc")) { 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson Errors.error(Errors.BAD_INHERITDOC, t.mPosition, 82920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson "@inheritDoc on class/method that is not inherited"); 83920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 84920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson t.makeHDF(data, base + "." + j); 85920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 86920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 87920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 88920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return j; 89920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 90920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 91