* Use relative path to find renderer source code for GLAutoGen

experimental
shadowislord 11 years ago
parent 0aeb807ffe
commit 2774a8f679
  1. 50
      jme3-gl-autogen/src/main/java/jme3tools/autogen/GLAutoGen.java

@ -1,6 +1,7 @@
package jme3tools.autogen; package jme3tools.autogen;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -58,9 +59,9 @@ public class GLAutoGen {
+ '}'; + '}';
} }
} }
private static class MethodInfo { private static class MethodInfo {
Class<?> declaringClazz; Class<?> declaringClazz;
String methodName; String methodName;
Class<?> returnType; Class<?> returnType;
@ -84,10 +85,10 @@ public class GLAutoGen {
private static final HashMap<String, List<MethodInfo>> methodMap private static final HashMap<String, List<MethodInfo>> methodMap
= new HashMap<String, List<MethodInfo>>(); = new HashMap<String, List<MethodInfo>>();
private static final TreeSet<String> usedConstants = new TreeSet<String>(); private static final TreeSet<String> usedConstants = new TreeSet<String>();
private static final TreeSet<String> usedMethods = new TreeSet<String>(); private static final TreeSet<String> usedMethods = new TreeSet<String>();
private static void scanConstantsFromType(Class<?> clazz) { private static void scanConstantsFromType(Class<?> clazz) {
Field[] fields = clazz.getDeclaredFields(); Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) { for (Field field : fields) {
@ -95,11 +96,11 @@ public class GLAutoGen {
String name = field.getName(); String name = field.getName();
Class<?> type = field.getType(); Class<?> type = field.getType();
Object value = null; Object value = null;
if (constantMap.containsKey(name)) { if (constantMap.containsKey(name)) {
throw new UnsupportedOperationException(name + " constant redeclared"); throw new UnsupportedOperationException(name + " constant redeclared");
} }
if (type == int.class) { if (type == int.class) {
try { try {
value = field.getInt(null); value = field.getInt(null);
@ -120,7 +121,7 @@ public class GLAutoGen {
} }
} }
} }
private static void scanMethodsFromType(Class<?> clazz) { private static void scanMethodsFromType(Class<?> clazz) {
Method[] methods = clazz.getDeclaredMethods(); Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) { for (Method method : methods) {
@ -128,14 +129,14 @@ public class GLAutoGen {
String name = method.getName(); String name = method.getName();
Class<?> type = method.getReturnType(); Class<?> type = method.getReturnType();
Class<?>[] paramTypes = method.getParameterTypes(); Class<?>[] paramTypes = method.getParameterTypes();
List<MethodInfo> overloads = methodMap.get(name); List<MethodInfo> overloads = methodMap.get(name);
if (overloads == null) { if (overloads == null) {
overloads = new ArrayList<MethodInfo>(); overloads = new ArrayList<MethodInfo>();
methodMap.put(name, overloads); methodMap.put(name, overloads);
} }
MethodInfo info = new MethodInfo(clazz, name, type, paramTypes); MethodInfo info = new MethodInfo(clazz, name, type, paramTypes);
overloads.add(info); overloads.add(info);
} }
@ -146,7 +147,7 @@ public class GLAutoGen {
scanConstantsFromType(clazz); scanConstantsFromType(clazz);
scanMethodsFromType(clazz); scanMethodsFromType(clazz);
} }
private static Collection<String> scanConstants(String line) { private static Collection<String> scanConstants(String line) {
List<String> constants = new ArrayList<String>(); List<String> constants = new ArrayList<String>();
int next_gl = line.indexOf("GL_"); int next_gl = line.indexOf("GL_");
@ -241,22 +242,22 @@ public class GLAutoGen {
if (info == null) { if (info == null) {
throw new IllegalStateException("Cannot find required constant: " + constant); throw new IllegalStateException("Cannot find required constant: " + constant);
} }
String typeStr = info.constantType.toString(); String typeStr = info.constantType.toString();
String valueStr = null; String valueStr = null;
if (info.constantType == int.class) { if (info.constantType == int.class) {
valueStr = "0x" + Integer.toHexString((Integer)info.constantValue).toUpperCase(); valueStr = "0x" + Integer.toHexString((Integer) info.constantValue).toUpperCase();
} else if (info.constantType == long.class) { } else if (info.constantType == long.class) {
valueStr = "0x" + Long.toHexString((Long)info.constantValue).toUpperCase(); valueStr = "0x" + Long.toHexString((Long) info.constantValue).toUpperCase();
} }
System.out.println("\tpublic static final " + typeStr + " " + info.constantName + " = " + valueStr + ";"); System.out.println("\tpublic static final " + typeStr + " " + info.constantName + " = " + valueStr + ";");
} }
System.out.println("// -- end constants"); System.out.println("// -- end constants");
System.out.println(); System.out.println();
System.out.println("// -- begin methods"); System.out.println("// -- begin methods");
for (String method : usedMethods) { for (String method : usedMethods) {
List<MethodInfo> infos = methodMap.get(method); List<MethodInfo> infos = methodMap.get(method);
if (infos == null) { if (infos == null) {
@ -275,16 +276,15 @@ public class GLAutoGen {
System.out.println(");"); System.out.println(");");
} }
} }
System.out.println("// -- end methods"); System.out.println("// -- end methods");
System.out.println(); System.out.println();
System.out.println("}"); System.out.println("}");
} }
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
String lwjgl = "D:\\engine\\jme3-lwjgl\\src\\main\\java\\com\\jme3\\renderer\\lwjgl\\LwjglRenderer.java"; String path = "../jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/LwjglRenderer.java";
String jogl = "D:\\engine\\jme3-jogl\\src\\main\\java\\com\\jme3\\renderer\\jogl\\JoglRenderer.java"; File lwjglRendererSrc = new File(path).getAbsoluteFile();
String ogles = "D:\\engine\\jme3-android\\src\\main\\java\\com\\jme3\\renderer\\android\\OGLESShaderRenderer.java";
scanType(GL11.class); scanType(GL11.class);
scanType(GL14.class); scanType(GL14.class);
@ -305,9 +305,9 @@ public class GLAutoGen {
scanType(EXTTextureFilterAnisotropic.class); scanType(EXTTextureFilterAnisotropic.class);
scanType(ARBDrawInstanced.class); scanType(ARBDrawInstanced.class);
scanType(ARBInstancedArrays.class); scanType(ARBInstancedArrays.class);
scanFile(lwjgl); scanFile(lwjglRendererSrc.toString());
exportInterface(); exportInterface();
} }
} }

Loading…
Cancel
Save