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