comparison truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Parameter.java @ 21951:9c8c0937da41

Moving all sources into truffle subdirectory
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Wed, 17 Jun 2015 10:58:08 +0200
parents graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Parameter.java@18c0f02fa4d2
children dc83cc1f94f2
comparison
equal deleted inserted replaced
21950:2a5011c7e641 21951:9c8c0937da41
1 /*
2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23 package com.oracle.truffle.dsl.processor.model;
24
25 import javax.lang.model.element.*;
26 import javax.lang.model.type.*;
27
28 public final class Parameter {
29
30 private final ParameterSpec specification;
31 private TemplateMethod method;
32 private String localName;
33 private final int specificationVarArgsIndex;
34 private final int typeVarArgsIndex;
35 private final VariableElement variableElement;
36 private final TypeMirror type;
37
38 public Parameter(ParameterSpec specification, VariableElement variableElement, int specificationVarArgsIndex, int typeVarArgsIndex) {
39 this.specification = specification;
40 this.variableElement = variableElement;
41 this.type = variableElement.asType();
42 this.specificationVarArgsIndex = specificationVarArgsIndex;
43
44 String valueName = specification.getName() + "Value";
45 if (specificationVarArgsIndex > -1) {
46 valueName += specificationVarArgsIndex;
47 }
48 this.typeVarArgsIndex = typeVarArgsIndex;
49 this.localName = valueName;
50 }
51
52 public Parameter(Parameter parameter) {
53 this.specification = parameter.specification;
54 this.specificationVarArgsIndex = parameter.specificationVarArgsIndex;
55 this.localName = parameter.localName;
56 this.typeVarArgsIndex = parameter.typeVarArgsIndex;
57 this.variableElement = parameter.variableElement;
58 this.type = parameter.type;
59 }
60
61 public Parameter(Parameter parameter, TypeMirror newType) {
62 this.specification = parameter.specification;
63 this.specificationVarArgsIndex = parameter.specificationVarArgsIndex;
64 this.localName = parameter.localName;
65 this.typeVarArgsIndex = parameter.typeVarArgsIndex;
66 this.variableElement = parameter.variableElement;
67 this.type = newType;
68 }
69
70 public void setLocalName(String localName) {
71 this.localName = localName;
72 }
73
74 public VariableElement getVariableElement() {
75 return variableElement;
76 }
77
78 public int getTypeVarArgsIndex() {
79 return typeVarArgsIndex;
80 }
81
82 public int getSpecificationVarArgsIndex() {
83 return specificationVarArgsIndex;
84 }
85
86 public String getLocalName() {
87 return localName;
88 }
89
90 void setMethod(TemplateMethod method) {
91 this.method = method;
92 }
93
94 public ParameterSpec getSpecification() {
95 return specification;
96 }
97
98 public TemplateMethod getMethod() {
99 return method;
100 }
101
102 public TypeMirror getType() {
103 return type;
104 }
105
106 public boolean isTypeVarArgs() {
107 return typeVarArgsIndex >= 0;
108 }
109
110 public Parameter getPreviousParameter() {
111 return method.getPreviousParam(this);
112 }
113
114 @Override
115 public String toString() {
116 return "Parameter [localName=" + localName + ", type=" + getType() + ", variableElement=" + variableElement + "]";
117 }
118
119 }