blob: eb197afbc76981014fb68934275949f87434a296 [file] [log] [blame]
/*
* Copyright 2003-2004 The Apache Software Foundation.
// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.axis.tools.common;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/**
* The superclass of tools that parse C/C++ code. This CParsingTool provides
* some useful common methods.
*/
public class CParsingTool {
protected boolean failed = false;
protected Headers headers = new Headers();
protected CParsingTool(String[] args) throws Exception {
String text = new String();
for (int i = 0; i < args.length; i++)
text += args[i] + " ";
Utils.outputDebugString(text);
Options.set(args);
String config = (String) Options.getOption("-config");
if (null != config)
Configuration.initialise(config);
}
/**
* Read in any include files before the main processing of the tool
* is done. This constructs the Headers.
*/
protected Headers preparseHeaders(String option) throws Exception {
Headers headers = new Headers();
Object o = Options.getOption(option);
if (null != o) {
Utils.outputDebugString("Pre-parsing headers...");
List includeList;
if (o instanceof List)
includeList = (List) o;
else {
includeList = new ArrayList();
includeList.add(o);
}
Iterator it = includeList.iterator();
while (it.hasNext()) {
File include = new File((String) it.next());
if (!include.isDirectory())
Utils.rude("Bad include directory " + include);
DirectoryTree tree =
new DirectoryTree(
headers,
new HashSet(
Arrays.asList(new Object[] { "hpp", "h" })));
tree.walkTree(include, null, 0);
}
Utils.outputDebugString("Parsing files...");
}
return headers;
}
/**
* Checks the source directory looks good.
*/
protected File checkFile(String option) throws Exception {
String name = (String) Options.getOption(option);
if (null == name) {
printUsage();
System.exit(-1);
}
File file = new File(name);
if (!file.isFile() && !file.isDirectory())
Utils.rude("Bad file or directory " + file);
return file;
}
/**
* Checks the target directory and creates it if it doesn't already
* exist.
*/
protected File maybeCreateDirectory(String option) throws Exception {
String name = (String) Options.getOption(option);
if (null == name) {
printUsage();
System.exit(-1);
}
File file = new File(name);
if (!file.exists() && !file.mkdir())
Utils.rude("Failed to create directory " + file);
return file;
}
protected void printUsage() {
System.out.println("usage: ??");
}
}