1 11 package org.eclipse.swt.tools.internal; 12 13 import java.lang.reflect.*; 14 15 public class MetaDataGenerator extends JNIGenerator { 16 17 public void generateCopyright() { 18 generateMetaData("swt_properties_copyright"); 19 } 20 21 public void generate(Class clazz) { 22 output(toC(clazz.getName())); 23 output("="); 24 ClassData data = getMetaData().getMetaData(clazz); 25 if (data != null) output(data.toString()); 26 outputln(); 27 Field[] fields = clazz.getDeclaredFields(); 28 generate(fields); 29 Method[] methods = clazz.getDeclaredMethods(); 30 generate(methods); 31 outputln(); 32 } 33 34 public void generate(Field[] fields) { 35 for (int i = 0; i < fields.length; i++) { 36 Field field = fields[i]; 37 int mods = field.getModifiers(); 38 if ((mods & Modifier.PUBLIC) == 0) continue; 39 if ((mods & Modifier.FINAL) != 0) continue; 40 if ((mods & Modifier.STATIC) != 0) continue; 41 generate(field); 42 outputln(); 43 } 44 } 45 46 public void generate(Field field) { 47 output(getClassName(field.getDeclaringClass())); 48 output("_"); 49 output(field.getName()); 50 output("="); 51 FieldData data = getMetaData().getMetaData(field); 52 if (data != null) output(data.toString()); 53 } 54 55 public void generate(Method[] methods) { 56 sort(methods); 57 for (int i = 0; i < methods.length; i++) { 58 Method method = methods[i]; 59 if ((method.getModifiers() & Modifier.NATIVE) == 0) continue; 60 generate(method); 61 outputln(); 62 if (progress != null) progress.step(); 63 } 64 } 65 66 public void generate(Method method) { 67 StringBuffer buffer = new StringBuffer (); 68 buffer.append(getClassName(method.getDeclaringClass())); 69 buffer.append("_"); 70 if (isNativeUnique(method)) { 71 buffer.append(method.getName()); 72 } else { 73 buffer.append(getFunctionName(method)); 74 } 75 String key = buffer.toString(); 76 output(key); 77 output("="); 78 MethodData methodData = getMetaData().getMetaData(method); 79 if (methodData != null) output(methodData.toString()); 80 outputln(); 81 int length = method.getParameterTypes().length; 82 for (int i = 0; i < length; i++) { 83 output(key); 84 output("_"); 85 output(i + "="); 86 ParameterData paramData = getMetaData().getMetaData(method, i); 87 if (paramData != null) output(paramData.toString()); 88 outputln(); 89 } 90 } 91 92 public String getExtension() { 93 return ".properties"; 94 } 95 96 public String getOutputName() { 97 return getMainClass().getName(); 98 } 99 100 protected boolean getGenerate(Class clazz) { 101 return true; 102 } 103 104 } 105 | Popular Tags |