Made the javac-based Generator compatible with JDK 6.

This commit is contained in:
Ioannis Tsakpinis 2014-09-14 21:56:05 +03:00
parent 59323ff03f
commit 78911cc0d4
19 changed files with 102 additions and 99 deletions

View File

@ -17,20 +17,22 @@
<!-- Compiles the Java generator source code --> <!-- Compiles the Java generator source code -->
<target name="generators" description="Compiles the native method generators"> <target name="generators" description="Compiles the native method generators">
<mkdir dir="${lwjgl.src}/generated/"/> <mkdir dir="${lwjgl.src}/generated/"/>
<mkdir dir="${lwjgl.src.native}/generated/openal"/> <mkdir dir="${lwjgl.src.native}/generated/openal"/>
<mkdir dir="${lwjgl.src.native}/generated/opengl"/> <mkdir dir="${lwjgl.src.native}/generated/opengl"/>
<mkdir dir="${lwjgl.src.native}/generated/opengles"/> <mkdir dir="${lwjgl.src.native}/generated/opengles"/>
<mkdir dir="${lwjgl.src.native}/generated/opencl"/> <mkdir dir="${lwjgl.src.native}/generated/opencl"/>
<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" includes="org/lwjgl/util/generator/**.java" taskname="generator">
<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" source="1.6" target="1.6" includes="org/lwjgl/util/generator/**.java" taskname="generator">
<include name="org/lwjgl/util/generator/openal/**.java"/> <include name="org/lwjgl/util/generator/openal/**.java"/>
<include name="org/lwjgl/util/generator/opengl/**.java"/> <include name="org/lwjgl/util/generator/opengl/**.java"/>
<include name="org/lwjgl/util/generator/opengles/**.java"/> <include name="org/lwjgl/util/generator/opengles/**.java"/>
<include name="org/lwjgl/util/generator/opencl/**.java"/> <include name="org/lwjgl/util/generator/opencl/**.java"/>
<compilerarg value="-Xlint:none"/> <compilerarg value="-Xlint:none"/>
</javac> </javac>
<!-- Compile helper classes used by the templates -->
<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" source="1.7" taskname="generator"> <!-- Compile helper classes used by the templates -->
<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" source="1.5" target="1.5" taskname="generator">
<include name="org/lwjgl/PointerWrapper.java"/> <include name="org/lwjgl/PointerWrapper.java"/>
<include name="org/lwjgl/PointerBuffer.java"/> <include name="org/lwjgl/PointerBuffer.java"/>
<!-- OpenGL --> <!-- OpenGL -->
@ -66,7 +68,7 @@
<!-- Generate OpenAL --> <!-- Generate OpenAL -->
<target name="generate-openal" depends="generators" description="Generates java and native source for AL"> <target name="generate-openal" depends="generators" description="Generates java and native source for AL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.al}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.al}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/>
@ -88,7 +90,7 @@
<!-- Generate OpenAL [DEBUG] --> <!-- Generate OpenAL [DEBUG] -->
<target name="generate-openal-debug" depends="generators" description="Generates java and native source for AL"> <target name="generate-openal-debug" depends="generators" description="Generates java and native source for AL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.al}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.al}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/>
@ -117,7 +119,7 @@
<!-- Generate OpenGL --> <!-- Generate OpenGL -->
<target name="generate-opengl" depends="generators" description="Generates java and native source for GL"> <target name="generate-opengl" depends="generators" description="Generates java and native source for GL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processorGL"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processorGL">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/>
@ -140,7 +142,7 @@
<!-- Generate OpenGL [DEBUG] --> <!-- Generate OpenGL [DEBUG] -->
<target name="generate-opengl-debug" depends="generators" description="Generates debug java and native source for GL"> <target name="generate-opengl-debug" depends="generators" description="Generates debug java and native source for GL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/>
@ -164,7 +166,7 @@
<!-- Generate OpenGL references --> <!-- Generate OpenGL references -->
<target name="generate-opengl-references" depends="generators" description="Generates java and native source for GL"> <target name="generate-opengl-references" depends="generators" description="Generates java and native source for GL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.opengl.GLReferencesGeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.opengl.GLReferencesGeneratorProcessor"/>
@ -182,7 +184,7 @@
<!-- Generate OpenGL context capabilities --> <!-- Generate OpenGL context capabilities -->
<target name="generate-opengl-capabilities" depends="generators" description="Generates java and native source for GL"> <target name="generate-opengl-capabilities" depends="generators" description="Generates java and native source for GL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.opengl.GLGeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.opengl.GLGeneratorProcessor"/>
@ -201,7 +203,7 @@
<!-- Generate OpenGL context capabilities [DEBUG] --> <!-- Generate OpenGL context capabilities [DEBUG] -->
<target name="generate-opengl-capabilities-debug" depends="generators" description="Generates debug java and native source for GL"> <target name="generate-opengl-capabilities-debug" depends="generators" description="Generates debug java and native source for GL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gl}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.opengl.GLGeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.opengl.GLGeneratorProcessor"/>
@ -227,7 +229,7 @@
<!-- Generate OpenGL ES --> <!-- Generate OpenGL ES -->
<target name="generate-opengles" depends="generators" description="Generates java and native source for GL ES"> <target name="generate-opengles" depends="generators" description="Generates java and native source for GL ES">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gles}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gles}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/>
@ -250,7 +252,7 @@
<!-- Generate OpenGL ES [DEBUG] --> <!-- Generate OpenGL ES [DEBUG] -->
<target name="generate-opengles-debug" depends="generators" description="Generates debug java and native source for GL ES"> <target name="generate-opengles-debug" depends="generators" description="Generates debug java and native source for GL ES">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gles}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gles}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/>
@ -274,7 +276,7 @@
<!-- Generate OpenGL ES context capabilities --> <!-- Generate OpenGL ES context capabilities -->
<target name="generate-opengles-capabilities" depends="generators" description="Generates java and native source for GL ES"> <target name="generate-opengles-capabilities" depends="generators" description="Generates java and native source for GL ES">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gles}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gles}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.opengl.GLESGeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.opengl.GLESGeneratorProcessor"/>
@ -293,7 +295,7 @@
<!-- Generate OpenGL ES context capabilities [DEBUG] --> <!-- Generate OpenGL ES context capabilities [DEBUG] -->
<target name="generate-opengles-capabilities-debug" depends="generators" description="Generates debug java and native source for GL ES"> <target name="generate-opengles-capabilities-debug" depends="generators" description="Generates debug java and native source for GL ES">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.gles}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.gles}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.opengl.GLESGeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.opengl.GLESGeneratorProcessor"/>
@ -319,7 +321,7 @@
<!-- Generate OpenCL --> <!-- Generate OpenCL -->
<target name="generate-opencl" depends="generators" description="Generates java and native source for CL"> <target name="generate-opencl" depends="generators" description="Generates java and native source for CL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.cl}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.cl}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/>
@ -342,7 +344,7 @@
<!-- Generate OpenCL [DEBUG] --> <!-- Generate OpenCL [DEBUG] -->
<target name="generate-opencl-debug" depends="generators" description="Generates debug java and native source for CL"> <target name="generate-opencl-debug" depends="generators" description="Generates debug java and native source for CL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.cl}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.cl}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.GeneratorProcessor"/>
@ -366,7 +368,7 @@
<!-- Generate OpenCL capabilities --> <!-- Generate OpenCL capabilities -->
<target name="generate-opencl-capabilities" depends="generators" description="Generates capabilities for CL"> <target name="generate-opencl-capabilities" depends="generators" description="Generates capabilities for CL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.cl}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.cl}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.opencl.CLGeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.opencl.CLGeneratorProcessor"/>
@ -385,7 +387,7 @@
<!-- Generate OpenCL capabilities [DEBUG] --> <!-- Generate OpenCL capabilities [DEBUG] -->
<target name="generate-opencl-capabilities-debug" depends="generators" description="Generates debug capabilities for CL"> <target name="generate-opencl-capabilities-debug" depends="generators" description="Generates debug capabilities for CL">
<javac destdir="${lwjgl.bin}" source="1.7" srcdir="${lwjgl.src.templates.cl}" fork="true" taskname="processor"> <javac destdir="${lwjgl.bin}" source="1.6" target="1.6" srcdir="${lwjgl.src.templates.cl}" fork="true" taskname="processor">
<compilerarg value="-proc:only"/> <compilerarg value="-proc:only"/>
<compilerarg value="-processor"/> <compilerarg value="-processor"/>
<compilerarg value="org.lwjgl.util.generator.opencl.CLGeneratorProcessor"/> <compilerarg value="org.lwjgl.util.generator.opencl.CLGeneratorProcessor"/>

View File

@ -51,7 +51,7 @@ import javax.tools.Diagnostic;
* @version $Revision$ $Id$ * @version $Revision$ $Id$
*/ */
@SupportedAnnotationTypes({ "*" }) @SupportedAnnotationTypes({ "*" })
@SupportedSourceVersion(SourceVersion.RELEASE_7) @SupportedSourceVersion(SourceVersion.RELEASE_6)
@SupportedOptions({ "binpath", "typemap", "generatechecks", "contextspecific" }) @SupportedOptions({ "binpath", "typemap", "generatechecks", "contextspecific" })
public class GeneratorProcessor extends AbstractProcessor { public class GeneratorProcessor extends AbstractProcessor {
@ -87,7 +87,7 @@ public class GeneratorProcessor extends AbstractProcessor {
} }
first_round = false; first_round = false;
return true; return true;
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { } catch (Exception e) {
if ( lastFile == null ) { if ( lastFile == null ) {
throw new RuntimeException(e); throw new RuntimeException(e);
} else { } else {

View File

@ -45,7 +45,7 @@ import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.*; import javax.lang.model.element.*;
import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror; import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.ElementKindVisitor7; import javax.lang.model.util.ElementKindVisitor6;
import javax.tools.Diagnostic; import javax.tools.Diagnostic;
import javax.tools.Diagnostic.Kind; import javax.tools.Diagnostic.Kind;
import javax.tools.FileObject; import javax.tools.FileObject;
@ -57,7 +57,7 @@ import javax.tools.StandardLocation;
* @author elias_naur <elias_naur@users.sourceforge.net> * @author elias_naur <elias_naur@users.sourceforge.net>
* @version $Revision$ $Id$ * @version $Revision$ $Id$
*/ */
public class GeneratorVisitor extends ElementKindVisitor7<Void, Void> { public class GeneratorVisitor extends ElementKindVisitor6<Void, Void> {
private final ProcessingEnvironment env; private final ProcessingEnvironment env;
private final TypeMap type_map; private final TypeMap type_map;
@ -266,7 +266,7 @@ public class GeneratorVisitor extends ElementKindVisitor7<Void, Void> {
native_writer.print("JNIEXPORT void JNICALL " + Utils.getQualifiedNativeMethodName(qualified_interface_name, Utils.STUB_INITIALIZER_NAME)); native_writer.print("JNIEXPORT void JNICALL " + Utils.getQualifiedNativeMethodName(qualified_interface_name, Utils.STUB_INITIALIZER_NAME));
native_writer.println("(JNIEnv *env, jclass clazz) {"); native_writer.println("(JNIEnv *env, jclass clazz) {");
native_writer.println("\tJavaMethodAndExtFunction functions[] = {"); native_writer.println("\tJavaMethodAndExtFunction functions[] = {");
RegisterStubsGenerator.generateMethodsNativeStubBind(env, native_writer, d, generate_error_checks, context_specific); RegisterStubsGenerator.generateMethodsNativeStubBind(native_writer, d, generate_error_checks, context_specific);
native_writer.println("\t};"); native_writer.println("\t};");
native_writer.println("\tint num_functions = NUMFUNCTIONS(functions);"); native_writer.println("\tint num_functions = NUMFUNCTIONS(functions);");
native_writer.print("\t"); native_writer.print("\t");

View File

@ -73,7 +73,7 @@ public class JavaMethodsGenerator {
if ( method.getAnnotation(GenerateAutos.class) != null ) { if ( method.getAnnotation(GenerateAutos.class) != null ) {
printMethodWithMultiType(env, type_map, writer, interface_decl, method, TypeInfo.getDefaultTypeInfoMap(method), Mode.AUTOS, generate_error_checks, context_specific); printMethodWithMultiType(env, type_map, writer, interface_decl, method, TypeInfo.getDefaultTypeInfoMap(method), Mode.AUTOS, generate_error_checks, context_specific);
} }
Collection<Map<VariableElement, TypeInfo>> cross_product = TypeInfo.getTypeInfoCrossProduct(env, type_map, method); Collection<Map<VariableElement, TypeInfo>> cross_product = TypeInfo.getTypeInfoCrossProduct(type_map, method);
for ( Map<VariableElement, TypeInfo> typeinfos_instance : cross_product ) { for ( Map<VariableElement, TypeInfo> typeinfos_instance : cross_product ) {
printMethodWithMultiType(env, type_map, writer, interface_decl, method, typeinfos_instance, Mode.NORMAL, generate_error_checks, context_specific); printMethodWithMultiType(env, type_map, writer, interface_decl, method, typeinfos_instance, Mode.NORMAL, generate_error_checks, context_specific);
} }
@ -115,7 +115,7 @@ public class JavaMethodsGenerator {
writer.print(Utils.BUFFER_OBJECT_METHOD_POSTFIX); writer.print(Utils.BUFFER_OBJECT_METHOD_POSTFIX);
} }
writer.print("("); writer.print("(");
boolean first_parameter = generateParametersJava(env, writer, method, TypeInfo.getDefaultTypeInfoMap(method), true, true, mode); boolean first_parameter = generateParametersJava(writer, method, TypeInfo.getDefaultTypeInfoMap(method), true, true, mode);
if ( context_specific ) { if ( context_specific ) {
if ( !first_parameter ) { if ( !first_parameter ) {
writer.print(", "); writer.print(", ");
@ -125,7 +125,7 @@ public class JavaMethodsGenerator {
writer.println(");"); writer.println(");");
} }
private static boolean generateParametersJava(ProcessingEnvironment env, PrintWriter writer, ExecutableElement method, Map<VariableElement, TypeInfo> typeinfos_instance, boolean native_stub, final boolean printTypes, Mode mode) { private static boolean generateParametersJava(PrintWriter writer, ExecutableElement method, Map<VariableElement, TypeInfo> typeinfos_instance, boolean native_stub, final boolean printTypes, Mode mode) {
boolean first_parameter = true; boolean first_parameter = true;
for ( VariableElement param : method.getParameters() ) { for ( VariableElement param : method.getParameters() ) {
if ( native_stub && (param.getAnnotation(Helper.class) != null && !param.getAnnotation(Helper.class).passToNative()) ) { if ( native_stub && (param.getAnnotation(Helper.class) != null && !param.getAnnotation(Helper.class).passToNative()) ) {
@ -281,7 +281,7 @@ public class JavaMethodsGenerator {
method_name = getPostfixStrippedName(type_map, interface_decl, method); method_name = getPostfixStrippedName(type_map, interface_decl, method);
} }
writer.print(" " + method_name + "("); writer.print(" " + method_name + "(");
generateParametersJava(env, writer, method, typeinfos_instance, false, true, mode); generateParametersJava(writer, method, typeinfos_instance, false, true, mode);
writer.println(") {"); writer.println(") {");
final TypeMirror result_type = Utils.getMethodReturnType(method); final TypeMirror result_type = Utils.getMethodReturnType(method);
@ -295,7 +295,7 @@ public class JavaMethodsGenerator {
} }
writer.print(reuse_annotation.value() + "." + (reuse_annotation.method().length() > 0 ? reuse_annotation.method() : method_name) + "("); writer.print(reuse_annotation.value() + "." + (reuse_annotation.method().length() > 0 ? reuse_annotation.method() : method_name) + "(");
generateParametersJava(env, writer, method, typeinfos_instance, false, false, mode); generateParametersJava(writer, method, typeinfos_instance, false, false, mode);
writer.println(");\n\t}"); writer.println(");\n\t}");
return; return;
} }
@ -441,7 +441,7 @@ public class JavaMethodsGenerator {
return false; return false;
} }
private static final Map<String, Pattern> postfixPatterns = new HashMap<>(); private static final Map<String, Pattern> postfixPatterns = new HashMap<String, Pattern>();
private static Pattern getPostfixPattern(String regex) { private static Pattern getPostfixPattern(String regex) {
Pattern pattern = postfixPatterns.get(regex); Pattern pattern = postfixPatterns.get(regex);
@ -697,7 +697,7 @@ public class JavaMethodsGenerator {
for ( VariableElement param : method.getParameters() ) { for ( VariableElement param : method.getParameters() ) {
Class java_type = Utils.getJavaType(param.asType()); Class java_type = Utils.getJavaType(param.asType());
if ( java_type.isArray() || (Utils.isAddressableType((Class)java_type) if ( java_type.isArray() || (Utils.isAddressableType(java_type)
&& (mode != Mode.BUFFEROBJECT || param.getAnnotation(BufferObject.class) == null) && (mode != Mode.BUFFEROBJECT || param.getAnnotation(BufferObject.class) == null)
&& (mode != Mode.AUTOS || getAutoTypeParameter(method, param) == null) && (mode != Mode.AUTOS || getAutoTypeParameter(method, param) == null)
&& param.getAnnotation(Result.class) == null && param.getAnnotation(Result.class) == null
@ -710,25 +710,23 @@ public class JavaMethodsGenerator {
can_be_null = check_annotation.canBeNull(); can_be_null = check_annotation.canBeNull();
} }
if ( (Buffer.class.isAssignableFrom(java_type) || PointerBuffer.class.isAssignableFrom(java_type)) && param.getAnnotation(Constant.class) == null ) { if ( (Buffer.class.isAssignableFrom(java_type) || PointerBuffer.class.isAssignableFrom(java_type)) && param.getAnnotation(Constant.class) == null ) {
boolean out_parameter = param.getAnnotation(OutParameter.class) != null;
TypeInfo typeinfo = typeinfos.get(param); TypeInfo typeinfo = typeinfos.get(param);
printParameterCheck(writer, method, param.getSimpleName().toString(), typeinfo.getType().getSimpleName(), check_value, can_be_null, param.getAnnotation(NullTerminated.class), out_parameter, generate_error_checks); printParameterCheck(writer, method, param.getSimpleName().toString(), typeinfo.getType().getSimpleName(), check_value, can_be_null, param.getAnnotation(NullTerminated.class), generate_error_checks);
} else if ( String.class.equals(java_type) ) { } else if ( String.class.equals(java_type) ) {
if ( !can_be_null ) { if ( !can_be_null ) {
writer.println("\t\tBufferChecks.checkNotNull(" + param.getSimpleName() + ");"); writer.println("\t\tBufferChecks.checkNotNull(" + param.getSimpleName() + ");");
} }
} else if ( java_type.isArray() ) { } else if ( java_type.isArray() ) {
final TypeInfo typeinfo = typeinfos.get(param); printArrayParameterCheck(writer, param.getSimpleName().toString(), check_value, can_be_null);
printArrayParameterCheck(writer, param.getSimpleName().toString(), typeinfo.getType().getSimpleName(), check_value, can_be_null);
} }
} }
} }
if ( method.getAnnotation(CachedResult.class) != null ) { if ( method.getAnnotation(CachedResult.class) != null ) {
printParameterCheck(writer, method, Utils.CACHED_BUFFER_NAME, null, null, true, null, false, generate_error_checks); printParameterCheck(writer, method, Utils.CACHED_BUFFER_NAME, null, null, true, null, generate_error_checks);
} }
} }
private static void printParameterCheck(PrintWriter writer, ExecutableElement method, String name, String type, String check_value, boolean can_be_null, NullTerminated null_terminated, boolean out_parameter, boolean generate_error_checks) { private static void printParameterCheck(PrintWriter writer, ExecutableElement method, String name, String type, String check_value, boolean can_be_null, NullTerminated null_terminated, boolean generate_error_checks) {
String tabs; String tabs;
if ( can_be_null ) { if ( can_be_null ) {
writer.print("\t\tif (" + name + " != null)"); writer.print("\t\tif (" + name + " != null)");
@ -773,7 +771,7 @@ public class JavaMethodsGenerator {
} }
} }
private static void printArrayParameterCheck(PrintWriter writer, String name, String type, String check_value, boolean can_be_null) { private static void printArrayParameterCheck(PrintWriter writer, String name, String check_value, boolean can_be_null) {
String tabs; String tabs;
if ( can_be_null ) { if ( can_be_null ) {
writer.println("\t\tif (" + name + " != null)"); writer.println("\t\tif (" + name + " != null)");

View File

@ -63,7 +63,7 @@ public class JavaTypeTranslator extends SimpleTypeVisitor6<Void, Void> {
} finally { } finally {
if ( type == null ) { if ( type == null ) {
if ( componentType instanceof PrimitiveType ) { if ( componentType instanceof PrimitiveType ) {
type = getPrimitiveArrayClassFromKind(((PrimitiveType)componentType).getKind()); type = getPrimitiveArrayClassFromKind(componentType.getKind());
} else { } else {
throw new RuntimeException(t + " is not allowed"); throw new RuntimeException(t + " is not allowed");
} }

View File

@ -281,14 +281,14 @@ public class NativeMethodStubsGenerator {
for ( VariableElement param : method.getParameters() ) { for ( VariableElement param : method.getParameters() ) {
final Constant constant_annotation = param.getAnnotation(Constant.class); final Constant constant_annotation = param.getAnnotation(Constant.class);
if ( param.getAnnotation(Result.class) == null && (constant_annotation == null || !constant_annotation.isNative()) && Utils.isAddressableType(param.asType()) ) if ( param.getAnnotation(Result.class) == null && (constant_annotation == null || !constant_annotation.isNative()) && Utils.isAddressableType(param.asType()) )
generateBufferParameterAddress(type_map, writer, method, param, mode); generateBufferParameterAddress(type_map, writer, param, mode);
} }
} }
private static boolean strLoopDeclared; private static boolean strLoopDeclared;
private static boolean ptrLoopDeclared; private static boolean ptrLoopDeclared;
private static void generateBufferParameterAddress(TypeMap type_map, PrintWriter writer, ExecutableElement method, VariableElement param, Mode mode) { private static void generateBufferParameterAddress(TypeMap type_map, PrintWriter writer, VariableElement param, Mode mode) {
final Check check_annotation = param.getAnnotation(Check.class); final Check check_annotation = param.getAnnotation(Check.class);
final PointerArray array_annotation = param.getAnnotation(PointerArray.class); final PointerArray array_annotation = param.getAnnotation(PointerArray.class);
final Class java_type = Utils.getJavaType(param.asType()); final Class java_type = Utils.getJavaType(param.asType());

View File

@ -110,11 +110,11 @@ public class NativeTypeTranslator extends SimpleTypeVisitor6<Void, Void> {
if ( CharSequence.class.isAssignableFrom(type) ) { if ( CharSequence.class.isAssignableFrom(type) ) {
is_indirect = true; is_indirect = true;
native_types = new ArrayList<>(); native_types = new ArrayList<Class>();
native_types.add(type_map.getStringArrayType()); native_types.add(type_map.getStringArrayType());
} else if ( Buffer.class.isAssignableFrom(type) ) { } else if ( Buffer.class.isAssignableFrom(type) ) {
is_indirect = true; is_indirect = true;
native_types = new ArrayList<>(); native_types = new ArrayList<Class>();
native_types.add(type_map.getByteBufferArrayType()); native_types.add(type_map.getByteBufferArrayType());
} else if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(type) ) { } else if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(type) ) {
is_indirect = false; is_indirect = false;
@ -163,16 +163,16 @@ public class NativeTypeTranslator extends SimpleTypeVisitor6<Void, Void> {
Class<?> c = getClassFromType(t); Class<?> c = getClassFromType(t);
if ( String.class.equals(c) ) { if ( String.class.equals(c) ) {
native_types = new ArrayList<>(); native_types = new ArrayList<Class>();
native_types.add(type_map.getStringElementType()); native_types.add(type_map.getStringElementType());
} else if ( Buffer.class.equals(c) ) { } else if ( Buffer.class.equals(c) ) {
native_types = new ArrayList<>(); native_types = new ArrayList<Class>();
native_types.add(type_map.getVoidType()); native_types.add(type_map.getVoidType());
} else if ( Buffer.class.isAssignableFrom(c) || PointerBuffer.class.isAssignableFrom(c) ) { } else if ( Buffer.class.isAssignableFrom(c) || PointerBuffer.class.isAssignableFrom(c) ) {
TypeKind kind = getPrimitiveKindFromBufferClass(c); TypeKind kind = getPrimitiveKindFromBufferClass(c);
getNativeTypeFromAnnotatedPrimitiveType(kind); getNativeTypeFromAnnotatedPrimitiveType(kind);
} else if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(c) ) { } else if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(c) ) {
native_types = new ArrayList<>(); native_types = new ArrayList<Class>();
native_types.add(PointerWrapper.class); native_types.add(PointerWrapper.class);
is_indirect = false; is_indirect = false;
@ -191,7 +191,7 @@ public class NativeTypeTranslator extends SimpleTypeVisitor6<Void, Void> {
// See ARB_debug_label.glObjectPtrLabel // See ARB_debug_label.glObjectPtrLabel
Class<?> c = getClassFromType(t); Class<?> c = getClassFromType(t);
if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(c) ) { if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(c) ) {
native_types = new ArrayList<>(); native_types = new ArrayList<Class>();
native_types.add(PointerWrapper.class); native_types.add(PointerWrapper.class);
is_indirect = false; is_indirect = false;
@ -227,7 +227,7 @@ public class NativeTypeTranslator extends SimpleTypeVisitor6<Void, Void> {
} }
private List<Class> translateAnnotations() { private List<Class> translateAnnotations() {
List<Class> result = new ArrayList<>(); List<Class> result = new ArrayList<Class>();
for ( AnnotationMirror annotation : Utils.getSortedAnnotations(declaration.getAnnotationMirrors()) ) { for ( AnnotationMirror annotation : Utils.getSortedAnnotations(declaration.getAnnotationMirrors()) ) {
Class translated_result = translateAnnotation(annotation); Class translated_result = translateAnnotation(annotation);
if ( translated_result != null ) { if ( translated_result != null ) {

View File

@ -43,7 +43,7 @@ import java.util.Arrays;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import javax.annotation.processing.ProcessingEnvironment; import java.util.regex.Pattern;
import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement; import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement; import javax.lang.model.element.VariableElement;
@ -51,7 +51,7 @@ import javax.lang.model.type.TypeMirror;
public class RegisterStubsGenerator { public class RegisterStubsGenerator {
public static void generateMethodsNativeStubBind(ProcessingEnvironment env, PrintWriter writer, TypeElement d, boolean generate_error_checks, boolean context_specific) { public static void generateMethodsNativeStubBind(PrintWriter writer, TypeElement d, boolean generate_error_checks, boolean context_specific) {
Iterator<? extends ExecutableElement> it = Utils.getMethods(d).iterator(); Iterator<? extends ExecutableElement> it = Utils.getMethods(d).iterator();
while ( it.hasNext() ) { while ( it.hasNext() ) {
ExecutableElement method = it.next(); ExecutableElement method = it.next();
@ -79,8 +79,8 @@ public class RegisterStubsGenerator {
writer.println(); writer.println();
} }
private static String getTypeSignature(TypeMirror type, boolean add_position_signature) { private static String getTypeSignature(TypeMirror type) {
SignatureTranslator v = new SignatureTranslator(add_position_signature); SignatureTranslator v = new SignatureTranslator();
type.accept(v, null); type.accept(v, null);
return v.getSignature(); return v.getSignature();
} }
@ -101,7 +101,7 @@ public class RegisterStubsGenerator {
if ( mode == Mode.BUFFEROBJECT && param.getAnnotation(BufferObject.class) != null ) { if ( mode == Mode.BUFFEROBJECT && param.getAnnotation(BufferObject.class) != null ) {
signature += "J"; signature += "J";
} else { } else {
signature += getTypeSignature(param.asType(), true); signature += getTypeSignature(param.asType());
} }
} }
@ -114,7 +114,7 @@ public class RegisterStubsGenerator {
signature += "J"; signature += "J";
} }
final String result_type_signature = isNIOBuffer ? "Ljava/nio/ByteBuffer;" : getTypeSignature(result_type, false); final String result_type_signature = isNIOBuffer ? "Ljava/nio/ByteBuffer;" : getTypeSignature(result_type);
if ( cached_result_annotation != null ) { if ( cached_result_annotation != null ) {
signature += result_type_signature; signature += result_type_signature;
} }
@ -124,6 +124,8 @@ public class RegisterStubsGenerator {
return signature; return signature;
} }
private static final Pattern GL_PATTERN = Pattern.compile("gl");
private static void printMethodNativeStubBind(PrintWriter writer, TypeElement d, ExecutableElement method, Platform platform, Mode mode, boolean has_more, boolean generate_error_checks, boolean context_specific) { private static void printMethodNativeStubBind(PrintWriter writer, TypeElement d, ExecutableElement method, Platform platform, Mode mode, boolean has_more, boolean generate_error_checks, boolean context_specific) {
writer.print("\t\t{\"" + Utils.getSimpleNativeMethodName(method, generate_error_checks, context_specific)); writer.print("\t\t{\"" + Utils.getSimpleNativeMethodName(method, generate_error_checks, context_specific));
if ( mode == Mode.BUFFEROBJECT ) { if ( mode == Mode.BUFFEROBJECT ) {
@ -137,7 +139,7 @@ public class RegisterStubsGenerator {
final Alternate alt_annotation = method.getAnnotation(Alternate.class); final Alternate alt_annotation = method.getAnnotation(Alternate.class);
final String methodName = alt_annotation == null ? method.getSimpleName().toString() : alt_annotation.value(); final String methodName = alt_annotation == null ? method.getSimpleName().toString() : alt_annotation.value();
String opengl_handle_name = methodName.replaceFirst("gl", platform.getPrefix()); String opengl_handle_name = GL_PATTERN.matcher(methodName).replaceFirst(platform.getPrefix());
writer.print(", \"" + opengl_handle_name + "\", (void *)&" + methodName + ", " + (method.getAnnotation(Optional.class) == null ? "false" : "true") + "}"); writer.print(", \"" + opengl_handle_name + "\", (void *)&" + methodName + ", " + (method.getAnnotation(Optional.class) == null ? "false" : "true") + "}");
if ( has_more ) { if ( has_more ) {
writer.println(","); writer.println(",");

View File

@ -42,9 +42,11 @@ package org.lwjgl.util.generator;
*/ */
import org.lwjgl.PointerBuffer; import org.lwjgl.PointerBuffer;
import org.lwjgl.PointerWrapper;
import java.nio.Buffer; import java.nio.Buffer;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.regex.Pattern;
import javax.lang.model.type.ArrayType; import javax.lang.model.type.ArrayType;
import javax.lang.model.type.DeclaredType; import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.NoType; import javax.lang.model.type.NoType;
@ -52,15 +54,14 @@ import javax.lang.model.type.PrimitiveType;
import javax.lang.model.util.SimpleTypeVisitor6; import javax.lang.model.util.SimpleTypeVisitor6;
class SignatureTranslator extends SimpleTypeVisitor6<Void, Void> { class SignatureTranslator extends SimpleTypeVisitor6<Void, Void> {
private final boolean add_position_signature;
private final StringBuilder signature = new StringBuilder(); private final StringBuilder signature = new StringBuilder();
SignatureTranslator(boolean add_position_signature) { SignatureTranslator() {}
this.add_position_signature = add_position_signature;
} private static final Pattern DOT_PATTERN = Pattern.compile("\\.");
private static String getNativeNameFromClassName(String class_name) { private static String getNativeNameFromClassName(String class_name) {
return class_name.replaceAll("\\.", "/"); return DOT_PATTERN.matcher(class_name).replaceAll("/");
} }
public String getSignature() { public String getSignature() {
@ -74,7 +75,7 @@ class SignatureTranslator extends SimpleTypeVisitor6<Void, Void> {
signature.append("J"); signature.append("J");
else if ( Buffer.class.isAssignableFrom(type) ) else if ( Buffer.class.isAssignableFrom(type) )
signature.append("[Ljava/nio/ByteBuffer;"); signature.append("[Ljava/nio/ByteBuffer;");
else if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(type) ) else if ( PointerWrapper.class.isAssignableFrom(type) )
signature.append("[L" + getNativeNameFromClassName(type.getName()) + ";"); signature.append("[L" + getNativeNameFromClassName(type.getName()) + ";");
else else
throw new RuntimeException(t + " is not allowed"); throw new RuntimeException(t + " is not allowed");
@ -84,7 +85,7 @@ class SignatureTranslator extends SimpleTypeVisitor6<Void, Void> {
private void visitClassType(DeclaredType t) { private void visitClassType(DeclaredType t) {
Class type = NativeTypeTranslator.getClassFromType(t); Class type = NativeTypeTranslator.getClassFromType(t);
if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(type) || (Utils.isAddressableType(type) && !String.class.equals(type)) ) if ( PointerWrapper.class.isAssignableFrom(type) || (Utils.isAddressableType(type) && !String.class.equals(type)) )
signature.append("J"); signature.append("J");
else { else {
String type_name; String type_name;
@ -110,7 +111,7 @@ class SignatureTranslator extends SimpleTypeVisitor6<Void, Void> {
private void visitInterfaceType(DeclaredType t) { private void visitInterfaceType(DeclaredType t) {
Class type = NativeTypeTranslator.getClassFromType(t); Class type = NativeTypeTranslator.getClassFromType(t);
if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(type) ) if ( PointerWrapper.class.isAssignableFrom(type) )
signature.append("J"); signature.append("J");
else else
throw new RuntimeException(t + " is not allowed"); throw new RuntimeException(t + " is not allowed");

View File

@ -45,7 +45,6 @@ import org.lwjgl.util.generator.opengl.GLvoid;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.nio.*; import java.nio.*;
import java.util.*; import java.util.*;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.VariableElement; import javax.lang.model.element.VariableElement;
@ -150,7 +149,7 @@ public class TypeInfo {
} }
public static Map<VariableElement, TypeInfo> getDefaultTypeInfoMap(ExecutableElement method) { public static Map<VariableElement, TypeInfo> getDefaultTypeInfoMap(ExecutableElement method) {
Map<VariableElement, TypeInfo> map = new HashMap<>(); Map<VariableElement, TypeInfo> map = new HashMap<VariableElement, TypeInfo>();
for ( VariableElement param : method.getParameters() ) { for ( VariableElement param : method.getParameters() ) {
TypeInfo type_info = getDefaultTypeInfo(param.asType()); TypeInfo type_info = getDefaultTypeInfo(param.asType());
map.put(param, type_info); map.put(param, type_info);
@ -158,18 +157,18 @@ public class TypeInfo {
return map; return map;
} }
private static Collection<TypeInfo> getTypeInfos(ProcessingEnvironment env, TypeMap type_map, VariableElement param) { private static Collection<TypeInfo> getTypeInfos(TypeMap type_map, VariableElement param) {
List<? extends AnnotationMirror> annotations = param.getAnnotationMirrors(); List<? extends AnnotationMirror> annotations = param.getAnnotationMirrors();
GLvoid void_annotation = param.getAnnotation(GLvoid.class); GLvoid void_annotation = param.getAnnotation(GLvoid.class);
Map<Class, TypeInfo> types = new HashMap<>(); Map<Class, TypeInfo> types = new HashMap<Class, TypeInfo>();
Collection<TypeInfo> multityped_result = new ArrayList<>(); Collection<TypeInfo> multityped_result = new ArrayList<TypeInfo>();
boolean add_default_type = true; boolean add_default_type = true;
for ( AnnotationMirror annotation : annotations ) { for ( AnnotationMirror annotation : annotations ) {
NativeType native_type_annotation = NativeTypeTranslator.getAnnotation(annotation, NativeType.class); NativeType native_type_annotation = NativeTypeTranslator.getAnnotation(annotation, NativeType.class);
if ( native_type_annotation != null ) { if ( native_type_annotation != null ) {
Class<? extends Annotation> annotation_type = NativeTypeTranslator.getClassFromType(annotation.getAnnotationType()); Class<? extends Annotation> annotation_type = NativeTypeTranslator.getClassFromType(annotation.getAnnotationType());
/*env.getMessager().printMessage(Diagnostic.Kind.NOTE, "annotation_type " + annotation_type, param, annotation);*/ /*env.getMessager().printMessage(Diagnostic.Kind.NOTE, "annotation_type " + annotation_type, param, annotation);*/
Signedness signedness = type_map.getSignednessFromType(annotation_type); Signedness signedness = type_map.getSignednessFromType(annotation_type);
Class inverse_type = type_map.getInverseType(annotation_type); Class inverse_type = type_map.getInverseType(annotation_type);
String auto_type = type_map.getAutoTypeFromAnnotation(annotation); String auto_type = type_map.getAutoTypeFromAnnotation(annotation);
@ -201,7 +200,7 @@ public class TypeInfo {
} }
if ( add_default_type ) { if ( add_default_type ) {
TypeInfo default_type_info = getDefaultTypeInfo(param.asType()); TypeInfo default_type_info = getDefaultTypeInfo(param.asType());
Collection<TypeInfo> result = new ArrayList<>(); Collection<TypeInfo> result = new ArrayList<TypeInfo>();
result.add(default_type_info); result.add(default_type_info);
return result; return result;
} else { } else {
@ -209,19 +208,19 @@ public class TypeInfo {
} }
} }
private static Map<VariableElement, Collection<TypeInfo>> getTypeInfoMap(ProcessingEnvironment env, TypeMap type_map, ExecutableElement method) { private static Map<VariableElement, Collection<TypeInfo>> getTypeInfoMap(TypeMap type_map, ExecutableElement method) {
Map<VariableElement, Collection<TypeInfo>> map = new HashMap<>(); Map<VariableElement, Collection<TypeInfo>> map = new HashMap<VariableElement, Collection<TypeInfo>>();
for ( VariableElement param : method.getParameters() ) { for ( VariableElement param : method.getParameters() ) {
Collection<TypeInfo> types = getTypeInfos(env, type_map, param); Collection<TypeInfo> types = getTypeInfos(type_map, param);
map.put(param, types); map.put(param, types);
} }
return map; return map;
} }
public static Collection<Map<VariableElement, TypeInfo>> getTypeInfoCrossProduct(ProcessingEnvironment env, TypeMap type_map, ExecutableElement method) { public static Collection<Map<VariableElement, TypeInfo>> getTypeInfoCrossProduct(TypeMap type_map, ExecutableElement method) {
List<? extends VariableElement> parameter_collection = method.getParameters(); List<? extends VariableElement> parameter_collection = method.getParameters();
Collection<Map<VariableElement, TypeInfo>> cross_product = new ArrayList<>(); Collection<Map<VariableElement, TypeInfo>> cross_product = new ArrayList<Map<VariableElement, TypeInfo>>();
getCrossProductRecursive(0, parameter_collection, getTypeInfoMap(env, type_map, method), getCrossProductRecursive(0, parameter_collection, getTypeInfoMap(type_map, method),
new HashMap<VariableElement, TypeInfo>(), cross_product); new HashMap<VariableElement, TypeInfo>(), cross_product);
return cross_product; return cross_product;
} }
@ -238,7 +237,7 @@ public class TypeInfo {
Collection<TypeInfo> typeinfos = typeinfos_map.get(param); Collection<TypeInfo> typeinfos = typeinfos_map.get(param);
if ( typeinfos != null ) { if ( typeinfos != null ) {
for ( TypeInfo typeinfo : typeinfos ) { for ( TypeInfo typeinfo : typeinfos ) {
Map<VariableElement, TypeInfo> instance = new HashMap<>(current_instance); Map<VariableElement, TypeInfo> instance = new HashMap<VariableElement, TypeInfo>(current_instance);
instance.put(param, typeinfo); instance.put(param, typeinfo);
getCrossProductRecursive(index + 1, parameters, typeinfos_map, instance, cross_product); getCrossProductRecursive(index + 1, parameters, typeinfos_map, instance, cross_product);
} }

View File

@ -39,6 +39,7 @@ package org.lwjgl.util.generator;
* @version $Revision$ $Id$ * @version $Revision$ $Id$
*/ */
import org.lwjgl.PointerBuffer; import org.lwjgl.PointerBuffer;
import org.lwjgl.PointerWrapper;
import org.lwjgl.util.generator.opengl.GLboolean; import org.lwjgl.util.generator.opengl.GLboolean;
import org.lwjgl.util.generator.opengl.GLchar; import org.lwjgl.util.generator.opengl.GLchar;
import org.lwjgl.util.generator.opengl.GLcharARB; import org.lwjgl.util.generator.opengl.GLcharARB;
@ -48,6 +49,7 @@ import java.io.PrintWriter;
import java.nio.Buffer; import java.nio.Buffer;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.*; import java.util.*;
import java.util.regex.Pattern;
import javax.annotation.processing.ProcessingEnvironment; import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.*; import javax.lang.model.element.*;
import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeKind;
@ -111,8 +113,7 @@ public class Utils {
public int compare(AnnotationMirror a1, AnnotationMirror a2) { public int compare(AnnotationMirror a1, AnnotationMirror a2) {
String n1 = a1.getAnnotationType().toString(); String n1 = a1.getAnnotationType().toString();
String n2 = a2.getAnnotationType().toString(); String n2 = a2.getAnnotationType().toString();
int result = n1.compareTo(n2); return n1.compareTo(n2);
return result;
} }
public boolean equals(AnnotationMirror a1, AnnotationMirror a2) { public boolean equals(AnnotationMirror a1, AnnotationMirror a2) {
@ -121,7 +122,7 @@ public class Utils {
} }
public static List<AnnotationMirror> getSortedAnnotations(List<? extends AnnotationMirror> annotations) { public static List<AnnotationMirror> getSortedAnnotations(List<? extends AnnotationMirror> annotations) {
List<AnnotationMirror> annotation_list = new ArrayList<>(annotations); List<AnnotationMirror> annotation_list = new ArrayList<AnnotationMirror>(annotations);
Collections.sort(annotation_list, new AnnotationMirrorComparator()); Collections.sort(annotation_list, new AnnotationMirrorComparator());
return annotation_list; return annotation_list;
} }
@ -137,7 +138,7 @@ public class Utils {
public static boolean isAddressableType(Class type) { public static boolean isAddressableType(Class type) {
if ( type.isArray() ) { if ( type.isArray() ) {
final Class component_type = type.getComponentType(); final Class component_type = type.getComponentType();
return isAddressableTypeImpl(component_type) || org.lwjgl.PointerWrapper.class.isAssignableFrom(component_type); return isAddressableTypeImpl(component_type) || PointerWrapper.class.isAssignableFrom(component_type);
} }
return isAddressableTypeImpl(type); return isAddressableTypeImpl(type);
} }
@ -230,7 +231,7 @@ public class Utils {
// DISABLED: We always generate indirect methods. (affects OpenAL only at the time of this change) // DISABLED: We always generate indirect methods. (affects OpenAL only at the time of this change)
public static boolean isMethodIndirect(boolean generate_error_checks, boolean context_specific, ExecutableElement method) { public static boolean isMethodIndirect(boolean generate_error_checks, boolean context_specific, ExecutableElement method) {
/* /*
for (VariableElement param : method.getParameters()) { for (VariableElement param : method.getParameters()) {
if (isAddressableType(param.getType()) || getParameterAutoAnnotation(param) != null || if (isAddressableType(param.getType()) || getParameterAutoAnnotation(param) != null ||
param.getAnnotation(Constant.class) != null) param.getAnnotation(Constant.class) != null)
return true; return true;
@ -243,8 +244,10 @@ public class Utils {
return true; return true;
} }
private static final Pattern DOT_PATTERN = Pattern.compile("\\.");
public static String getNativeQualifiedName(String qualified_name) { public static String getNativeQualifiedName(String qualified_name) {
return qualified_name.replaceAll("\\.", "_"); return DOT_PATTERN.matcher(qualified_name).replaceAll("_");
} }
public static String getQualifiedNativeMethodName(String qualified_class_name, String method_name) { public static String getQualifiedNativeMethodName(String qualified_class_name, String method_name) {
@ -493,13 +496,11 @@ public class Utils {
} }
public static Collection<VariableElement> getFields(TypeElement d) { public static Collection<VariableElement> getFields(TypeElement d) {
Collection<VariableElement> fields = ElementFilter.fieldsIn(new HashSet(d.getEnclosedElements())); return ElementFilter.fieldsIn(new HashSet(d.getEnclosedElements()));
return fields;
} }
public static Collection<ExecutableElement> getMethods(TypeElement d) { public static Collection<ExecutableElement> getMethods(TypeElement d) {
Collection<ExecutableElement> fields = ElementFilter.methodsIn(new HashSet(d.getEnclosedElements())); return ElementFilter.methodsIn(new HashSet(d.getEnclosedElements()));
return fields;
} }
} }

View File

@ -57,7 +57,7 @@ public class ALTypeMap implements TypeMap {
private static final Map<Class, TypeKind> native_types_to_primitive; private static final Map<Class, TypeKind> native_types_to_primitive;
static { static {
native_types_to_primitive = new HashMap<>(); native_types_to_primitive = new HashMap<Class, TypeKind>();
native_types_to_primitive.put(ALboolean.class, TypeKind.BOOLEAN); native_types_to_primitive.put(ALboolean.class, TypeKind.BOOLEAN);
native_types_to_primitive.put(ALbyte.class, TypeKind.BYTE); native_types_to_primitive.put(ALbyte.class, TypeKind.BYTE);
native_types_to_primitive.put(ALenum.class, TypeKind.INT); native_types_to_primitive.put(ALenum.class, TypeKind.INT);

View File

@ -50,7 +50,7 @@ import javax.lang.model.util.ElementFilter;
* @author Spasi * @author Spasi
*/ */
@SupportedAnnotationTypes({ "*" }) @SupportedAnnotationTypes({ "*" })
@SupportedSourceVersion(SourceVersion.RELEASE_7) @SupportedSourceVersion(SourceVersion.RELEASE_6)
@SupportedOptions({ "generatechecks", "contextspecific" }) @SupportedOptions({ "generatechecks", "contextspecific" })
public class CLGeneratorProcessor extends AbstractProcessor { public class CLGeneratorProcessor extends AbstractProcessor {

View File

@ -58,7 +58,7 @@ public class CLTypeMap implements TypeMap {
private static final Map<Class, TypeKind> native_types_to_primitive; private static final Map<Class, TypeKind> native_types_to_primitive;
static { static {
native_types_to_primitive = new HashMap<>(); native_types_to_primitive = new HashMap<Class, TypeKind>();
native_types_to_primitive.put(cl_void.class, TypeKind.BYTE); native_types_to_primitive.put(cl_void.class, TypeKind.BYTE);
native_types_to_primitive.put(cl_byte.class, TypeKind.BYTE); native_types_to_primitive.put(cl_byte.class, TypeKind.BYTE);
native_types_to_primitive.put(cl_char.class, TypeKind.BYTE); native_types_to_primitive.put(cl_char.class, TypeKind.BYTE);

View File

@ -50,7 +50,7 @@ import javax.lang.model.util.ElementFilter;
* 2010-04-09 23:57:40Z spasi $ * 2010-04-09 23:57:40Z spasi $
*/ */
@SupportedAnnotationTypes({ "*" }) @SupportedAnnotationTypes({ "*" })
@SupportedSourceVersion(SourceVersion.RELEASE_7) @SupportedSourceVersion(SourceVersion.RELEASE_6)
@SupportedOptions({ "contextspecific", "generatechecks" }) @SupportedOptions({ "contextspecific", "generatechecks" })
public class GLESGeneratorProcessor extends AbstractProcessor { public class GLESGeneratorProcessor extends AbstractProcessor {

View File

@ -60,7 +60,7 @@ public class GLESTypeMap implements TypeMap {
private static final Map<Class<? extends Annotation>, TypeKind> native_types_to_primitive; private static final Map<Class<? extends Annotation>, TypeKind> native_types_to_primitive;
static { static {
native_types_to_primitive = new HashMap<>(); native_types_to_primitive = new HashMap<Class<? extends Annotation>, TypeKind>();
native_types_to_primitive.put(GLbitfield.class, TypeKind.INT); native_types_to_primitive.put(GLbitfield.class, TypeKind.INT);
native_types_to_primitive.put(GLclampf.class, TypeKind.FLOAT); native_types_to_primitive.put(GLclampf.class, TypeKind.FLOAT);
native_types_to_primitive.put(GLfloat.class, TypeKind.FLOAT); native_types_to_primitive.put(GLfloat.class, TypeKind.FLOAT);

View File

@ -50,7 +50,7 @@ import javax.lang.model.util.ElementFilter;
* 2010-04-09 23:57:40Z spasi $ * 2010-04-09 23:57:40Z spasi $
*/ */
@SupportedAnnotationTypes({ "*" }) @SupportedAnnotationTypes({ "*" })
@SupportedSourceVersion(SourceVersion.RELEASE_7) @SupportedSourceVersion(SourceVersion.RELEASE_6)
@SupportedOptions({ "generatechecks", "contextspecific" }) @SupportedOptions({ "generatechecks", "contextspecific" })
public class GLGeneratorProcessor extends AbstractProcessor { public class GLGeneratorProcessor extends AbstractProcessor {

View File

@ -53,7 +53,7 @@ import javax.lang.model.util.ElementFilter;
* 2009-09-08 15:07:15Z spasi $ * 2009-09-08 15:07:15Z spasi $
*/ */
@SupportedAnnotationTypes({ "*" }) @SupportedAnnotationTypes({ "*" })
@SupportedSourceVersion(SourceVersion.RELEASE_7) @SupportedSourceVersion(SourceVersion.RELEASE_6)
@SupportedOptions({ "generatechecks", "contextspecific" }) @SupportedOptions({ "generatechecks", "contextspecific" })
public class GLReferencesGeneratorProcessor extends AbstractProcessor { public class GLReferencesGeneratorProcessor extends AbstractProcessor {

View File

@ -59,7 +59,7 @@ public class GLTypeMap implements TypeMap {
private static final Map<Class, TypeKind> native_types_to_primitive; private static final Map<Class, TypeKind> native_types_to_primitive;
static { static {
native_types_to_primitive = new HashMap<>(); native_types_to_primitive = new HashMap<Class, TypeKind>();
native_types_to_primitive.put(GLbitfield.class, TypeKind.INT); native_types_to_primitive.put(GLbitfield.class, TypeKind.INT);
native_types_to_primitive.put(GLcharARB.class, TypeKind.BYTE); native_types_to_primitive.put(GLcharARB.class, TypeKind.BYTE);
native_types_to_primitive.put(GLclampf.class, TypeKind.FLOAT); native_types_to_primitive.put(GLclampf.class, TypeKind.FLOAT);