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 Dodsonimport java.util.HashSet; 22920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 23920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpublic class ParameterInfo { 24920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public ParameterInfo(String name, String typeName, TypeInfo type, boolean isVarArg, 25920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson SourcePositionInfo position) { 26920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mName = name; 27920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mTypeName = typeName; 28920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mType = type; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsVarArg = isVarArg; 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mPosition = position; 31920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 33920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson TypeInfo type() { 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mType; 35920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 36920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 37920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String name() { 38920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mName; 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 40920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 41920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String typeName() { 42920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mTypeName; 43920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 44920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 45920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson SourcePositionInfo position() { 46920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mPosition; 47920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 48920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 49920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean isVarArg() { 50920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsVarArg; 51920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 52920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 53920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public void makeHDF(Data data, String base, boolean isLastVararg, HashSet<String> typeVariables) { 54920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".name", this.name()); 55920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson type().makeHDF(data, base + ".type", isLastVararg, typeVariables); 56920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 57920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 58920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void makeHDF(Data data, String base, ParameterInfo[] params, boolean isVararg, 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson HashSet<String> typeVariables) { 60920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (int i = 0; i < params.length; i++) { 61920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson params[i].makeHDF(data, base + "." + i, isVararg && (i == params.length - 1), typeVariables); 62920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 63920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 64920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 65920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson /** 66920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Returns true if this parameter's dimension information agrees 67920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * with the represented callee's dimension information. 68920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 69920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean matchesDimension(String dimension, boolean varargs) { 70920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (varargs) { 71920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson dimension += "[]"; 72920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 73920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mType.dimension().equals(dimension); 74920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 75920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 76920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mName; 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mTypeName; 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson TypeInfo mType; 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsVarArg; 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson SourcePositionInfo mPosition; 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 82