< 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 >