KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > jdt > internal > core > TypeParameter


1 /*******************************************************************************
2  * Copyright (c) 2004, 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.jdt.internal.core;
12
13 import java.util.HashMap JavaDoc;
14
15 import org.eclipse.core.runtime.IProgressMonitor;
16 import org.eclipse.jdt.core.*;
17 import org.eclipse.jdt.core.IMember;
18 import org.eclipse.jdt.core.ITypeParameter;
19 import org.eclipse.jdt.core.JavaModelException;
20 import org.eclipse.jdt.core.compiler.CharOperation;
21
22 public class TypeParameter extends SourceRefElement implements ITypeParameter {
23
24     static final ITypeParameter[] NO_TYPE_PARAMETERS = new ITypeParameter[0];
25     
26     protected String JavaDoc name;
27     
28     public TypeParameter(JavaElement parent, String JavaDoc name) {
29         super(parent);
30         this.name = name;
31     }
32
33     public boolean equals(Object JavaDoc o) {
34         if (!(o instanceof TypeParameter)) return false;
35         return super.equals(o);
36     }
37
38     /*
39      * @see JavaElement#generateInfos
40      */

41     protected void generateInfos(Object JavaDoc info, HashMap JavaDoc newElements, IProgressMonitor pm) throws JavaModelException {
42         Openable openableParent = (Openable)getOpenableParent();
43         if (JavaModelManager.getJavaModelManager().getInfo(openableParent) == null) {
44             openableParent.generateInfos(openableParent.createElementInfo(), newElements, pm);
45         }
46     }
47     
48     public String JavaDoc[] getBounds() throws JavaModelException {
49         TypeParameterElementInfo info = (TypeParameterElementInfo) getElementInfo();
50         return CharOperation.toStrings(info.bounds);
51     }
52
53     public IMember getDeclaringMember() {
54             return (IMember) getParent();
55     }
56
57     public String JavaDoc getElementName() {
58         return this.name;
59     }
60
61     public int getElementType() {
62         return TYPE_PARAMETER;
63     }
64
65     protected char getHandleMementoDelimiter() {
66         return JavaElement.JEM_TYPE_PARAMETER;
67     }
68     
69     public ISourceRange getNameRange() throws JavaModelException {
70         SourceMapper mapper= getSourceMapper();
71         if (mapper != null) {
72             // ensure the class file's buffer is open so that source ranges are computed
73
ClassFile classFile = (ClassFile)getClassFile();
74             if (classFile != null) {
75                 classFile.getBuffer();
76                 return mapper.getNameRange(this);
77             }
78         }
79         TypeParameterElementInfo info = (TypeParameterElementInfo) getElementInfo();
80         return new SourceRange(info.nameStart, info.nameEnd - info.nameStart + 1);
81     }
82
83     /*
84      * @see ISourceReference
85      */

86     public ISourceRange getSourceRange() throws JavaModelException {
87         SourceMapper mapper= getSourceMapper();
88         if (mapper != null) {
89             // ensure the class file's buffer is open so that source ranges are computed
90
ClassFile classFile = (ClassFile)getClassFile();
91             if (classFile != null) {
92                 classFile.getBuffer();
93                 return mapper.getSourceRange(this);
94             }
95         }
96         return super.getSourceRange();
97     }
98
99     public IClassFile getClassFile() {
100         return ((JavaElement)getParent()).getClassFile();
101     }
102
103     protected void toStringName(StringBuffer JavaDoc buffer) {
104         buffer.append('<');
105         buffer.append(getElementName());
106         buffer.append('>');
107     }
108 }
109
Popular Tags