1 package org.simantics.scl.reflection.internal.typeRegistry;
\r
3 import gnu.trove.set.hash.THashSet;
\r
5 import java.util.List;
\r
6 import java.util.concurrent.ConcurrentHashMap;
\r
8 import org.simantics.scl.compiler.types.TCon;
\r
9 import org.simantics.scl.compiler.types.Types;
\r
10 import org.simantics.scl.reflection.TypeNotFoundException;
\r
11 import org.simantics.scl.reflection.internal.registry.BindingRegistry;
\r
13 public class TypeRegistry {
\r
14 private static final ConcurrentHashMap<TCon, Class<?>> map =
\r
15 new ConcurrentHashMap<TCon, Class<?>>();
\r
17 private static final THashSet<String> builtins = new THashSet<String>();
\r
20 map.put(Types.BOOLEAN, Boolean.class);
\r
21 map.put(Types.BYTE, Byte.class);
\r
22 map.put(Types.CHARACTER, Character.class);
\r
23 map.put(Types.SHORT, Short.class);
\r
24 map.put(Types.INTEGER, Integer.class);
\r
25 map.put(Types.LONG, Long.class);
\r
26 map.put(Types.FLOAT, Float.class);
\r
27 map.put(Types.DOUBLE, Double.class);
\r
28 map.put(Types.STRING, String.class);
\r
29 map.put(Types.BYTE_ARRAY, byte[].class);
\r
31 map.put(Types.LIST, List.class);
\r
32 for(int i=0;i<8;++i)
\r
35 map.put(Types.tupleConstructor(i),
\r
36 Class.forName("org.simantics.scl.runtime.tuple.Tuple" + i));
\r
37 } catch(ClassNotFoundException e) {
\r
38 e.printStackTrace();
\r
41 for(TCon con : map.keySet())
\r
42 builtins.add(con.name);
\r
45 public static Class<?> getClass(TCon type) throws TypeNotFoundException {
\r
46 Class<?> clazz = map.get(type);
\r
49 clazz = BindingRegistry.getClass(type);
\r
50 } catch(TypeNotFoundException e) {
\r
51 e.printStackTrace();
\r
54 map.put(type, clazz);
\r
59 public static boolean isBuiltin(String name) {
\r
60 return builtins.contains(name);
\r