1
/*******************************************************************************
2
* Copyright (c) 2009 Progress Software, Inc.
3
* Copyright (c) 2004, 2007 IBM Corporation and others.
5
* All rights reserved. This program and the accompanying materials
6
* are made available under the terms of the Eclipse Public License v1.0
7
* which accompanies this distribution, and is available at
8
* http://www.eclipse.org/legal/epl-v10.html
10
*******************************************************************************/
11
package org.fusesource.hawtjni.generator;
13
import java.lang.reflect.Modifier;
14
import java.util.Collection;
15
import java.util.List;
17
import org.fusesource.hawtjni.generator.model.JNIClass;
18
import org.fusesource.hawtjni.generator.model.JNIField;
19
import org.fusesource.hawtjni.generator.model.ReflectClass;
23
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
25
public class CleanupConstants extends CleanupClass {
27
String getFieldValue(JNIField field) {
28
String name = field.getName();
31
index = classSource.indexOf(name, index + 1);
34
int equalsIndex = classSource.indexOf("=", index);
35
if (classSource.substring(index + name.length(), equalsIndex).trim().length() == 0) {
36
int semiIndex = classSource.indexOf(";", equalsIndex);
37
return classSource.substring(equalsIndex + 1, semiIndex).trim();
42
public void generate(JNIClass clazz) {
43
unusedCount = usedCount = 0;
44
super.generate(clazz);
45
List<JNIField> fields = clazz.getDeclaredFields();
47
output("used=" + usedCount + " unused=" + unusedCount + " total=" + (unusedCount + usedCount));
50
public void generate(List<JNIField> fields) {
52
for (JNIField field : fields) {
53
if ((field.getModifiers() & Modifier.FINAL) == 0)
59
public void generate(JNIField field) {
60
String name = field.getName();
61
Collection<String> values = files.values();
62
for (String str : values) {
63
if (str.indexOf(name) != -1) {
64
int modifiers = field.getModifiers();
65
String modifiersStr = Modifier.toString(modifiers);
68
if (modifiersStr.length() > 0)
70
output(field.getType().getTypeSignature3(false));
72
output(field.getName());
74
output(getFieldValue(field));
81
// output("NOT USED=" + field.toString() + " \n");
84
public static void main(String[] args) {
85
if (args.length < 3) {
86
System.out.println("Usage: java CleanupConstants <OS className> <class source> <src path1> <src path2>");
90
CleanupConstants gen = new CleanupConstants();
91
String clazzName = args[0];
92
String classSource = args[1];
93
String[] sourcePath = new String[args.length - 2];
94
System.arraycopy(args, 2, sourcePath, 0, sourcePath.length);
95
Class<?> clazz = Class.forName(clazzName);
96
gen.setSourcePath(sourcePath);
97
gen.setClassSourcePath(classSource);
98
gen.generate(new ReflectClass(clazz));
99
} catch (Exception e) {
100
System.out.println("Problem");
101
e.printStackTrace(System.out);