< prev index next >
src/java.base/share/classes/jdk/internal/nicl/LibrariesHelper.java
Print this page
*** 28,37 ****
--- 28,38 ----
import java.lang.invoke.MethodHandles.Lookup;
import java.nicl.Library;
import java.nicl.Libraries;
import java.nicl.metadata.NativeHeader;
+ import java.nicl.metadata.NativeStruct;
import java.nicl.metadata.NativeType;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
*** 69,80 ****
// Cache: Struct interface Class -> Impl Class.
private static final ClassValue<Class<?>> STRUCT_IMPLEMENTATIONS = new ClassValue<>() {
@Override
protected Class<?> computeValue(Class<?> c) {
! assert c.isAnnotationPresent(NativeType.class) &&
! c.getAnnotation(NativeType.class).isRecordType();
return generateImpl(c, new StructImplGenerator(c, generateImplName(c), c));
}
};
/**
--- 70,80 ----
// Cache: Struct interface Class -> Impl Class.
private static final ClassValue<Class<?>> STRUCT_IMPLEMENTATIONS = new ClassValue<>() {
@Override
protected Class<?> computeValue(Class<?> c) {
! assert c.isAnnotationPresent(NativeStruct.class);
return generateImpl(c, new StructImplGenerator(c, generateImplName(c), c));
}
};
/**
*** 83,95 ****
* @param c the Struct interface for which to return an implementation class
* @return a class implementing the interface
*/
@SuppressWarnings("unchecked")
public static <T> Class<? extends T> getStructImplClass(Class<T> c) {
! boolean isRecordType = c.isAnnotationPresent(NativeType.class) &&
! c.getAnnotation(NativeType.class).isRecordType();
! if (! isRecordType) {
throw new IllegalArgumentException("Not a Struct interface: " + c);
}
return (Class<? extends T>)STRUCT_IMPLEMENTATIONS.get(c);
}
--- 83,93 ----
* @param c the Struct interface for which to return an implementation class
* @return a class implementing the interface
*/
@SuppressWarnings("unchecked")
public static <T> Class<? extends T> getStructImplClass(Class<T> c) {
! if (!c.isAnnotationPresent(NativeStruct.class)) {
throw new IllegalArgumentException("Not a Struct interface: " + c);
}
return (Class<? extends T>)STRUCT_IMPLEMENTATIONS.get(c);
}
< prev index next >