1 package org.simantics.scl.compiler.internal.codegen.types;
\r
3 import org.cojen.classfile.TypeDesc;
\r
4 import org.simantics.scl.compiler.constants.generic.ClassRef;
\r
6 @SuppressWarnings("hiding")
\r
7 public interface JavaReferenceValidator<Class,Method,Field,Constructor> {
\r
10 * Tries to find the given class or returns null if the class
\r
13 Class findClass(TypeDesc name);
\r
15 boolean isInterface(Class clazz);
\r
17 boolean isPublic(Class clazz);
\r
20 * Finds all methods that are compatible with type
\r
21 * <pre>types[0] -> types[1] -> ... -> types[types.length-1]</pre>
\r
23 Method[] findCompatibleMethods(Class clazz, boolean isStatic, String name,
\r
24 TypeDesc[] parameterTypes, TypeDesc returnType);
\r
25 TypeDesc getReturnType(Method method);
\r
26 TypeDesc[] getParameterTypes(Method method);
\r
28 Constructor[] findCompatibleConstructors(Class clazz, TypeDesc[] types);
\r
29 TypeDesc[] getConstructorParameterTypes(Constructor constructor);
\r
31 Field findField(Class clazz, String name);
\r
32 boolean isStaticField(Field field);
\r
33 TypeDesc getFieldType(Field field);
\r
34 boolean isAssignableFrom(TypeDesc to, TypeDesc from);
\r
36 Method[] chooseBest(Method[] methods);
\r
39 * Returns a class ref object to the class or null if the
\r
40 * class is not found.
\r
42 ClassRef getClassRef(String className);
\r