KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jicengine > element > Type


1 package org.jicengine.element;
2
3 import org.jicengine.expression.Utils;
4
5 /**
6  *
7  * <p>
8  * Copyright (C) 2004 Timo Laitinen
9  * </p>
10  * @author Timo Laitinen
11  * @created 2004-09-20
12  * @since JICE-0.10
13  */

14
15 public abstract class Type {
16
17     String JavaDoc name;
18     String JavaDoc[] parameters;
19     String JavaDoc signature;
20
21     protected Type(String JavaDoc name, String JavaDoc[] parameters)
22     {
23         this.name = name;
24         this.parameters = parameters;
25         this.signature = name + "/" + parameters.length;
26     }
27
28     public String JavaDoc getName()
29     {
30         return this.name;
31     }
32
33     public String JavaDoc getSignature()
34     {
35         return this.signature;
36     }
37
38     public String JavaDoc[] getParameters()
39     {
40         return this.parameters;
41     }
42
43     public static Type parse(String JavaDoc typeExpression)
44     {
45         char[] chars = typeExpression.toCharArray();
46         char character;
47         int paramStart = -1;
48
49         // find first '('
50
for (int i = 0; i < chars.length; i++) {
51             character = chars[i];
52             if( character == Utils.METHOD_ARGS_START){
53                 paramStart = i;
54                 break;
55             }
56         }
57
58         String JavaDoc typeName;
59         String JavaDoc[] parameters;
60
61
62         if( paramStart < 0 ){
63             typeName = typeExpression;
64             parameters = new String JavaDoc[0];
65         }
66         else {
67             typeName = typeExpression.substring(0,paramStart);
68             parameters = Utils.extractArguments(typeExpression,paramStart,typeExpression.length());
69         }
70
71         return new SimpleType(typeName, parameters);
72     }
73
74     public String JavaDoc toString()
75     {
76         return this.signature;
77     }
78 }
79
Popular Tags