KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gcc > rmi > iiop > compiler > ValueTypeContext


1 /*
2  * Copyright 2004 The Apache Software Foundation or its licensors, as
3  * applicable.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14  * implied.
15  *
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */

19 package gcc.rmi.iiop.compiler;
20
21 import gcc.generator.*;
22
23 import java.util.HashMap;
24 import java.lang.reflect.Modifier;
25
26 public class ValueTypeContext
27 {
28     protected int _vTypeId = 0;
29     protected HashMap _vTypeMap = new HashMap(20);
30
31     public ValueTypeContext()
32     {
33         clear();
34     }
35
36     public void clear()
37     {
38         _vTypeId = 0;
39         _vTypeMap.clear();
40     }
41
42     protected String getValueTypeVarName( JClass jc, JVariable jv )
43     {
44         String rc = null;
45
46         rc = (String) _vTypeMap.get( jv.getTypeDecl() );
47
48         if (rc == null)
49         {
50             rc = "vt$" + _vTypeId++;
51             _vTypeMap.put( jv.getTypeDecl(), rc );
52
53             JField vtField = jc.newField( gcc.rmi.iiop.ValueType.class, rc, new JExpression( new JCodeStatement( "gcc.rmi.iiop.ValueType.getInstance( " + jv.getTypeDecl() + ".class )" ) ) );
54             vtField.setModifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.FINAL );
55         }
56
57         return rc;
58     }
59 }
60
Popular Tags