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 19d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sappersteinimport java.util.ArrayList; 20d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein 21920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpublic abstract class MemberInfo extends DocInfo implements Comparable, Scoped { 22920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public MemberInfo(String rawCommentText, String name, String signature, 23920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ClassInfo containingClass, ClassInfo realContainingClass, boolean isPublic, 24920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean isProtected, boolean isPackagePrivate, boolean isPrivate, boolean isFinal, 25920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean isStatic, boolean isSynthetic, String kind, SourcePositionInfo position, 26d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein ArrayList<AnnotationInstanceInfo> annotations) { 27920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson super(rawCommentText, position); 28920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mName = name; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mSignature = signature; 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mContainingClass = containingClass; 31920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mRealContainingClass = realContainingClass; 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsPublic = isPublic; 33920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsProtected = isProtected; 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsPackagePrivate = isPackagePrivate; 35920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsPrivate = isPrivate; 36920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsFinal = isFinal; 37920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsStatic = isStatic; 38920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsSynthetic = isSynthetic; 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mKind = kind; 40920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mAnnotations = annotations; 41920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 42920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 43920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public abstract boolean isExecutable(); 44920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 45920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String anchor() { 46920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (mSignature != null) { 47920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mName + mSignature; 48920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 49920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mName; 50920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 51920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 52920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 53920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String htmlPage() { 54920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mContainingClass.htmlPage() + "#" + anchor(); 55920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 56920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 57920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public int compareTo(Object that) { 58920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return this.htmlPage().compareTo(((MemberInfo) that).htmlPage()); 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 60920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 61920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String name() { 62920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mName; 63920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 64920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 65920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String signature() { 66920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mSignature; 67920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 68920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 69920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public ClassInfo realContainingClass() { 70920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mRealContainingClass; 71920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 72920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 73920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public ClassInfo containingClass() { 74920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mContainingClass; 75920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 76920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isPublic() { 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsPublic; 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isProtected() { 82920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsProtected; 83920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 84920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 85920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isPackagePrivate() { 86920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsPackagePrivate; 87920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 88920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 89920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isPrivate() { 90920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsPrivate; 91920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 92920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 93920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String scope() { 94920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (isPublic()) { 95920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return "public"; 96920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else if (isProtected()) { 97920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return "protected"; 98920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else if (isPackagePrivate()) { 99920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return ""; 100920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else if (isPrivate()) { 101920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return "private"; 102920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 103920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson throw new RuntimeException("invalid scope for object " + this); 104920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 105920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 106920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 107920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isStatic() { 108920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsStatic; 109920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 110920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 111920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isFinal() { 112920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsFinal; 113920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 114920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 115920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isSynthetic() { 116920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsSynthetic; 117920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 118920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 119920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson @Override 120920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public ContainerInfo parent() { 121920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mContainingClass; 122920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 123920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 124920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean checkLevel() { 125920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return Doclava.checkLevel(mIsPublic, mIsProtected, mIsPackagePrivate, mIsPrivate, isHidden()); 126920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 127920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 128920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String kind() { 129920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mKind; 130920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 131920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 132d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein public ArrayList<AnnotationInstanceInfo> annotations() { 133920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mAnnotations; 134920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 135920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 136920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ClassInfo mContainingClass; 137920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ClassInfo mRealContainingClass; 138920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mName; 139920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mSignature; 140920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsPublic; 141920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsProtected; 142920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsPackagePrivate; 143920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsPrivate; 144920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsFinal; 145920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsStatic; 146920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsSynthetic; 147920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mKind; 148d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein private ArrayList<AnnotationInstanceInfo> mAnnotations; 149920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 150920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 151