KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > swt > tools > internal > MetaDataGenerator


1 /*******************************************************************************
2  * Copyright (c) 2004 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

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 JavaDoc 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 JavaDoc buffer = new StringBuffer JavaDoc();
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 JavaDoc 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 JavaDoc getExtension() {
93     return ".properties";
94 }
95
96 public String JavaDoc getOutputName() {
97     return getMainClass().getName();
98 }
99
100 protected boolean getGenerate(Class JavaDoc clazz) {
101     return true;
102 }
103
104 }
105
Popular Tags