mirror of https://github.com/acidanthera/audk.git
\t 2 \ \ \ \
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1499 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
7242606411
commit
27e0221a85
|
@ -18,191 +18,191 @@ import java.util.*;
|
|||
import java.lang.reflect.*;
|
||||
|
||||
public final class Common {
|
||||
public static final int BOTH = 0;
|
||||
public static final int FILE = 1;
|
||||
public static final int DIR = 2;
|
||||
|
||||
public static final String strseparate = "(.*)\\\\([^\\\\]*)";
|
||||
public static final Pattern ptnseparate = Pattern.compile("(.*)\\\\([^\\\\]*)");
|
||||
public static final int BOTH = 0;
|
||||
public static final int FILE = 1;
|
||||
public static final int DIR = 2;
|
||||
|
||||
public static final String strseparate = "(.*)\\\\([^\\\\]*)";
|
||||
public static final Pattern ptnseparate = Pattern.compile("(.*)\\\\([^\\\\]*)");
|
||||
|
||||
//-------------------------------------regex------------------------------------------//
|
||||
|
||||
public static final String replaceAll(String line, Pattern ptn, String des) {
|
||||
Matcher mtr = ptn.matcher(line);
|
||||
//-------------------------------------regex------------------------------------------//
|
||||
|
||||
public static final String replaceAll(String line, Pattern ptn, String des) {
|
||||
Matcher mtr = ptn.matcher(line);
|
||||
|
||||
if (mtr.find()) {
|
||||
return mtr.replaceAll(des);
|
||||
}
|
||||
|
||||
return line;
|
||||
}
|
||||
if (mtr.find()) {
|
||||
return mtr.replaceAll(des);
|
||||
}
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
//-------------------------------------regex------------------------------------------//
|
||||
|
||||
//-----------------------------------file&string---------------------------------------//
|
||||
|
||||
public static final String file2string(String filename) throws Exception {
|
||||
BufferedReader rd = new BufferedReader(new FileReader(filename));
|
||||
StringBuffer wholefile = new StringBuffer();
|
||||
String line;
|
||||
while ((line = rd.readLine()) != null) {
|
||||
wholefile.append(line + "\n");
|
||||
}
|
||||
return wholefile.toString();
|
||||
}
|
||||
//-------------------------------------regex------------------------------------------//
|
||||
|
||||
//-----------------------------------file&string---------------------------------------//
|
||||
|
||||
public static final String file2string(String filename) throws Exception {
|
||||
BufferedReader rd = new BufferedReader(new FileReader(filename));
|
||||
StringBuffer wholefile = new StringBuffer();
|
||||
String line;
|
||||
while ((line = rd.readLine()) != null) {
|
||||
wholefile.append(line + "\n");
|
||||
}
|
||||
return wholefile.toString();
|
||||
}
|
||||
|
||||
public static final void string2file(String content, String filename) throws Exception {
|
||||
ensureDir(filename);
|
||||
PrintWriter outfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
|
||||
outfile.append(content);
|
||||
outfile.flush();
|
||||
outfile.close();
|
||||
}
|
||||
public static final void string2file(String content, String filename) throws Exception {
|
||||
ensureDir(filename);
|
||||
PrintWriter outfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
|
||||
outfile.append(content);
|
||||
outfile.flush();
|
||||
outfile.close();
|
||||
}
|
||||
|
||||
//-----------------------------------file&string---------------------------------------//
|
||||
//-----------------------------------file&string---------------------------------------//
|
||||
|
||||
//--------------------------------------dir--------------------------------------------//
|
||||
/*
|
||||
public static final HashSet<String> walkDir(String path, int mode) throws Exception {
|
||||
HashSet<String> pathlist = new HashSet<String>();
|
||||
Common.toDoAll(path, Common.class.getMethod("walkDir", String.class), null, null, mode);
|
||||
return pathlist;
|
||||
}
|
||||
*/
|
||||
public static final void ensureDir(String objFileWhole) {
|
||||
File tempdir;
|
||||
Matcher mtrseparate = ptnseparate.matcher(objFileWhole);
|
||||
if (mtrseparate.find()) {
|
||||
tempdir = new File(mtrseparate.group(1));
|
||||
if (!tempdir.exists()) tempdir.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
public static final void deleteDir(String objFileWhole) {
|
||||
String[] list = new File(objFileWhole).list();
|
||||
File temp;
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
temp = new File(objFileWhole + File.separator + list[i]);
|
||||
if (temp.isDirectory()) {
|
||||
deleteDir(objFileWhole + File.separator + list[i]);
|
||||
} else {
|
||||
temp.delete();
|
||||
}
|
||||
}
|
||||
new File(objFileWhole).delete();
|
||||
}
|
||||
|
||||
public static final String dirCopy_(String src) throws Exception {
|
||||
Matcher mtrseparate = Common.ptnseparate.matcher(src);
|
||||
if (mtrseparate.find()) {
|
||||
dirCopy(src, mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2));
|
||||
}
|
||||
return mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2);
|
||||
}
|
||||
|
||||
public static final void dirCopy(String src, String des) throws Exception {
|
||||
String[] list = new File(src).list();
|
||||
File test;
|
||||
//--------------------------------------dir--------------------------------------------//
|
||||
/*
|
||||
public static final HashSet<String> walkDir(String path, int mode) throws Exception {
|
||||
HashSet<String> pathlist = new HashSet<String>();
|
||||
Common.toDoAll(path, Common.class.getMethod("walkDir", String.class), null, null, mode);
|
||||
return pathlist;
|
||||
}
|
||||
*/
|
||||
public static final void ensureDir(String objFileWhole) {
|
||||
File tempdir;
|
||||
Matcher mtrseparate = ptnseparate.matcher(objFileWhole);
|
||||
if (mtrseparate.find()) {
|
||||
tempdir = new File(mtrseparate.group(1));
|
||||
if (!tempdir.exists()) tempdir.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
public static final void deleteDir(String objFileWhole) {
|
||||
String[] list = new File(objFileWhole).list();
|
||||
File temp;
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
temp = new File(objFileWhole + File.separator + list[i]);
|
||||
if (temp.isDirectory()) {
|
||||
deleteDir(objFileWhole + File.separator + list[i]);
|
||||
} else {
|
||||
temp.delete();
|
||||
}
|
||||
}
|
||||
new File(objFileWhole).delete();
|
||||
}
|
||||
|
||||
public static final String dirCopy_(String src) throws Exception {
|
||||
Matcher mtrseparate = Common.ptnseparate.matcher(src);
|
||||
if (mtrseparate.find()) {
|
||||
dirCopy(src, mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2));
|
||||
}
|
||||
return mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2);
|
||||
}
|
||||
|
||||
public static final void dirCopy(String src, String des) throws Exception {
|
||||
String[] list = new File(src).list();
|
||||
File test;
|
||||
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
test = new File(src + File.separator + list[i]);
|
||||
if (test.isDirectory()) {
|
||||
dirCopy(src + File.separator + list[i], des + File.separator + list[i]);
|
||||
} else {
|
||||
ensureDir(des + File.separator + list[i]);
|
||||
string2file(file2string(src + File.separator + list[i]), des + File.separator + list[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
test = new File(src + File.separator + list[i]);
|
||||
if (test.isDirectory()) {
|
||||
dirCopy(src + File.separator + list[i], des + File.separator + list[i]);
|
||||
} else {
|
||||
ensureDir(des + File.separator + list[i]);
|
||||
string2file(file2string(src + File.separator + list[i]), des + File.separator + list[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------dir--------------------------------------------//
|
||||
//--------------------------------------dir--------------------------------------------//
|
||||
|
||||
//-------------------------------like python walk-----------------------------------------//
|
||||
|
||||
public static final void toDoAll(String path, Method md, Object obj, Object[] args, int type) throws Exception {
|
||||
String[] list = new File(path).list();
|
||||
ArrayList<Object> _args = new ArrayList<Object>();
|
||||
|
||||
_args.add(path);
|
||||
if (args != null) {
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
_args.add(args[i]);
|
||||
}
|
||||
}
|
||||
//-------------------------------like python walk-----------------------------------------//
|
||||
|
||||
public static final void toDoAll(String path, Method md, Object obj, Object[] args, int type) throws Exception {
|
||||
String[] list = new File(path).list();
|
||||
ArrayList<Object> _args = new ArrayList<Object>();
|
||||
|
||||
_args.add(path);
|
||||
if (args != null) {
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
_args.add(args[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (type == DIR || type == BOTH) {
|
||||
md.invoke(obj, _args.toArray());
|
||||
}
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
if (new File(path + File.separator + list[i]).isDirectory()) {
|
||||
toDoAll(path + File.separator + list[i], md, obj, args, type);
|
||||
} else {
|
||||
if (type == FILE || type == BOTH) {
|
||||
_args.set(0, path + File.separator + list[i]);
|
||||
md.invoke(obj, _args.toArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (type == DIR || type == BOTH) {
|
||||
md.invoke(obj, _args.toArray());
|
||||
}
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
if (new File(path + File.separator + list[i]).isDirectory()) {
|
||||
toDoAll(path + File.separator + list[i], md, obj, args, type);
|
||||
} else {
|
||||
if (type == FILE || type == BOTH) {
|
||||
_args.set(0, path + File.separator + list[i]);
|
||||
md.invoke(obj, _args.toArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final void toDoAll(Set<String> set, ForDoAll fda) throws Exception {
|
||||
Iterator<String> di = set.iterator();
|
||||
while (di.hasNext()) {
|
||||
fda.run(di.next());
|
||||
}
|
||||
}
|
||||
|
||||
public static final void toDoAll(String path, ForDoAll fda, int type) throws Exception { // filter of file type can be done in toDo
|
||||
String[] list = new File(path).list();
|
||||
File test;
|
||||
public static final void toDoAll(Set<String> set, ForDoAll fda) throws Exception {
|
||||
Iterator<String> di = set.iterator();
|
||||
while (di.hasNext()) {
|
||||
fda.run(di.next());
|
||||
}
|
||||
}
|
||||
|
||||
public static final void toDoAll(String path, ForDoAll fda, int type) throws Exception { // filter of file type can be done in toDo
|
||||
String[] list = new File(path).list();
|
||||
File test;
|
||||
|
||||
if (type == DIR || type == BOTH) {
|
||||
fda.run(path);
|
||||
}
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
test = new File(path + File.separator + list[i]);
|
||||
if (test.isDirectory()) {
|
||||
if (fda.filter(test)) {
|
||||
toDoAll(path + File.separator + list[i], fda, type);
|
||||
}
|
||||
} else {
|
||||
if (type == FILE || type == BOTH) {
|
||||
fda.run(path + File.separator + list[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static interface ForDoAll {
|
||||
public void run(String filepath) throws Exception;
|
||||
|
||||
public boolean filter(File dir);
|
||||
}
|
||||
|
||||
public static abstract class Laplace {
|
||||
public void transform(String src, String des) throws Exception {
|
||||
Common.string2file(operation(Common.file2string(src)), des);
|
||||
}
|
||||
|
||||
public abstract String operation(String wholeline);
|
||||
|
||||
public abstract boolean recognize(String filename);
|
||||
|
||||
public abstract String namechange(String oldname);
|
||||
}
|
||||
|
||||
public static interface Element {
|
||||
|
||||
// public int replace = 0;
|
||||
// public int type = 1;
|
||||
|
||||
public String getReplace(String key);
|
||||
|
||||
// public void getType(String key);
|
||||
//
|
||||
// public void setReplace(int num);
|
||||
//
|
||||
// public void setType(int num);
|
||||
|
||||
}
|
||||
if (type == DIR || type == BOTH) {
|
||||
fda.run(path);
|
||||
}
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
test = new File(path + File.separator + list[i]);
|
||||
if (test.isDirectory()) {
|
||||
if (fda.filter(test)) {
|
||||
toDoAll(path + File.separator + list[i], fda, type);
|
||||
}
|
||||
} else {
|
||||
if (type == FILE || type == BOTH) {
|
||||
fda.run(path + File.separator + list[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static interface ForDoAll {
|
||||
public void run(String filepath) throws Exception;
|
||||
|
||||
public boolean filter(File dir);
|
||||
}
|
||||
|
||||
public static abstract class Laplace {
|
||||
public void transform(String src, String des) throws Exception {
|
||||
Common.string2file(operation(Common.file2string(src)), des);
|
||||
}
|
||||
|
||||
public abstract String operation(String wholeline);
|
||||
|
||||
public abstract boolean recognize(String filename);
|
||||
|
||||
public abstract String namechange(String oldname);
|
||||
}
|
||||
|
||||
public static interface Element {
|
||||
|
||||
// public int replace = 0;
|
||||
// public int type = 1;
|
||||
|
||||
public String getReplace(String key);
|
||||
|
||||
// public void getType(String key);
|
||||
//
|
||||
// public void setReplace(int num);
|
||||
//
|
||||
// public void setType(int num);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,192 +16,192 @@ import java.util.regex.*;
|
|||
import java.io.*;
|
||||
|
||||
public final class Critic {
|
||||
public static final Pattern PTN_NEW_HEAD_COMMENT = Pattern.compile("^\\/\\*\\*.*?\\*\\*\\/",Pattern.DOTALL);
|
||||
private static final Pattern ptnheadcomment = Pattern.compile("^\\/\\*\\+\\+(.*?)\\-\\-\\*\\/",Pattern.DOTALL);
|
||||
private static final Pattern ptnfunccomment = Pattern.compile("([\\};\\/\">]\\s*)([\\w\\s\\*]*?[_\\w][_\\w\\d]*\\s*\\([^\\)\\(]*\\)\\s*)\\/\\*\\+\\+(.*?)\\-\\-\\*\\/(\\s*.*?)(?=[\\{;])",Pattern.DOTALL); // find function with {;">/ , may be unsafe
|
||||
//private static Pattern ptncommentstructure = Pattern.compile("\\/\\*\\+\\+\\s*Routine Description:\\s*(.*?)\\s*Arguments:\\s*(.*?)\\s*Returns:\\s*(.*?)\\s*\\-\\-\\*\\/",Pattern.DOTALL);
|
||||
private static final Pattern ptncommentequation = Pattern.compile("([^\\s]*)\\s+-\\s+(.*)\\s*");
|
||||
private static Matcher mtrcommentequation;
|
||||
private static final Pattern ptnnewcomment = Pattern.compile("(\\s*@(param|retval)\\s+[^\\s]+)\\s+(.*)");
|
||||
private static Matcher mtrnewcomment;
|
||||
|
||||
private static final int totallinelength = 82;
|
||||
|
||||
public static final void run(String filepath) throws Exception {
|
||||
if (MigrationTool.doCritic) { // this is left here to set an example for future structure
|
||||
critic(filepath);
|
||||
}
|
||||
}
|
||||
|
||||
private static final void critic(String filepath) throws Exception {
|
||||
if (filepath.contains(".c") || filepath.contains(".h")) {
|
||||
BufferedReader rd = null;
|
||||
String line = null;
|
||||
StringBuffer templine = new StringBuffer();
|
||||
boolean incomment = false;
|
||||
public static final Pattern PTN_NEW_HEAD_COMMENT = Pattern.compile("^\\/\\*\\*.*?\\*\\*\\/",Pattern.DOTALL);
|
||||
private static final Pattern ptnheadcomment = Pattern.compile("^\\/\\*\\+\\+(.*?)\\-\\-\\*\\/",Pattern.DOTALL);
|
||||
private static final Pattern ptnfunccomment = Pattern.compile("([\\};\\/\">]\\s*)([\\w\\s\\*]*?[_\\w][_\\w\\d]*\\s*\\([^\\)\\(]*\\)\\s*)\\/\\*\\+\\+(.*?)\\-\\-\\*\\/(\\s*.*?)(?=[\\{;])",Pattern.DOTALL); // find function with {;">/ , may be unsafe
|
||||
//private static Pattern ptncommentstructure = Pattern.compile("\\/\\*\\+\\+\\s*Routine Description:\\s*(.*?)\\s*Arguments:\\s*(.*?)\\s*Returns:\\s*(.*?)\\s*\\-\\-\\*\\/",Pattern.DOTALL);
|
||||
private static final Pattern ptncommentequation = Pattern.compile("([^\\s]*)\\s+-\\s+(.*)\\s*");
|
||||
private static Matcher mtrcommentequation;
|
||||
private static final Pattern ptnnewcomment = Pattern.compile("(\\s*@(param|retval)\\s+[^\\s]+)\\s+(.*)");
|
||||
private static Matcher mtrnewcomment;
|
||||
|
||||
private static final int totallinelength = 82;
|
||||
|
||||
public static final void run(String filepath) throws Exception {
|
||||
if (MigrationTool.doCritic) { // this is left here to set an example for future structure
|
||||
critic(filepath);
|
||||
}
|
||||
}
|
||||
|
||||
private static final void critic(String filepath) throws Exception {
|
||||
if (filepath.contains(".c") || filepath.contains(".h")) {
|
||||
BufferedReader rd = null;
|
||||
String line = null;
|
||||
StringBuffer templine = new StringBuffer();
|
||||
boolean incomment = false;
|
||||
|
||||
System.out.println("Criticing " + filepath);
|
||||
String wholeline = Common.file2string(filepath);
|
||||
System.out.println("Criticing " + filepath);
|
||||
String wholeline = Common.file2string(filepath);
|
||||
|
||||
wholeline = wholeline.replaceAll("\t", " ");
|
||||
wholeline = Common.replaceAll(wholeline, ptnheadcomment, "/** @file$1**/");
|
||||
wholeline = Common.replaceAll(wholeline, ptnfunccomment, "$1/**$3**/$4$2");
|
||||
//wholeline = Common.replaceAll(wholeline, ptncommentstructure, "/**\n#%\n$1\n%#\n#%%\n$2\n%%#\n#%%%\n$3\n%%%#\n**/");
|
||||
wholeline = wholeline.replaceAll("\t", " ");
|
||||
wholeline = Common.replaceAll(wholeline, ptnheadcomment, "/** @file$1**/");
|
||||
wholeline = Common.replaceAll(wholeline, ptnfunccomment, "$1/**$3**/$4$2");
|
||||
//wholeline = Common.replaceAll(wholeline, ptncommentstructure, "/**\n#%\n$1\n%#\n#%%\n$2\n%%#\n#%%%\n$3\n%%%#\n**/");
|
||||
|
||||
// first scan
|
||||
boolean description = false;
|
||||
boolean arguments = false;
|
||||
boolean returns = false;
|
||||
boolean inequation = false;
|
||||
rd = new BufferedReader(new StringReader(wholeline));
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.matches("\\/\\*\\*")) {
|
||||
incomment = true;
|
||||
description = false;
|
||||
arguments = false;
|
||||
returns = false;
|
||||
templine.append(line + "\n");
|
||||
} else if (line.matches("\\*\\*\\/")) {
|
||||
incomment = false;
|
||||
templine.append("\n" + line + "\n");
|
||||
} else if (incomment) {
|
||||
if (line.contains("Routine Description:")) {
|
||||
description = true;
|
||||
arguments = false;
|
||||
returns = false;
|
||||
} else if (line.contains("Arguments:")) {
|
||||
description = false;
|
||||
arguments = true;
|
||||
returns = false;
|
||||
templine.append("\n");
|
||||
} else if (line.contains("Returns:")) {
|
||||
description = false;
|
||||
arguments = false;
|
||||
returns = true;
|
||||
templine.append("\n");
|
||||
} else if (description) {
|
||||
if (line.trim().length() != 0) {
|
||||
templine.append(" " + line.trim() + "\n");
|
||||
}
|
||||
} else if (arguments) {
|
||||
mtrcommentequation = ptncommentequation.matcher(line);
|
||||
if (mtrcommentequation.find()) {
|
||||
inequation = true;
|
||||
templine.append(" @param " + mtrcommentequation.group(1) + " " + mtrcommentequation.group(2) + "\n");
|
||||
} else if (inequation && line.trim().length() == 0) {
|
||||
inequation = false;
|
||||
} else if (inequation && line.trim().length() != 0) {
|
||||
templine.append("#%#%" + line + "\n");
|
||||
} else {
|
||||
if (line.trim().length() != 0) {
|
||||
templine.append(" " + line.trim() + "\n");
|
||||
}
|
||||
}
|
||||
} else if (returns) {
|
||||
mtrcommentequation = ptncommentequation.matcher(line);
|
||||
if (mtrcommentequation.find()) {
|
||||
inequation = true;
|
||||
templine.append(" @retval " + mtrcommentequation.group(1) + " " + mtrcommentequation.group(2) + "\n");
|
||||
} else if (inequation && line.trim().length() == 0) {
|
||||
inequation = false;
|
||||
} else if (inequation && line.trim().length() != 0) {
|
||||
templine.append("#%#%" + line + "\n");
|
||||
} else {
|
||||
if (line.trim().length() != 0) {
|
||||
templine.append(" @return " + line.trim() + "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
templine.append(line + "\n");
|
||||
}
|
||||
}
|
||||
wholeline = templine.toString();
|
||||
wholeline = wholeline.replaceAll("\n#%#%\\s*", " ");
|
||||
//
|
||||
|
||||
// secend scan
|
||||
int startmax = 0;
|
||||
rd = new BufferedReader(new StringReader(wholeline));
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.matches("\\/\\*\\*")) {
|
||||
incomment = true;
|
||||
templine.append(line + "\n");
|
||||
} else if (line.matches("\\*\\*\\/")) {
|
||||
incomment = false;
|
||||
templine.append(line + "\n");
|
||||
} else if (incomment) {
|
||||
mtrnewcomment = ptnnewcomment.matcher(line);
|
||||
if (mtrnewcomment.find()) {
|
||||
startmax = mtrnewcomment.group(1).length() > startmax ? mtrnewcomment.group(1).length() : startmax;
|
||||
}
|
||||
}
|
||||
}
|
||||
startmax++;
|
||||
//
|
||||
|
||||
// third scan
|
||||
int n = 0;
|
||||
String temp = null;
|
||||
String[] tempcont = null;
|
||||
int count = 0;
|
||||
templine = new StringBuffer();
|
||||
rd = new BufferedReader(new StringReader(wholeline));
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.matches("\\/\\*\\*")) {
|
||||
incomment = true;
|
||||
templine.append(line + "\n");
|
||||
} else if (line.matches("\\*\\*\\/")) {
|
||||
incomment = false;
|
||||
templine.append(line + "\n");
|
||||
} else if (incomment) {
|
||||
mtrnewcomment = ptnnewcomment.matcher(line);
|
||||
if (mtrnewcomment.find()) {
|
||||
n = startmax - mtrnewcomment.group(1).length();
|
||||
templine.append(mtrnewcomment.group(1));
|
||||
while (n-- >= 0) {
|
||||
templine.append(" ");
|
||||
}
|
||||
temp = mtrnewcomment.group(3);
|
||||
tempcont = temp.split(" "); // use \\s+ ?
|
||||
|
||||
count = 0;
|
||||
for (int i = 0; i < tempcont.length; i++) {
|
||||
count += tempcont[i].length();
|
||||
if (count <= (totallinelength - startmax)) {
|
||||
templine.append(tempcont[i] + " ");
|
||||
count += 1;
|
||||
} else {
|
||||
templine.append("\n");
|
||||
n = startmax;
|
||||
while (n-- >= 0) {
|
||||
templine.append(" ");
|
||||
}
|
||||
templine.append(tempcont[i] + " ");
|
||||
count = tempcont[i].length() + 1;
|
||||
}
|
||||
}
|
||||
templine.append("\n");
|
||||
} else {
|
||||
templine.append(line + "\n");
|
||||
}
|
||||
} else {
|
||||
templine.append(line + "\n");
|
||||
}
|
||||
}
|
||||
wholeline = templine.toString();
|
||||
//
|
||||
// Remove trailing blanks.
|
||||
//
|
||||
wholeline = wholeline.replaceAll (" +\n", "\n");
|
||||
Common.string2file(wholeline, filepath);
|
||||
}
|
||||
}
|
||||
|
||||
public static final void fireAt(String path) throws Exception {
|
||||
//Common.toDoAll(Common.dirCopy_(path), Critic.class.getMethod("critic", String.class), null, null, Common.FILE);
|
||||
Common.toDoAll(path, Critic.class.getMethod("run", String.class), null, null, Common.FILE);
|
||||
//Common.toDoAll(Common.dirCopy_(path), critic, Common.FILE);
|
||||
System.out.println("Critic Done");
|
||||
}
|
||||
// first scan
|
||||
boolean description = false;
|
||||
boolean arguments = false;
|
||||
boolean returns = false;
|
||||
boolean inequation = false;
|
||||
rd = new BufferedReader(new StringReader(wholeline));
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.matches("\\/\\*\\*")) {
|
||||
incomment = true;
|
||||
description = false;
|
||||
arguments = false;
|
||||
returns = false;
|
||||
templine.append(line + "\n");
|
||||
} else if (line.matches("\\*\\*\\/")) {
|
||||
incomment = false;
|
||||
templine.append("\n" + line + "\n");
|
||||
} else if (incomment) {
|
||||
if (line.contains("Routine Description:")) {
|
||||
description = true;
|
||||
arguments = false;
|
||||
returns = false;
|
||||
} else if (line.contains("Arguments:")) {
|
||||
description = false;
|
||||
arguments = true;
|
||||
returns = false;
|
||||
templine.append("\n");
|
||||
} else if (line.contains("Returns:")) {
|
||||
description = false;
|
||||
arguments = false;
|
||||
returns = true;
|
||||
templine.append("\n");
|
||||
} else if (description) {
|
||||
if (line.trim().length() != 0) {
|
||||
templine.append(" " + line.trim() + "\n");
|
||||
}
|
||||
} else if (arguments) {
|
||||
mtrcommentequation = ptncommentequation.matcher(line);
|
||||
if (mtrcommentequation.find()) {
|
||||
inequation = true;
|
||||
templine.append(" @param " + mtrcommentequation.group(1) + " " + mtrcommentequation.group(2) + "\n");
|
||||
} else if (inequation && line.trim().length() == 0) {
|
||||
inequation = false;
|
||||
} else if (inequation && line.trim().length() != 0) {
|
||||
templine.append("#%#%" + line + "\n");
|
||||
} else {
|
||||
if (line.trim().length() != 0) {
|
||||
templine.append(" " + line.trim() + "\n");
|
||||
}
|
||||
}
|
||||
} else if (returns) {
|
||||
mtrcommentequation = ptncommentequation.matcher(line);
|
||||
if (mtrcommentequation.find()) {
|
||||
inequation = true;
|
||||
templine.append(" @retval " + mtrcommentequation.group(1) + " " + mtrcommentequation.group(2) + "\n");
|
||||
} else if (inequation && line.trim().length() == 0) {
|
||||
inequation = false;
|
||||
} else if (inequation && line.trim().length() != 0) {
|
||||
templine.append("#%#%" + line + "\n");
|
||||
} else {
|
||||
if (line.trim().length() != 0) {
|
||||
templine.append(" @return " + line.trim() + "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
templine.append(line + "\n");
|
||||
}
|
||||
}
|
||||
wholeline = templine.toString();
|
||||
wholeline = wholeline.replaceAll("\n#%#%\\s*", " ");
|
||||
//
|
||||
|
||||
// secend scan
|
||||
int startmax = 0;
|
||||
rd = new BufferedReader(new StringReader(wholeline));
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.matches("\\/\\*\\*")) {
|
||||
incomment = true;
|
||||
templine.append(line + "\n");
|
||||
} else if (line.matches("\\*\\*\\/")) {
|
||||
incomment = false;
|
||||
templine.append(line + "\n");
|
||||
} else if (incomment) {
|
||||
mtrnewcomment = ptnnewcomment.matcher(line);
|
||||
if (mtrnewcomment.find()) {
|
||||
startmax = mtrnewcomment.group(1).length() > startmax ? mtrnewcomment.group(1).length() : startmax;
|
||||
}
|
||||
}
|
||||
}
|
||||
startmax++;
|
||||
//
|
||||
|
||||
// third scan
|
||||
int n = 0;
|
||||
String temp = null;
|
||||
String[] tempcont = null;
|
||||
int count = 0;
|
||||
templine = new StringBuffer();
|
||||
rd = new BufferedReader(new StringReader(wholeline));
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.matches("\\/\\*\\*")) {
|
||||
incomment = true;
|
||||
templine.append(line + "\n");
|
||||
} else if (line.matches("\\*\\*\\/")) {
|
||||
incomment = false;
|
||||
templine.append(line + "\n");
|
||||
} else if (incomment) {
|
||||
mtrnewcomment = ptnnewcomment.matcher(line);
|
||||
if (mtrnewcomment.find()) {
|
||||
n = startmax - mtrnewcomment.group(1).length();
|
||||
templine.append(mtrnewcomment.group(1));
|
||||
while (n-- >= 0) {
|
||||
templine.append(" ");
|
||||
}
|
||||
temp = mtrnewcomment.group(3);
|
||||
tempcont = temp.split(" "); // use \\s+ ?
|
||||
|
||||
count = 0;
|
||||
for (int i = 0; i < tempcont.length; i++) {
|
||||
count += tempcont[i].length();
|
||||
if (count <= (totallinelength - startmax)) {
|
||||
templine.append(tempcont[i] + " ");
|
||||
count += 1;
|
||||
} else {
|
||||
templine.append("\n");
|
||||
n = startmax;
|
||||
while (n-- >= 0) {
|
||||
templine.append(" ");
|
||||
}
|
||||
templine.append(tempcont[i] + " ");
|
||||
count = tempcont[i].length() + 1;
|
||||
}
|
||||
}
|
||||
templine.append("\n");
|
||||
} else {
|
||||
templine.append(line + "\n");
|
||||
}
|
||||
} else {
|
||||
templine.append(line + "\n");
|
||||
}
|
||||
}
|
||||
wholeline = templine.toString();
|
||||
//
|
||||
// Remove trailing blanks.
|
||||
//
|
||||
wholeline = wholeline.replaceAll (" +\n", "\n");
|
||||
Common.string2file(wholeline, filepath);
|
||||
}
|
||||
}
|
||||
|
||||
public static final void fireAt(String path) throws Exception {
|
||||
//Common.toDoAll(Common.dirCopy_(path), Critic.class.getMethod("critic", String.class), null, null, Common.FILE);
|
||||
Common.toDoAll(path, Critic.class.getMethod("run", String.class), null, null, Common.FILE);
|
||||
//Common.toDoAll(Common.dirCopy_(path), critic, Common.FILE);
|
||||
System.out.println("Critic Done");
|
||||
}
|
||||
}
|
|
@ -17,170 +17,170 @@ import java.util.*;
|
|||
import java.util.regex.*;
|
||||
|
||||
public final class Database {
|
||||
private static final Database INSTANCE = Database.init();
|
||||
|
||||
Database(String path) {
|
||||
DatabasePath = path;
|
||||
private static final Database INSTANCE = Database.init();
|
||||
|
||||
Database(String path) {
|
||||
DatabasePath = path;
|
||||
|
||||
try {
|
||||
importDBLib("Library.csv");
|
||||
importDBGuid("Guid.csv", "Guid");
|
||||
importDBGuid("Ppi.csv", "Ppi");
|
||||
importDBGuid("Protocol.csv", "Protocol");
|
||||
importDBMacro("Macro.csv");
|
||||
importListR8Only();
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public String DatabasePath;
|
||||
public Set<String> error = new HashSet<String>();
|
||||
public Set<String> r8only = new HashSet<String>();
|
||||
|
||||
private Map<String,Guid> hashguid = new HashMap<String,Guid>();
|
||||
private Map<String,Func> hashfunc = new HashMap<String,Func>();
|
||||
private Map<String,Macro> hashmacro = new HashMap<String,Macro>();
|
||||
|
||||
//-------------------------------------import------------------------------------------//
|
||||
|
||||
private void importDBLib(String filename) throws Exception {
|
||||
BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));
|
||||
String line;
|
||||
String[] linecontext;
|
||||
Func lf;
|
||||
|
||||
if (rd.ready()) {
|
||||
System.out.println("Found " + filename + ", Importing Library Database.");
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.length() != 0) {
|
||||
linecontext = line.split(",");
|
||||
lf = new Func(linecontext);
|
||||
hashfunc.put(lf.r8funcname,lf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void importDBGuid(String filename, String type) throws Exception {
|
||||
BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));
|
||||
String line;
|
||||
String[] linecontext;
|
||||
Guid gu;
|
||||
|
||||
if (rd.ready()) {
|
||||
System.out.println("Found " + filename + ", Importing " + type + " Database.");
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.length() != 0) {
|
||||
linecontext = line.split(",");
|
||||
gu = new Guid(linecontext, type);
|
||||
hashguid.put(gu.r8name,gu);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void importDBMacro(String filename) throws Exception {
|
||||
BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));
|
||||
String line;
|
||||
String[] linecontext;
|
||||
Macro mc;
|
||||
|
||||
if (rd.ready()) {
|
||||
System.out.println("Found " + filename + ", Importing Macro Database.");
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.length() != 0) {
|
||||
linecontext = line.split(",");
|
||||
mc = new Macro(linecontext);
|
||||
hashmacro.put(mc.r8name,mc);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
importDBLib("Library.csv");
|
||||
importDBGuid("Guid.csv", "Guid");
|
||||
importDBGuid("Ppi.csv", "Ppi");
|
||||
importDBGuid("Protocol.csv", "Protocol");
|
||||
importDBMacro("Macro.csv");
|
||||
importListR8Only();
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public String DatabasePath;
|
||||
public Set<String> error = new HashSet<String>();
|
||||
public Set<String> r8only = new HashSet<String>();
|
||||
|
||||
private Map<String,Guid> hashguid = new HashMap<String,Guid>();
|
||||
private Map<String,Func> hashfunc = new HashMap<String,Func>();
|
||||
private Map<String,Macro> hashmacro = new HashMap<String,Macro>();
|
||||
|
||||
//-------------------------------------import------------------------------------------//
|
||||
|
||||
private void importDBLib(String filename) throws Exception {
|
||||
BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));
|
||||
String line;
|
||||
String[] linecontext;
|
||||
Func lf;
|
||||
|
||||
if (rd.ready()) {
|
||||
System.out.println("Found " + filename + ", Importing Library Database.");
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.length() != 0) {
|
||||
linecontext = line.split(",");
|
||||
lf = new Func(linecontext);
|
||||
hashfunc.put(lf.r8funcname,lf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void importDBGuid(String filename, String type) throws Exception {
|
||||
BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));
|
||||
String line;
|
||||
String[] linecontext;
|
||||
Guid gu;
|
||||
|
||||
if (rd.ready()) {
|
||||
System.out.println("Found " + filename + ", Importing " + type + " Database.");
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.length() != 0) {
|
||||
linecontext = line.split(",");
|
||||
gu = new Guid(linecontext, type);
|
||||
hashguid.put(gu.r8name,gu);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void importDBMacro(String filename) throws Exception {
|
||||
BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));
|
||||
String line;
|
||||
String[] linecontext;
|
||||
Macro mc;
|
||||
|
||||
if (rd.ready()) {
|
||||
System.out.println("Found " + filename + ", Importing Macro Database.");
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.length() != 0) {
|
||||
linecontext = line.split(",");
|
||||
mc = new Macro(linecontext);
|
||||
hashmacro.put(mc.r8name,mc);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void importListR8Only() throws Exception {
|
||||
Pattern ptnr8only = Pattern.compile("////#?(\\w*)?.*?R8_(.*?)\\s*\\(.*?////~", Pattern.DOTALL);
|
||||
String wholeline = Common.file2string(DatabasePath + File.separator + "R8Lib.c");
|
||||
System.out.println("Found " + "R8Lib.c" + ", Importing R8Lib Database.");
|
||||
Matcher mtrr8only = ptnr8only.matcher(wholeline);
|
||||
while (mtrr8only.find()) {
|
||||
r8only.add(mtrr8only.group(2));
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------import------------------------------------------//
|
||||
private void importListR8Only() throws Exception {
|
||||
Pattern ptnr8only = Pattern.compile("////#?(\\w*)?.*?R8_(.*?)\\s*\\(.*?////~", Pattern.DOTALL);
|
||||
String wholeline = Common.file2string(DatabasePath + File.separator + "R8Lib.c");
|
||||
System.out.println("Found " + "R8Lib.c" + ", Importing R8Lib Database.");
|
||||
Matcher mtrr8only = ptnr8only.matcher(wholeline);
|
||||
while (mtrr8only.find()) {
|
||||
r8only.add(mtrr8only.group(2));
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------import------------------------------------------//
|
||||
|
||||
//-------------------------------------get------------------------------------------//
|
||||
//-------------------------------------get------------------------------------------//
|
||||
|
||||
public String getR9Lib(String r8funcname) {
|
||||
String temp = null;
|
||||
if (hashfunc.containsKey(r8funcname)) {
|
||||
temp = hashfunc.get(r8funcname).r9libname;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
public String getR9Func(String r8funcname) {
|
||||
String temp = null;
|
||||
if (hashfunc.containsKey(r8funcname)) {
|
||||
temp = hashfunc.get(r8funcname).r9funcname;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
public String getR9Macro(String r8macro) {
|
||||
return hashmacro.get(r8macro).r9name; // the verification job of if the macro exists in the database is done when registering it
|
||||
}
|
||||
public String getR9Lib(String r8funcname) {
|
||||
String temp = null;
|
||||
if (hashfunc.containsKey(r8funcname)) {
|
||||
temp = hashfunc.get(r8funcname).r9libname;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
public String getR9Func(String r8funcname) {
|
||||
String temp = null;
|
||||
if (hashfunc.containsKey(r8funcname)) {
|
||||
temp = hashfunc.get(r8funcname).r9funcname;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
public String getR9Macro(String r8macro) {
|
||||
return hashmacro.get(r8macro).r9name; // the verification job of if the macro exists in the database is done when registering it
|
||||
}
|
||||
|
||||
public String getR9Guidname(String r8Guid) {
|
||||
String temp = null;
|
||||
try {
|
||||
temp = hashguid.get(r8Guid).r9name;
|
||||
} catch (NullPointerException e) {
|
||||
error.add("getR9Guidname :" + r8Guid);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
public String getR9Guidname(String r8Guid) {
|
||||
String temp = null;
|
||||
try {
|
||||
temp = hashguid.get(r8Guid).r9name;
|
||||
} catch (NullPointerException e) {
|
||||
error.add("getR9Guidname :" + r8Guid);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
public String getGuidType(String r8Guid) {
|
||||
String temp = null;
|
||||
try {
|
||||
temp = hashguid.get(r8Guid).type;
|
||||
} catch (NullPointerException e) {
|
||||
error.add("getR9Guidname :" + r8Guid);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
public String getGuidType(String r8Guid) {
|
||||
String temp = null;
|
||||
try {
|
||||
temp = hashguid.get(r8Guid).type;
|
||||
} catch (NullPointerException e) {
|
||||
error.add("getR9Guidname :" + r8Guid);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
//-------------------------------------get------------------------------------------//
|
||||
//-------------------------------------get------------------------------------------//
|
||||
|
||||
//-------------------------------------has------------------------------------------//
|
||||
//-------------------------------------has------------------------------------------//
|
||||
|
||||
public boolean hasFunc(String r8lib) {
|
||||
return hashfunc.containsKey(r8lib);
|
||||
}
|
||||
public boolean hasFunc(String r8lib) {
|
||||
return hashfunc.containsKey(r8lib);
|
||||
}
|
||||
|
||||
public boolean hasGuid(String r8guid) {
|
||||
return hashguid.containsKey(r8guid);
|
||||
}
|
||||
public boolean hasGuid(String r8guid) {
|
||||
return hashguid.containsKey(r8guid);
|
||||
}
|
||||
|
||||
public boolean hasMacro(String r8macro) {
|
||||
return hashmacro.containsKey(r8macro);
|
||||
}
|
||||
|
||||
//-------------------------------------has------------------------------------------//
|
||||
|
||||
//-------------------------------------init------------------------------------------//
|
||||
public boolean hasMacro(String r8macro) {
|
||||
return hashmacro.containsKey(r8macro);
|
||||
}
|
||||
|
||||
//-------------------------------------has------------------------------------------//
|
||||
|
||||
//-------------------------------------init------------------------------------------//
|
||||
|
||||
private static final Database init() {
|
||||
if (System.getenv("WORKSPACE") == null) {
|
||||
return new Database("C:" + File.separator + "tianocore" + File.separator + "edk2" + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");
|
||||
} else {
|
||||
return new Database(System.getenv("WORKSPACE") + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");
|
||||
}
|
||||
}
|
||||
|
||||
public static final Database getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
private static final Database init() {
|
||||
if (System.getenv("WORKSPACE") == null) {
|
||||
return new Database("C:" + File.separator + "tianocore" + File.separator + "edk2" + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");
|
||||
} else {
|
||||
return new Database(System.getenv("WORKSPACE") + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");
|
||||
}
|
||||
}
|
||||
|
||||
public static final Database getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,66 +19,66 @@ import java.util.*;
|
|||
import javax.swing.*;
|
||||
|
||||
public final class FirstPanel extends JPanel implements ActionListener, ItemListener, UI {
|
||||
/**
|
||||
* Define class Serial Version UID
|
||||
*/
|
||||
private static final long serialVersionUID = 207759413522910399L;
|
||||
|
||||
private static final FirstPanel INSTANCE = FirstPanel.init();
|
||||
|
||||
private String startpath;
|
||||
|
||||
private JButton moduleButton, goButton, msaEditorButton, criticButton, specifyCommentButton;
|
||||
private JTextField moduletext;
|
||||
private JTextArea log;
|
||||
private JFileChooser fc = new JFileChooser();
|
||||
private JCheckBox filebox, screenbox, mibox, criticbox, defaultpathbox;
|
||||
|
||||
private boolean tofile = true, toscreen = true;
|
||||
private PrintWriter logfile;
|
||||
/**
|
||||
* Define class Serial Version UID
|
||||
*/
|
||||
private static final long serialVersionUID = 207759413522910399L;
|
||||
|
||||
private static final FirstPanel INSTANCE = FirstPanel.init();
|
||||
|
||||
private String startpath;
|
||||
|
||||
private JButton moduleButton, goButton, msaEditorButton, criticButton, specifyCommentButton;
|
||||
private JTextField moduletext;
|
||||
private JTextArea log;
|
||||
private JFileChooser fc = new JFileChooser();
|
||||
private JCheckBox filebox, screenbox, mibox, criticbox, defaultpathbox;
|
||||
|
||||
private boolean tofile = true, toscreen = true;
|
||||
private PrintWriter logfile;
|
||||
|
||||
FirstPanel() {
|
||||
FirstPanel() {
|
||||
GridBagLayout gridbag = new GridBagLayout();
|
||||
setLayout(gridbag);
|
||||
|
||||
GridBagConstraints cst = new GridBagConstraints();
|
||||
|
||||
goButton = new JButton("Go");
|
||||
goButton.addActionListener(this);
|
||||
goButton.setActionCommand("go");
|
||||
|
||||
moduleButton = new JButton("Choose ModulePath");
|
||||
moduleButton.addActionListener(this);
|
||||
GridBagConstraints cst = new GridBagConstraints();
|
||||
|
||||
goButton = new JButton("Go");
|
||||
goButton.addActionListener(this);
|
||||
goButton.setActionCommand("go");
|
||||
|
||||
moduleButton = new JButton("Choose ModulePath");
|
||||
moduleButton.addActionListener(this);
|
||||
|
||||
msaEditorButton = new JButton("MsaEditor");
|
||||
msaEditorButton.addActionListener(this);
|
||||
|
||||
criticButton = new JButton("Critic");
|
||||
criticButton.addActionListener(this);
|
||||
|
||||
specifyCommentButton = new JButton("Comment Style");
|
||||
specifyCommentButton.addActionListener(this);
|
||||
|
||||
moduletext = new JTextField(30);
|
||||
|
||||
filebox = new JCheckBox("Output to logfile", true);
|
||||
filebox.addItemListener(this);
|
||||
|
||||
screenbox = new JCheckBox("Specify logfile", false);
|
||||
screenbox.addItemListener(this);
|
||||
|
||||
mibox = new JCheckBox("Print ModuleInfo", false);
|
||||
mibox.addItemListener(this);
|
||||
MigrationTool.printModuleInfo = false;
|
||||
|
||||
criticbox = new JCheckBox("Run Critic", true);
|
||||
criticbox.addItemListener(this);
|
||||
MigrationTool.doCritic = true;
|
||||
|
||||
defaultpathbox = new JCheckBox("Use Default Output Path", true);
|
||||
defaultpathbox.addItemListener(this);
|
||||
MigrationTool.defaultoutput = true;
|
||||
|
||||
msaEditorButton = new JButton("MsaEditor");
|
||||
msaEditorButton.addActionListener(this);
|
||||
|
||||
criticButton = new JButton("Critic");
|
||||
criticButton.addActionListener(this);
|
||||
|
||||
specifyCommentButton = new JButton("Comment Style");
|
||||
specifyCommentButton.addActionListener(this);
|
||||
|
||||
moduletext = new JTextField(30);
|
||||
|
||||
filebox = new JCheckBox("Output to logfile", true);
|
||||
filebox.addItemListener(this);
|
||||
|
||||
screenbox = new JCheckBox("Specify logfile", false);
|
||||
screenbox.addItemListener(this);
|
||||
|
||||
mibox = new JCheckBox("Print ModuleInfo", false);
|
||||
mibox.addItemListener(this);
|
||||
MigrationTool.printModuleInfo = false;
|
||||
|
||||
criticbox = new JCheckBox("Run Critic", true);
|
||||
criticbox.addItemListener(this);
|
||||
MigrationTool.doCritic = true;
|
||||
|
||||
defaultpathbox = new JCheckBox("Use Default Output Path", true);
|
||||
defaultpathbox.addItemListener(this);
|
||||
MigrationTool.defaultoutput = true;
|
||||
|
||||
JPanel modulePanel = new JPanel();
|
||||
modulePanel.add(moduleButton);
|
||||
modulePanel.add(moduletext);
|
||||
|
@ -119,163 +119,163 @@ public final class FirstPanel extends JPanel implements ActionListener, ItemList
|
|||
cst.fill = GridBagConstraints.BOTH;
|
||||
gridbag.setConstraints(logScrollPane, cst);
|
||||
add(logScrollPane);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------//
|
||||
|
||||
public boolean yesOrNo(String question) {
|
||||
return JOptionPane.showConfirmDialog(this, question, "Yes or No", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
|
||||
}
|
||||
|
||||
public void print(String message) {
|
||||
if (toscreen == true) {
|
||||
log.append(message);
|
||||
System.out.print(message);
|
||||
}
|
||||
if (tofile == true) {
|
||||
logfile.append(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void println(String message) {
|
||||
print(message + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------//
|
||||
|
||||
public boolean yesOrNo(String question) {
|
||||
return JOptionPane.showConfirmDialog(this, question, "Yes or No", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
|
||||
}
|
||||
|
||||
public void print(String message) {
|
||||
if (toscreen == true) {
|
||||
log.append(message);
|
||||
System.out.print(message);
|
||||
}
|
||||
if (tofile == true) {
|
||||
logfile.append(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void println(String message) {
|
||||
print(message + "\n");
|
||||
}
|
||||
|
||||
public void println(Set<String> hash) {
|
||||
if (toscreen == true) {
|
||||
log.append(hash + "\n");
|
||||
System.out.println(hash);
|
||||
}
|
||||
if (tofile == true) {
|
||||
logfile.append(hash + "\n");
|
||||
}
|
||||
}
|
||||
public void println(Set<String> hash) {
|
||||
if (toscreen == true) {
|
||||
log.append(hash + "\n");
|
||||
System.out.println(hash);
|
||||
}
|
||||
if (tofile == true) {
|
||||
logfile.append(hash + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
public String choose(String message, Object[] choicelist) {
|
||||
return (String)JOptionPane.showInputDialog(this, message,"Choose",JOptionPane.PLAIN_MESSAGE,null,choicelist,choicelist[0]);
|
||||
}
|
||||
|
||||
public String getInput(String message) {
|
||||
return (String)JOptionPane.showInputDialog(message);
|
||||
}
|
||||
public String choose(String message, Object[] choicelist) {
|
||||
return (String)JOptionPane.showInputDialog(this, message,"Choose",JOptionPane.PLAIN_MESSAGE,null,choicelist,choicelist[0]);
|
||||
}
|
||||
|
||||
public String getInput(String message) {
|
||||
return (String)JOptionPane.showInputDialog(message);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------//
|
||||
|
||||
public String getFilepath(String title, int mode) {
|
||||
fc.setDialogTitle(title);
|
||||
fc.setFileSelectionMode(mode);
|
||||
if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
|
||||
log.append(fc.getSelectedFile().getAbsolutePath() + "\n");
|
||||
return fc.getSelectedFile().getAbsolutePath();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public String getFilepath(String title, int mode) {
|
||||
fc.setDialogTitle(title);
|
||||
fc.setFileSelectionMode(mode);
|
||||
if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
|
||||
log.append(fc.getSelectedFile().getAbsolutePath() + "\n");
|
||||
return fc.getSelectedFile().getAbsolutePath();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------//
|
||||
//---------------------------------------------------------------------------------------//
|
||||
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if ( e.getSource() == moduleButton ) {
|
||||
startpath = getFilepath("Please choose a starting path", JFileChooser.DIRECTORIES_ONLY);
|
||||
moduletext.setText(startpath);
|
||||
startpath = getFilepath("Please choose a starting path", JFileChooser.DIRECTORIES_ONLY);
|
||||
moduletext.setText(startpath);
|
||||
}
|
||||
if ( e.getSource() == goButton ) {
|
||||
try {
|
||||
logfile = new PrintWriter(new BufferedWriter(new FileWriter(startpath.replaceAll(Common.strseparate, "$1") + File.separator + "migration.log")));
|
||||
MigrationTool.startMigrateAll(startpath);
|
||||
logfile.flush();
|
||||
logfile.close();
|
||||
} catch (Exception en) {
|
||||
println(en.getMessage());
|
||||
}
|
||||
try {
|
||||
logfile = new PrintWriter(new BufferedWriter(new FileWriter(startpath.replaceAll(Common.strseparate, "$1") + File.separator + "migration.log")));
|
||||
MigrationTool.startMigrateAll(startpath);
|
||||
logfile.flush();
|
||||
logfile.close();
|
||||
} catch (Exception en) {
|
||||
println(en.getMessage());
|
||||
}
|
||||
}
|
||||
if ( e.getSource() == msaEditorButton) {
|
||||
try {
|
||||
MsaTreeEditor.init();
|
||||
} catch (Exception en) {
|
||||
println(en.getMessage());
|
||||
}
|
||||
try {
|
||||
MsaTreeEditor.init();
|
||||
} catch (Exception en) {
|
||||
println(en.getMessage());
|
||||
}
|
||||
}
|
||||
if ( e.getSource() == criticButton) {
|
||||
try {
|
||||
Critic.fireAt(startpath);
|
||||
} catch (Exception en) {
|
||||
println(en.getMessage());
|
||||
}
|
||||
try {
|
||||
Critic.fireAt(startpath);
|
||||
} catch (Exception en) {
|
||||
println(en.getMessage());
|
||||
}
|
||||
}
|
||||
if ( e.getSource() == specifyCommentButton) {
|
||||
try { // input examine is not imposed but should be added
|
||||
MigrationTool.MIGRATIONCOMMENT = getInput("Please type in wanted comment style used by the tool\nbe sure to start with '//', or you won't enjoy the result");
|
||||
//MsaWriter.parse("C:\\tianocore\\edk2\\MdePkg\\Library\\BaseLib\\BaseLib.msa");
|
||||
} catch (Exception en) {
|
||||
println(en.getMessage());
|
||||
}
|
||||
try { // input examine is not imposed but should be added
|
||||
MigrationTool.MIGRATIONCOMMENT = getInput("Please type in wanted comment style used by the tool\nbe sure to start with '//', or you won't enjoy the result");
|
||||
//MsaWriter.parse("C:\\tianocore\\edk2\\MdePkg\\Library\\BaseLib\\BaseLib.msa");
|
||||
} catch (Exception en) {
|
||||
println(en.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void itemStateChanged(ItemEvent e) {
|
||||
if (e.getSource() == filebox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
System.out.println("filebox DESELECTED");
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
System.out.println("filebox SELECTED");
|
||||
}
|
||||
} else if (e.getSource() == screenbox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
System.out.println("screenbox DESELECTED");
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
System.out.println("screenbox SELECTED");
|
||||
}
|
||||
} else if (e.getSource() == mibox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
MigrationTool.printModuleInfo = false;
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
MigrationTool.printModuleInfo = true;
|
||||
}
|
||||
} else if (e.getSource() == criticbox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
MigrationTool.doCritic = false;
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
MigrationTool.doCritic = true;
|
||||
}
|
||||
} else if (e.getSource() == defaultpathbox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
MigrationTool.defaultoutput = false;
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
MigrationTool.defaultoutput = true;
|
||||
}
|
||||
}
|
||||
if (e.getSource() == filebox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
System.out.println("filebox DESELECTED");
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
System.out.println("filebox SELECTED");
|
||||
}
|
||||
} else if (e.getSource() == screenbox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
System.out.println("screenbox DESELECTED");
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
System.out.println("screenbox SELECTED");
|
||||
}
|
||||
} else if (e.getSource() == mibox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
MigrationTool.printModuleInfo = false;
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
MigrationTool.printModuleInfo = true;
|
||||
}
|
||||
} else if (e.getSource() == criticbox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
MigrationTool.doCritic = false;
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
MigrationTool.doCritic = true;
|
||||
}
|
||||
} else if (e.getSource() == defaultpathbox) {
|
||||
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
||||
MigrationTool.defaultoutput = false;
|
||||
} else if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||
MigrationTool.defaultoutput = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------//
|
||||
|
||||
private static final FirstPanel init() {
|
||||
try {
|
||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||
//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
|
||||
//UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
|
||||
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
|
||||
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
|
||||
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
|
||||
JFrame frame = new JFrame("MigrationTools");
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
try {
|
||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||
//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
|
||||
//UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
|
||||
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
|
||||
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
|
||||
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
|
||||
JFrame frame = new JFrame("MigrationTools");
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
FirstPanel fp = new FirstPanel();
|
||||
//fp.setLayout(new GridBagLayout());
|
||||
//fp.setLayout(new BoxLayout(fp, BoxLayout.Y_AXIS));
|
||||
fp.setOpaque(true);
|
||||
//fp.setLayout(new GridBagLayout());
|
||||
//fp.setLayout(new BoxLayout(fp, BoxLayout.Y_AXIS));
|
||||
fp.setOpaque(true);
|
||||
frame.setContentPane(fp);
|
||||
|
||||
frame.pack();
|
||||
frame.setVisible(true);
|
||||
|
||||
return fp;
|
||||
frame.pack();
|
||||
frame.setVisible(true);
|
||||
|
||||
return fp;
|
||||
}
|
||||
|
||||
public static final FirstPanel getInstance() {
|
||||
return INSTANCE;
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
|
@ -15,50 +15,50 @@ package org.tianocore.migration;
|
|||
import java.util.regex.*;
|
||||
|
||||
public class Func {
|
||||
Func(String r8func,String r8lib,String r9func,String r9lib) {
|
||||
r8funcname = r8func;
|
||||
r8libname = r8lib;
|
||||
r9funcname = r9func;
|
||||
r9libname = r9lib;
|
||||
}
|
||||
Func(String[] linecontext) {
|
||||
r8funcname = linecontext[1];
|
||||
r8libname = linecontext[0];
|
||||
r9funcname = linecontext[2];
|
||||
r9libname = linecontext[3];
|
||||
}
|
||||
public String r8funcname;
|
||||
public String r8libname;
|
||||
public String r9funcname;
|
||||
public String r9libname;
|
||||
Func(String r8func,String r8lib,String r9func,String r9lib) {
|
||||
r8funcname = r8func;
|
||||
r8libname = r8lib;
|
||||
r9funcname = r9func;
|
||||
r9libname = r9lib;
|
||||
}
|
||||
Func(String[] linecontext) {
|
||||
r8funcname = linecontext[1];
|
||||
r8libname = linecontext[0];
|
||||
r9funcname = linecontext[2];
|
||||
r9libname = linecontext[3];
|
||||
}
|
||||
public String r8funcname;
|
||||
public String r8libname;
|
||||
public String r9funcname;
|
||||
public String r9libname;
|
||||
|
||||
public static Pattern ptnbrace = Pattern.compile("\\{[^\\{\\}]*\\}",Pattern.MULTILINE);
|
||||
//public static Pattern ptnfuncc = Pattern.compile("([a-zA-Z_]\\w*)\\s*\\([^\\)\\(]*\\)",Pattern.MULTILINE);
|
||||
public static Pattern ptnfuncc = Pattern.compile("([a-zA-Z_]\\w*)\\s*\\(",Pattern.MULTILINE);
|
||||
public static Pattern ptnfuncd = Pattern.compile("([a-zA-Z_]\\w*)\\s*\\([^\\)\\(]*\\)\\s*@",Pattern.MULTILINE);
|
||||
public static Pattern ptnlowcase = Pattern.compile("[a-z]"); // must be removed
|
||||
|
||||
private static String reservedwords = "if for pack while switch return sizeof";
|
||||
|
||||
public static String register(Matcher mtr, ModuleInfo mi, Database db) {
|
||||
String temp = null;
|
||||
public static Pattern ptnbrace = Pattern.compile("\\{[^\\{\\}]*\\}",Pattern.MULTILINE);
|
||||
//public static Pattern ptnfuncc = Pattern.compile("([a-zA-Z_]\\w*)\\s*\\([^\\)\\(]*\\)",Pattern.MULTILINE);
|
||||
public static Pattern ptnfuncc = Pattern.compile("([a-zA-Z_]\\w*)\\s*\\(",Pattern.MULTILINE);
|
||||
public static Pattern ptnfuncd = Pattern.compile("([a-zA-Z_]\\w*)\\s*\\([^\\)\\(]*\\)\\s*@",Pattern.MULTILINE);
|
||||
public static Pattern ptnlowcase = Pattern.compile("[a-z]"); // must be removed
|
||||
|
||||
private static String reservedwords = "if for pack while switch return sizeof";
|
||||
|
||||
public static String register(Matcher mtr, ModuleInfo mi, Database db) {
|
||||
String temp = null;
|
||||
|
||||
temp = mtr.group(1); // both changed and not changed funcc are registered , for finding all the non-local function calls
|
||||
Matcher mtrlowcase = ptnlowcase.matcher(temp); // must be removed , so the two funcs can be merged
|
||||
if (!reservedwords.contains(temp) && mtrlowcase.find()) {
|
||||
mi.hashfuncc.add(temp);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
/*
|
||||
public static String registerFuncD(Matcher mtr, ModuleInfo mi, Database db) {
|
||||
String temp = null;
|
||||
temp = mtr.group(1); // both changed and not changed funcc are registered , for finding all the non-local function calls
|
||||
Matcher mtrlowcase = ptnlowcase.matcher(temp); // must be removed , so the two funcs can be merged
|
||||
if (!reservedwords.contains(temp) && mtrlowcase.find()) {
|
||||
mi.hashfuncc.add(temp);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
/*
|
||||
public static String registerFuncD(Matcher mtr, ModuleInfo mi, Database db) {
|
||||
String temp = null;
|
||||
|
||||
temp = mtr.group(1); // both changed and not changed funcd are registered , for finding all the non-local function calls
|
||||
if (!reservedwords.contains(temp)) {
|
||||
mi.hashfuncd.add(temp);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
*/
|
||||
temp = mtr.group(1); // both changed and not changed funcd are registered , for finding all the non-local function calls
|
||||
if (!reservedwords.contains(temp)) {
|
||||
mi.hashfuncd.add(temp);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -15,47 +15,47 @@ package org.tianocore.migration;
|
|||
import java.util.regex.*;
|
||||
|
||||
public class Guid {
|
||||
Guid (String r8, String t, String n, String r9, String gv, String p) {
|
||||
r8name = r8;
|
||||
type = t;
|
||||
name = n;
|
||||
r9name = r9;
|
||||
guidvalue = gv;
|
||||
pack = p;
|
||||
}
|
||||
Guid (String[] linecontext, String t) {
|
||||
r8name = linecontext[1];
|
||||
type = t;
|
||||
name = linecontext[0];
|
||||
r9name = linecontext[2];
|
||||
guidvalue = linecontext[3];
|
||||
pack = linecontext[4];
|
||||
}
|
||||
public String r8name;
|
||||
public String type;
|
||||
public String name;
|
||||
public String r9name;
|
||||
public String guidvalue;
|
||||
public String pack;
|
||||
Guid (String r8, String t, String n, String r9, String gv, String p) {
|
||||
r8name = r8;
|
||||
type = t;
|
||||
name = n;
|
||||
r9name = r9;
|
||||
guidvalue = gv;
|
||||
pack = p;
|
||||
}
|
||||
Guid (String[] linecontext, String t) {
|
||||
r8name = linecontext[1];
|
||||
type = t;
|
||||
name = linecontext[0];
|
||||
r9name = linecontext[2];
|
||||
guidvalue = linecontext[3];
|
||||
pack = linecontext[4];
|
||||
}
|
||||
public String r8name;
|
||||
public String type;
|
||||
public String name;
|
||||
public String r9name;
|
||||
public String guidvalue;
|
||||
public String pack;
|
||||
|
||||
public static Pattern ptnguid = Pattern.compile("g\\w*Guid");
|
||||
public static Pattern ptnguid = Pattern.compile("g\\w*Guid");
|
||||
|
||||
public static String register(Matcher mtr, ModuleInfo mi, Database db) {
|
||||
String type = null;
|
||||
String temp = null;
|
||||
|
||||
temp = mtr.group();
|
||||
if (MigrationTool.db.hasGuid(temp)) { // only changed guids registered, because both changed and not changed guids are included in database
|
||||
type = MigrationTool.db.getGuidType(temp);
|
||||
if (type.matches("Protocol")) {
|
||||
mi.protocol.add(temp);
|
||||
} else if (type.matches("Ppi")) {
|
||||
mi.ppi.add(temp);
|
||||
} else if (type.matches("Guid")) {
|
||||
mi.guid.add(temp);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static String register(Matcher mtr, ModuleInfo mi, Database db) {
|
||||
String type = null;
|
||||
String temp = null;
|
||||
|
||||
temp = mtr.group();
|
||||
if (MigrationTool.db.hasGuid(temp)) { // only changed guids registered, because both changed and not changed guids are included in database
|
||||
type = MigrationTool.db.getGuidType(temp);
|
||||
if (type.matches("Protocol")) {
|
||||
mi.protocol.add(temp);
|
||||
} else if (type.matches("Ppi")) {
|
||||
mi.ppi.add(temp);
|
||||
} else if (type.matches("Guid")) {
|
||||
mi.guid.add(temp);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -15,32 +15,32 @@ package org.tianocore.migration;
|
|||
import java.util.regex.*;
|
||||
|
||||
public class Macro {
|
||||
Macro(String r8, String r9) {
|
||||
r8name = r8;
|
||||
r9name = r9;
|
||||
}
|
||||
Macro(String[] linecontext) {
|
||||
r8name = linecontext[0];
|
||||
r9name = linecontext[1];
|
||||
}
|
||||
|
||||
public String r8name;
|
||||
public String r9name;
|
||||
Macro(String r8, String r9) {
|
||||
r8name = r8;
|
||||
r9name = r9;
|
||||
}
|
||||
Macro(String[] linecontext) {
|
||||
r8name = linecontext[0];
|
||||
r9name = linecontext[1];
|
||||
}
|
||||
|
||||
public String r8name;
|
||||
public String r9name;
|
||||
|
||||
public static Pattern ptntmacro = Pattern.compile("\\b[A-Z_]+\\s*?\\(?\\b",Pattern.MULTILINE);
|
||||
public static Pattern ptntmacro = Pattern.compile("\\b[A-Z_]+\\s*?\\(?\\b",Pattern.MULTILINE);
|
||||
|
||||
private static String unmacro = "VOID UINTN BOOLEAN ASSERT OPTIONAL STATIC NULL TRUE IN OUT FALSE";
|
||||
private static String unmacro = "VOID UINTN BOOLEAN ASSERT OPTIONAL STATIC NULL TRUE IN OUT FALSE";
|
||||
|
||||
public static String register(Matcher mtr, ModuleInfo mi, Database db) {
|
||||
String temp = null;
|
||||
|
||||
temp = mtr.group();
|
||||
if (MigrationTool.db.hasMacro(temp)) { // only changed macros registered, because the database of macro has only changed ones
|
||||
if (!unmacro.contains(temp)) {
|
||||
mi.hashnonlocalmacro.add(temp);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static String register(Matcher mtr, ModuleInfo mi, Database db) {
|
||||
String temp = null;
|
||||
|
||||
temp = mtr.group();
|
||||
if (MigrationTool.db.hasMacro(temp)) { // only changed macros registered, because the database of macro has only changed ones
|
||||
if (!unmacro.contains(temp)) {
|
||||
mi.hashnonlocalmacro.add(temp);
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -18,91 +18,91 @@ import java.util.*;
|
|||
import javax.swing.JFileChooser;
|
||||
|
||||
public class MigrationTool {
|
||||
public static UI ui = null;
|
||||
public static Database db = null;
|
||||
public static UI ui = null;
|
||||
public static Database db = null;
|
||||
|
||||
public static String MIGRATIONCOMMENT = "//%@//";
|
||||
public static String MIGRATIONCOMMENT = "//%@//";
|
||||
|
||||
public static boolean printModuleInfo = false;
|
||||
public static boolean doCritic = false;
|
||||
public static boolean defaultoutput = false;
|
||||
|
||||
public static final HashMap<ModuleInfo, String> ModuleInfoMap = new HashMap<ModuleInfo, String>();
|
||||
public static boolean printModuleInfo = false;
|
||||
public static boolean doCritic = false;
|
||||
public static boolean defaultoutput = false;
|
||||
|
||||
public static final HashMap<ModuleInfo, String> ModuleInfoMap = new HashMap<ModuleInfo, String>();
|
||||
|
||||
private static final void mainFlow(ModuleInfo mi) throws Exception {
|
||||
private static final void mainFlow(ModuleInfo mi) throws Exception {
|
||||
|
||||
ModuleReader.ModuleScan(mi);
|
||||
|
||||
//MigrationTool.ui.yesOrNo("go on replace?");
|
||||
SourceFileReplacer.fireAt(mi); // some adding library actions are taken here,so it must be put before "MsaWriter"
|
||||
ModuleReader.ModuleScan(mi);
|
||||
|
||||
//MigrationTool.ui.yesOrNo("go on replace?");
|
||||
SourceFileReplacer.fireAt(mi); // some adding library actions are taken here,so it must be put before "MsaWriter"
|
||||
|
||||
//MigrationTool.ui.yesOrNo("go on show?");
|
||||
// show result
|
||||
if (MigrationTool.printModuleInfo) {
|
||||
MigrationTool.ui.println("\nModule Information : ");
|
||||
MigrationTool.ui.println("Entrypoint : " + mi.entrypoint);
|
||||
show(mi.protocol, "Protocol : ");
|
||||
show(mi.ppi, "Ppi : ");
|
||||
show(mi.guid, "Guid : ");
|
||||
show(mi.hashfuncc, "call : ");
|
||||
show(mi.hashfuncd, "def : ");
|
||||
show(mi.hashEFIcall, "EFIcall : ");
|
||||
show(mi.hashnonlocalmacro, "macro : ");
|
||||
show(mi.hashnonlocalfunc, "nonlocal : ");
|
||||
show(mi.hashr8only, "hashr8only : ");
|
||||
}
|
||||
//MigrationTool.ui.yesOrNo("go on show?");
|
||||
// show result
|
||||
if (MigrationTool.printModuleInfo) {
|
||||
MigrationTool.ui.println("\nModule Information : ");
|
||||
MigrationTool.ui.println("Entrypoint : " + mi.entrypoint);
|
||||
show(mi.protocol, "Protocol : ");
|
||||
show(mi.ppi, "Ppi : ");
|
||||
show(mi.guid, "Guid : ");
|
||||
show(mi.hashfuncc, "call : ");
|
||||
show(mi.hashfuncd, "def : ");
|
||||
show(mi.hashEFIcall, "EFIcall : ");
|
||||
show(mi.hashnonlocalmacro, "macro : ");
|
||||
show(mi.hashnonlocalfunc, "nonlocal : ");
|
||||
show(mi.hashr8only, "hashr8only : ");
|
||||
}
|
||||
|
||||
//MigrationTool.ui.yesOrNo("go on msawrite?");
|
||||
new MsaWriter(mi).flush();
|
||||
//MigrationTool.ui.yesOrNo("go on critic?");
|
||||
//MigrationTool.ui.yesOrNo("go on msawrite?");
|
||||
new MsaWriter(mi).flush();
|
||||
//MigrationTool.ui.yesOrNo("go on critic?");
|
||||
|
||||
if (MigrationTool.doCritic) {
|
||||
Critic.fireAt(ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename);
|
||||
}
|
||||
if (MigrationTool.doCritic) {
|
||||
Critic.fireAt(ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename);
|
||||
}
|
||||
|
||||
//MigrationTool.ui.yesOrNo("go on delete?");
|
||||
Common.deleteDir(mi.modulepath + File.separator + "temp");
|
||||
//MigrationTool.ui.yesOrNo("go on delete?");
|
||||
Common.deleteDir(mi.modulepath + File.separator + "temp");
|
||||
|
||||
MigrationTool.ui.println("Errors Left : " + MigrationTool.db.error);
|
||||
MigrationTool.ui.println("Complete!");
|
||||
//MigrationTool.ui.println("Your R9 module was placed here: " + mi.modulepath + File.separator + "result");
|
||||
//MigrationTool.ui.println("Your logfile was placed here: " + mi.modulepath);
|
||||
}
|
||||
MigrationTool.ui.println("Errors Left : " + MigrationTool.db.error);
|
||||
MigrationTool.ui.println("Complete!");
|
||||
//MigrationTool.ui.println("Your R9 module was placed here: " + mi.modulepath + File.separator + "result");
|
||||
//MigrationTool.ui.println("Your logfile was placed here: " + mi.modulepath);
|
||||
}
|
||||
|
||||
private static final void show(Set<String> hash, String show) {
|
||||
MigrationTool.ui.println(show + hash.size());
|
||||
MigrationTool.ui.println(hash);
|
||||
}
|
||||
private static final void show(Set<String> hash, String show) {
|
||||
MigrationTool.ui.println(show + hash.size());
|
||||
MigrationTool.ui.println(hash);
|
||||
}
|
||||
|
||||
private static final String assignOutPutPath(String inputpath) {
|
||||
if (MigrationTool.defaultoutput) {
|
||||
return inputpath.replaceAll(Common.strseparate, "$1");
|
||||
} else {
|
||||
return MigrationTool.ui.getFilepath("Please choose where to place the output module", JFileChooser.DIRECTORIES_ONLY);
|
||||
}
|
||||
}
|
||||
|
||||
public static final void seekModule(String filepath) throws Exception {
|
||||
if (ModuleInfo.isModule(filepath)) {
|
||||
ModuleInfoMap.put(new ModuleInfo(filepath), assignOutPutPath(filepath));
|
||||
}
|
||||
}
|
||||
private static final String assignOutPutPath(String inputpath) {
|
||||
if (MigrationTool.defaultoutput) {
|
||||
return inputpath.replaceAll(Common.strseparate, "$1");
|
||||
} else {
|
||||
return MigrationTool.ui.getFilepath("Please choose where to place the output module", JFileChooser.DIRECTORIES_ONLY);
|
||||
}
|
||||
}
|
||||
|
||||
public static final void seekModule(String filepath) throws Exception {
|
||||
if (ModuleInfo.isModule(filepath)) {
|
||||
ModuleInfoMap.put(new ModuleInfo(filepath), assignOutPutPath(filepath));
|
||||
}
|
||||
}
|
||||
|
||||
public static final void startMigrateAll(String path) throws Exception {
|
||||
MigrationTool.ui.println("Project Migration");
|
||||
MigrationTool.ui.println("Copyright (c) 2006, Intel Corporation");
|
||||
Common.toDoAll(path, MigrationTool.class.getMethod("seekModule", String.class), null, null, Common.DIR);
|
||||
|
||||
Iterator<ModuleInfo> miit = ModuleInfoMap.keySet().iterator();
|
||||
while (miit.hasNext()) {
|
||||
mainFlow(miit.next());
|
||||
}
|
||||
|
||||
ModuleInfoMap.clear();
|
||||
}
|
||||
public static final void startMigrateAll(String path) throws Exception {
|
||||
MigrationTool.ui.println("Project Migration");
|
||||
MigrationTool.ui.println("Copyright (c) 2006, Intel Corporation");
|
||||
Common.toDoAll(path, MigrationTool.class.getMethod("seekModule", String.class), null, null, Common.DIR);
|
||||
|
||||
Iterator<ModuleInfo> miit = ModuleInfoMap.keySet().iterator();
|
||||
while (miit.hasNext()) {
|
||||
mainFlow(miit.next());
|
||||
}
|
||||
|
||||
ModuleInfoMap.clear();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
ui = FirstPanel.getInstance();
|
||||
db = Database.getInstance();
|
||||
}
|
||||
public static void main(String[] args) throws Exception {
|
||||
ui = FirstPanel.getInstance();
|
||||
db = Database.getInstance();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,67 +16,67 @@ import java.io.*;
|
|||
import java.util.*;
|
||||
|
||||
/*
|
||||
Class ModuleInfo is built for scanning the source files, it contains all the needed
|
||||
Class ModuleInfo is built for scanning the source files, it contains all the needed
|
||||
information and all the temporary data.
|
||||
*/
|
||||
public final class ModuleInfo {
|
||||
ModuleInfo(String modulepath) throws Exception {
|
||||
this.modulepath = modulepath;
|
||||
}
|
||||
ModuleInfo(String modulepath) throws Exception {
|
||||
this.modulepath = modulepath;
|
||||
}
|
||||
|
||||
public final String modulepath;
|
||||
|
||||
public String modulename = null;
|
||||
public String guidvalue = null;
|
||||
public String moduletype = null;
|
||||
public String entrypoint = null;
|
||||
|
||||
public final Set<String> localmodulesources = new HashSet<String>(); //contains both .c and .h
|
||||
public final Set<String> preprocessedccodes = new HashSet<String>();
|
||||
public final Set<String> msaorinf = new HashSet<String>(); //only a little, hash may be too big for this
|
||||
|
||||
public final Set<String> hashfuncc = new HashSet<String>();
|
||||
public final Set<String> hashfuncd = new HashSet<String>();
|
||||
public final Set<String> hashnonlocalfunc = new HashSet<String>();
|
||||
public final Set<String> hashnonlocalmacro = new HashSet<String>();
|
||||
public final Set<String> hashEFIcall = new HashSet<String>();
|
||||
public final Set<String> hashr8only = new HashSet<String>();
|
||||
|
||||
public final Set<String> hashrequiredr9libs = new HashSet<String>(); // hashrequiredr9libs is now all added in SourceFileReplacer
|
||||
public final Set<String> guid = new HashSet<String>();
|
||||
public final Set<String> protocol = new HashSet<String>();
|
||||
public final Set<String> ppi = new HashSet<String>();
|
||||
public final String modulepath;
|
||||
|
||||
public String modulename = null;
|
||||
public String guidvalue = null;
|
||||
public String moduletype = null;
|
||||
public String entrypoint = null;
|
||||
|
||||
public final Set<String> localmodulesources = new HashSet<String>(); //contains both .c and .h
|
||||
public final Set<String> preprocessedccodes = new HashSet<String>();
|
||||
public final Set<String> msaorinf = new HashSet<String>(); //only a little, hash may be too big for this
|
||||
|
||||
public final Set<String> hashfuncc = new HashSet<String>();
|
||||
public final Set<String> hashfuncd = new HashSet<String>();
|
||||
public final Set<String> hashnonlocalfunc = new HashSet<String>();
|
||||
public final Set<String> hashnonlocalmacro = new HashSet<String>();
|
||||
public final Set<String> hashEFIcall = new HashSet<String>();
|
||||
public final Set<String> hashr8only = new HashSet<String>();
|
||||
|
||||
public final Set<String> hashrequiredr9libs = new HashSet<String>(); // hashrequiredr9libs is now all added in SourceFileReplacer
|
||||
public final Set<String> guid = new HashSet<String>();
|
||||
public final Set<String> protocol = new HashSet<String>();
|
||||
public final Set<String> ppi = new HashSet<String>();
|
||||
|
||||
public final String getModuleType() {
|
||||
if (moduletype.contains("PEI")) {
|
||||
return "PEIM";
|
||||
} else {
|
||||
return "DXE_DRIVER";
|
||||
}
|
||||
}
|
||||
|
||||
public final void enroll(String filepath) throws Exception {
|
||||
String temp = null;
|
||||
if (filepath.contains(".c") || filepath.contains(".C") || filepath.contains(".h") ||
|
||||
filepath.contains(".H") || filepath.contains(".dxs") || filepath.contains(".uni")) {
|
||||
localmodulesources.add(filepath.replace(modulepath + File.separator, ""));
|
||||
} else if (filepath.contains(".inf") || filepath.contains(".msa")) {
|
||||
temp = filepath.replace(modulepath + File.separator, "");
|
||||
if (!temp.contains(File.separator)) { // .inf in subdirectory is not regarded
|
||||
msaorinf.add(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
public final String getModuleType() {
|
||||
if (moduletype.contains("PEI")) {
|
||||
return "PEIM";
|
||||
} else {
|
||||
return "DXE_DRIVER";
|
||||
}
|
||||
}
|
||||
|
||||
public final void enroll(String filepath) throws Exception {
|
||||
String temp = null;
|
||||
if (filepath.contains(".c") || filepath.contains(".C") || filepath.contains(".h") ||
|
||||
filepath.contains(".H") || filepath.contains(".dxs") || filepath.contains(".uni")) {
|
||||
localmodulesources.add(filepath.replace(modulepath + File.separator, ""));
|
||||
} else if (filepath.contains(".inf") || filepath.contains(".msa")) {
|
||||
temp = filepath.replace(modulepath + File.separator, "");
|
||||
if (!temp.contains(File.separator)) { // .inf in subdirectory is not regarded
|
||||
msaorinf.add(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final boolean isModule(String path) {
|
||||
String[] list = new File(path).list();
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
if (!new File(list[i]).isDirectory()) {
|
||||
if (list[i].contains(".inf") || list[i].contains(".msa")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static final boolean isModule(String path) {
|
||||
String[] list = new File(path).list();
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
if (!new File(list[i]).isDirectory()) {
|
||||
if (list[i].contains(".inf") || list[i].contains(".msa")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -19,257 +19,257 @@ import java.util.regex.*;
|
|||
import org.tianocore.*;
|
||||
|
||||
public final class ModuleReader {
|
||||
private static ModuleInfo mi;
|
||||
|
||||
private static final Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*=\\s*([^\\s]*)");
|
||||
private static final Pattern ptnsection = Pattern.compile("\\[([^\\[\\]]*)\\]([^\\[\\]]*)\\n", Pattern.MULTILINE);
|
||||
private static final Pattern ptnfilename = Pattern.compile("[^\\s]+");
|
||||
|
||||
public static final void ModuleScan(ModuleInfo m) throws Exception {
|
||||
mi = m;
|
||||
private static ModuleInfo mi;
|
||||
|
||||
private static final Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*=\\s*([^\\s]*)");
|
||||
private static final Pattern ptnsection = Pattern.compile("\\[([^\\[\\]]*)\\]([^\\[\\]]*)\\n", Pattern.MULTILINE);
|
||||
private static final Pattern ptnfilename = Pattern.compile("[^\\s]+");
|
||||
|
||||
public static final void ModuleScan(ModuleInfo m) throws Exception {
|
||||
mi = m;
|
||||
|
||||
Common.toDoAll(mi.modulepath, ModuleInfo.class.getMethod("enroll", String.class), mi, null, Common.FILE);
|
||||
Common.toDoAll(mi.modulepath, ModuleInfo.class.getMethod("enroll", String.class), mi, null, Common.FILE);
|
||||
|
||||
String filename = null;
|
||||
if (mi.msaorinf.isEmpty()) {
|
||||
MigrationTool.ui.println("No INF nor MSA file found!");
|
||||
System.exit(0);
|
||||
} else {
|
||||
if (mi.msaorinf.size() == 1) {
|
||||
filename = (String)mi.msaorinf.toArray()[0];
|
||||
} else {
|
||||
filename = MigrationTool.ui.choose("Found .inf or .msa file for module\n" + mi.modulepath + "\nChoose one Please", mi.msaorinf.toArray());
|
||||
}
|
||||
}
|
||||
String filename = null;
|
||||
if (mi.msaorinf.isEmpty()) {
|
||||
MigrationTool.ui.println("No INF nor MSA file found!");
|
||||
System.exit(0);
|
||||
} else {
|
||||
if (mi.msaorinf.size() == 1) {
|
||||
filename = (String)mi.msaorinf.toArray()[0];
|
||||
} else {
|
||||
filename = MigrationTool.ui.choose("Found .inf or .msa file for module\n" + mi.modulepath + "\nChoose one Please", mi.msaorinf.toArray());
|
||||
}
|
||||
}
|
||||
|
||||
if (filename.contains(".inf")) {
|
||||
readInf(filename);
|
||||
} else if (filename.contains(".msa")) {
|
||||
readMsa(filename);
|
||||
}
|
||||
if (filename.contains(".inf")) {
|
||||
readInf(filename);
|
||||
} else if (filename.contains(".msa")) {
|
||||
readMsa(filename);
|
||||
}
|
||||
|
||||
CommentOutNonLocalHFile();
|
||||
parsePreProcessedSourceCode();
|
||||
CommentOutNonLocalHFile();
|
||||
parsePreProcessedSourceCode();
|
||||
|
||||
}
|
||||
|
||||
private static final void readMsa(String name) throws Exception {
|
||||
ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(new File(mi.modulepath + File.separator + name));
|
||||
ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.getModuleSurfaceArea();
|
||||
MsaHeaderDocument.MsaHeader msaheader = msa.getMsaHeader();
|
||||
}
|
||||
|
||||
private static final void readMsa(String name) throws Exception {
|
||||
ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(new File(mi.modulepath + File.separator + name));
|
||||
ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.getModuleSurfaceArea();
|
||||
MsaHeaderDocument.MsaHeader msaheader = msa.getMsaHeader();
|
||||
|
||||
mi.modulename = msaheader.getModuleName();
|
||||
mi.guidvalue = msaheader.getGuidValue();
|
||||
mi.moduletype = msaheader.getModuleType().toString(); // ???
|
||||
mi.modulename = msaheader.getModuleName();
|
||||
mi.guidvalue = msaheader.getGuidValue();
|
||||
mi.moduletype = msaheader.getModuleType().toString(); // ???
|
||||
|
||||
SourceFilesDocument.SourceFiles sourcefiles = msa.getSourceFiles();
|
||||
|
||||
String temp;
|
||||
Iterator<FilenameDocument.Filename> li = sourcefiles.getFilenameList().iterator();
|
||||
while (li.hasNext()) {
|
||||
if (!mi.localmodulesources.contains(temp = li.next().toString())) {
|
||||
System.out.println("Source File Missing! : " + temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static final void readInf(String name) throws Exception {
|
||||
System.out.println("\nParsing INF file: " + name);
|
||||
String wholeline;
|
||||
Matcher mtrinfequation;
|
||||
Matcher mtrsection;
|
||||
Matcher mtrfilename;
|
||||
SourceFilesDocument.SourceFiles sourcefiles = msa.getSourceFiles();
|
||||
|
||||
String temp;
|
||||
Iterator<FilenameDocument.Filename> li = sourcefiles.getFilenameList().iterator();
|
||||
while (li.hasNext()) {
|
||||
if (!mi.localmodulesources.contains(temp = li.next().toString())) {
|
||||
System.out.println("Source File Missing! : " + temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static final void readInf(String name) throws Exception {
|
||||
System.out.println("\nParsing INF file: " + name);
|
||||
String wholeline;
|
||||
Matcher mtrinfequation;
|
||||
Matcher mtrsection;
|
||||
Matcher mtrfilename;
|
||||
|
||||
wholeline = Common.file2string(mi.modulepath + File.separator + name);
|
||||
mtrsection = ptnsection.matcher(wholeline);
|
||||
while (mtrsection.find()) {
|
||||
if (mtrsection.group(1).matches("defines")) {
|
||||
mtrinfequation = ptninfequation.matcher(mtrsection.group(2));
|
||||
while (mtrinfequation.find()) {
|
||||
if (mtrinfequation.group(1).matches("BASE_NAME")) {
|
||||
mi.modulename = mtrinfequation.group(2);
|
||||
}
|
||||
if (mtrinfequation.group(1).matches("FILE_GUID")) {
|
||||
mi.guidvalue = mtrinfequation.group(2);
|
||||
}
|
||||
if (mtrinfequation.group(1).matches("COMPONENT_TYPE")) {
|
||||
mi.moduletype = mtrinfequation.group(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mtrsection.group(1).matches("nmake.common")) {
|
||||
mtrinfequation = ptninfequation.matcher(mtrsection.group(2));
|
||||
while (mtrinfequation.find()) {
|
||||
if (mtrinfequation.group(1).matches("IMAGE_ENTRY_POINT")) {
|
||||
mi.entrypoint = mtrinfequation.group(2);
|
||||
}
|
||||
if (mtrinfequation.group(1).matches("DPX_SOURCE")) {
|
||||
if (!mi.localmodulesources.contains(mtrinfequation.group(2))) {
|
||||
MigrationTool.ui.println("DPX File Missing! : " + mtrinfequation.group(2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mtrsection.group(1).contains("sources.")) {
|
||||
mtrfilename = ptnfilename.matcher(mtrsection.group(2));
|
||||
while (mtrfilename.find()) {
|
||||
if (!mi.localmodulesources.contains(mtrfilename.group())) {
|
||||
MigrationTool.ui.println("Source File Missing! : " + mtrfilename.group());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add '//' to all non-local include lines
|
||||
private static final void CommentOutNonLocalHFile() throws IOException {
|
||||
BufferedReader rd;
|
||||
String line;
|
||||
String curFile;
|
||||
PrintWriter outfile;
|
||||
wholeline = Common.file2string(mi.modulepath + File.separator + name);
|
||||
mtrsection = ptnsection.matcher(wholeline);
|
||||
while (mtrsection.find()) {
|
||||
if (mtrsection.group(1).matches("defines")) {
|
||||
mtrinfequation = ptninfequation.matcher(mtrsection.group(2));
|
||||
while (mtrinfequation.find()) {
|
||||
if (mtrinfequation.group(1).matches("BASE_NAME")) {
|
||||
mi.modulename = mtrinfequation.group(2);
|
||||
}
|
||||
if (mtrinfequation.group(1).matches("FILE_GUID")) {
|
||||
mi.guidvalue = mtrinfequation.group(2);
|
||||
}
|
||||
if (mtrinfequation.group(1).matches("COMPONENT_TYPE")) {
|
||||
mi.moduletype = mtrinfequation.group(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mtrsection.group(1).matches("nmake.common")) {
|
||||
mtrinfequation = ptninfequation.matcher(mtrsection.group(2));
|
||||
while (mtrinfequation.find()) {
|
||||
if (mtrinfequation.group(1).matches("IMAGE_ENTRY_POINT")) {
|
||||
mi.entrypoint = mtrinfequation.group(2);
|
||||
}
|
||||
if (mtrinfequation.group(1).matches("DPX_SOURCE")) {
|
||||
if (!mi.localmodulesources.contains(mtrinfequation.group(2))) {
|
||||
MigrationTool.ui.println("DPX File Missing! : " + mtrinfequation.group(2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mtrsection.group(1).contains("sources.")) {
|
||||
mtrfilename = ptnfilename.matcher(mtrsection.group(2));
|
||||
while (mtrfilename.find()) {
|
||||
if (!mi.localmodulesources.contains(mtrfilename.group())) {
|
||||
MigrationTool.ui.println("Source File Missing! : " + mtrfilename.group());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add '//' to all non-local include lines
|
||||
private static final void CommentOutNonLocalHFile() throws IOException {
|
||||
BufferedReader rd;
|
||||
String line;
|
||||
String curFile;
|
||||
PrintWriter outfile;
|
||||
|
||||
Pattern ptninclude = Pattern.compile("[\"<](.*[.]h)[\">]");
|
||||
Matcher mtrinclude;
|
||||
Pattern ptninclude = Pattern.compile("[\"<](.*[.]h)[\">]");
|
||||
Matcher mtrinclude;
|
||||
|
||||
Iterator<String> ii = mi.localmodulesources.iterator();
|
||||
while ( ii.hasNext() ) {
|
||||
curFile = ii.next();
|
||||
rd = new BufferedReader(new FileReader(mi.modulepath + File.separator + curFile));
|
||||
Common.ensureDir(mi.modulepath + File.separator + "temp" + File.separator + curFile);
|
||||
outfile = new PrintWriter(new BufferedWriter(new FileWriter(mi.modulepath + File.separator + "temp" + File.separator + curFile)));
|
||||
|
||||
/*
|
||||
if (curFile.contains(".dxs")) {
|
||||
if (mi.moduletype.contains("PEI")) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.contains("#include")) {
|
||||
mtrinclude = ptninclude.matcher(line);
|
||||
if (mtrinclude.find() && mi.localmodulesources.contains(mtrinclude.group(1))) {
|
||||
} else {
|
||||
line = MigrationTool.MIGRATIONCOMMENT + line;
|
||||
}
|
||||
}
|
||||
outfile.append(line + '\n');
|
||||
}
|
||||
outfile.flush();
|
||||
outfile.close();
|
||||
|
||||
}
|
||||
}
|
||||
Iterator<String> ii = mi.localmodulesources.iterator();
|
||||
while ( ii.hasNext() ) {
|
||||
curFile = ii.next();
|
||||
rd = new BufferedReader(new FileReader(mi.modulepath + File.separator + curFile));
|
||||
Common.ensureDir(mi.modulepath + File.separator + "temp" + File.separator + curFile);
|
||||
outfile = new PrintWriter(new BufferedWriter(new FileWriter(mi.modulepath + File.separator + "temp" + File.separator + curFile)));
|
||||
|
||||
/*
|
||||
if (curFile.contains(".dxs")) {
|
||||
if (mi.moduletype.contains("PEI")) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
while ((line = rd.readLine()) != null) {
|
||||
if (line.contains("#include")) {
|
||||
mtrinclude = ptninclude.matcher(line);
|
||||
if (mtrinclude.find() && mi.localmodulesources.contains(mtrinclude.group(1))) {
|
||||
} else {
|
||||
line = MigrationTool.MIGRATIONCOMMENT + line;
|
||||
}
|
||||
}
|
||||
outfile.append(line + '\n');
|
||||
}
|
||||
outfile.flush();
|
||||
outfile.close();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private static final void parsePreProcessedSourceCode() throws Exception {
|
||||
//Cl cl = new Cl(modulepath);
|
||||
//cl.execute("Fat.c");
|
||||
//cl.generateAll(preprocessedccodes);
|
||||
//
|
||||
//System.out.println("Note!!!! The CL is not implemented now , pls do it manually!!! RUN :");
|
||||
//System.out.println("cl " + modulepath + "\\temp\\*.c" + " -P");
|
||||
//String[] list = new File(modulepath + File.separator + "temp").list(); // without CL , add
|
||||
BufferedReader rd = null;
|
||||
String ifile = null;
|
||||
String line = null;
|
||||
String temp = null;
|
||||
|
||||
Iterator<String> ii = mi.localmodulesources.iterator();
|
||||
while (ii.hasNext()) {
|
||||
temp = ii.next();
|
||||
if (temp.contains(".c")) {
|
||||
mi.preprocessedccodes.add(temp);
|
||||
}
|
||||
}
|
||||
|
||||
ii = mi.preprocessedccodes.iterator();
|
||||
|
||||
Pattern patefifuncc = Pattern.compile("g?(BS|RT)\\s*->\\s*([a-zA-Z_]\\w*)",Pattern.MULTILINE);
|
||||
Pattern patentrypoint = Pattern.compile("EFI_([A-Z]*)_ENTRY_POINT\\s*\\(([^\\(\\)]*)\\)",Pattern.MULTILINE);
|
||||
Matcher matguid;
|
||||
Matcher matfuncc;
|
||||
Matcher matfuncd;
|
||||
Matcher matenclosereplace;
|
||||
Matcher matefifuncc;
|
||||
Matcher matentrypoint;
|
||||
Matcher matmacro;
|
||||
|
||||
while (ii.hasNext()) {
|
||||
StringBuffer wholefile = new StringBuffer();
|
||||
ifile = ii.next();
|
||||
rd = new BufferedReader(new FileReader(mi.modulepath + File.separator + "temp" + File.separator + ifile));
|
||||
while ((line = rd.readLine()) != null) {
|
||||
wholefile.append(line + '\n');
|
||||
}
|
||||
line = wholefile.toString();
|
||||
|
||||
// if this is a Pei phase module , add these library class to .msa
|
||||
matentrypoint = patentrypoint.matcher(line);
|
||||
if (matentrypoint.find()) {
|
||||
mi.entrypoint = matentrypoint.group(2);
|
||||
if (matentrypoint.group(1).matches("PEIM")) {
|
||||
mi.hashrequiredr9libs.add("PeimEntryPoint");
|
||||
} else {
|
||||
mi.hashrequiredr9libs.add("UefiDriverEntryPoint");
|
||||
}
|
||||
}
|
||||
|
||||
// find guid
|
||||
matguid = Guid.ptnguid.matcher(line); // several ways to implement this , which one is faster ? :
|
||||
while (matguid.find()) { // 1.currently , find once , then call to identify which is it
|
||||
if ((temp = Guid.register(matguid, mi, MigrationTool.db)) != null) { // 2.use 3 different matchers , search 3 times to find each
|
||||
//matguid.appendReplacement(result, MigrationTool.db.getR9Guidname(temp)); // search the database for all 3 kinds of guids , high cost
|
||||
}
|
||||
}
|
||||
//matguid.appendTail(result);
|
||||
//line = result.toString();
|
||||
private static final void parsePreProcessedSourceCode() throws Exception {
|
||||
//Cl cl = new Cl(modulepath);
|
||||
//cl.execute("Fat.c");
|
||||
//cl.generateAll(preprocessedccodes);
|
||||
//
|
||||
//System.out.println("Note!!!! The CL is not implemented now , pls do it manually!!! RUN :");
|
||||
//System.out.println("cl " + modulepath + "\\temp\\*.c" + " -P");
|
||||
//String[] list = new File(modulepath + File.separator + "temp").list(); // without CL , add
|
||||
BufferedReader rd = null;
|
||||
String ifile = null;
|
||||
String line = null;
|
||||
String temp = null;
|
||||
|
||||
Iterator<String> ii = mi.localmodulesources.iterator();
|
||||
while (ii.hasNext()) {
|
||||
temp = ii.next();
|
||||
if (temp.contains(".c")) {
|
||||
mi.preprocessedccodes.add(temp);
|
||||
}
|
||||
}
|
||||
|
||||
ii = mi.preprocessedccodes.iterator();
|
||||
|
||||
Pattern patefifuncc = Pattern.compile("g?(BS|RT)\\s*->\\s*([a-zA-Z_]\\w*)",Pattern.MULTILINE);
|
||||
Pattern patentrypoint = Pattern.compile("EFI_([A-Z]*)_ENTRY_POINT\\s*\\(([^\\(\\)]*)\\)",Pattern.MULTILINE);
|
||||
Matcher matguid;
|
||||
Matcher matfuncc;
|
||||
Matcher matfuncd;
|
||||
Matcher matenclosereplace;
|
||||
Matcher matefifuncc;
|
||||
Matcher matentrypoint;
|
||||
Matcher matmacro;
|
||||
|
||||
while (ii.hasNext()) {
|
||||
StringBuffer wholefile = new StringBuffer();
|
||||
ifile = ii.next();
|
||||
rd = new BufferedReader(new FileReader(mi.modulepath + File.separator + "temp" + File.separator + ifile));
|
||||
while ((line = rd.readLine()) != null) {
|
||||
wholefile.append(line + '\n');
|
||||
}
|
||||
line = wholefile.toString();
|
||||
|
||||
// if this is a Pei phase module , add these library class to .msa
|
||||
matentrypoint = patentrypoint.matcher(line);
|
||||
if (matentrypoint.find()) {
|
||||
mi.entrypoint = matentrypoint.group(2);
|
||||
if (matentrypoint.group(1).matches("PEIM")) {
|
||||
mi.hashrequiredr9libs.add("PeimEntryPoint");
|
||||
} else {
|
||||
mi.hashrequiredr9libs.add("UefiDriverEntryPoint");
|
||||
}
|
||||
}
|
||||
|
||||
// find guid
|
||||
matguid = Guid.ptnguid.matcher(line); // several ways to implement this , which one is faster ? :
|
||||
while (matguid.find()) { // 1.currently , find once , then call to identify which is it
|
||||
if ((temp = Guid.register(matguid, mi, MigrationTool.db)) != null) { // 2.use 3 different matchers , search 3 times to find each
|
||||
//matguid.appendReplacement(result, MigrationTool.db.getR9Guidname(temp)); // search the database for all 3 kinds of guids , high cost
|
||||
}
|
||||
}
|
||||
//matguid.appendTail(result);
|
||||
//line = result.toString();
|
||||
|
||||
// find EFI call in form of '->' , many 'gUnicodeCollationInterface->' like things are not changed
|
||||
// This item is not simply replaced , special operation is required.
|
||||
matefifuncc = patefifuncc.matcher(line);
|
||||
while (matefifuncc.find()) {
|
||||
mi.hashEFIcall.add(matefifuncc.group(2));
|
||||
}
|
||||
// find EFI call in form of '->' , many 'gUnicodeCollationInterface->' like things are not changed
|
||||
// This item is not simply replaced , special operation is required.
|
||||
matefifuncc = patefifuncc.matcher(line);
|
||||
while (matefifuncc.find()) {
|
||||
mi.hashEFIcall.add(matefifuncc.group(2));
|
||||
}
|
||||
|
||||
// find function call
|
||||
matfuncc = Func.ptnfuncc.matcher(line);
|
||||
while (matfuncc.find()) {
|
||||
if ((temp = Func.register(matfuncc, mi, MigrationTool.db)) != null) {
|
||||
//MigrationTool.ui.println(ifile + " dofunc " + temp);
|
||||
//matfuncc.appendReplacement(result, MigrationTool.db.getR9Func(temp));
|
||||
}
|
||||
}
|
||||
//matfuncc.appendTail(result);
|
||||
//line = result.toString();
|
||||
// find function call
|
||||
matfuncc = Func.ptnfuncc.matcher(line);
|
||||
while (matfuncc.find()) {
|
||||
if ((temp = Func.register(matfuncc, mi, MigrationTool.db)) != null) {
|
||||
//MigrationTool.ui.println(ifile + " dofunc " + temp);
|
||||
//matfuncc.appendReplacement(result, MigrationTool.db.getR9Func(temp));
|
||||
}
|
||||
}
|
||||
//matfuncc.appendTail(result);
|
||||
//line = result.toString();
|
||||
|
||||
// find macro
|
||||
matmacro = Macro.ptntmacro.matcher(line);
|
||||
while (matmacro.find()) {
|
||||
if ((temp = Macro.register(matmacro, mi, MigrationTool.db)) != null) {
|
||||
}
|
||||
}
|
||||
|
||||
// find function definition
|
||||
// replace all {} to @
|
||||
while ((matenclosereplace = Func.ptnbrace.matcher(line)).find()) {
|
||||
line = matenclosereplace.replaceAll("@");
|
||||
}
|
||||
// find macro
|
||||
matmacro = Macro.ptntmacro.matcher(line);
|
||||
while (matmacro.find()) {
|
||||
if ((temp = Macro.register(matmacro, mi, MigrationTool.db)) != null) {
|
||||
}
|
||||
}
|
||||
|
||||
// find function definition
|
||||
// replace all {} to @
|
||||
while ((matenclosereplace = Func.ptnbrace.matcher(line)).find()) {
|
||||
line = matenclosereplace.replaceAll("@");
|
||||
}
|
||||
|
||||
matfuncd = Func.ptnfuncd.matcher(line);
|
||||
while (matfuncd.find()) {
|
||||
if ((temp = Func.register(matfuncd, mi, MigrationTool.db)) != null) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// op on hash
|
||||
Iterator<String> funcci = mi.hashfuncc.iterator();
|
||||
while (funcci.hasNext()) {
|
||||
if (!mi.hashfuncd.contains(temp = funcci.next()) && !mi.hashEFIcall.contains(temp)) {
|
||||
mi.hashnonlocalfunc.add(temp); // this set contains both changed and not changed items
|
||||
}
|
||||
}
|
||||
}
|
||||
matfuncd = Func.ptnfuncd.matcher(line);
|
||||
while (matfuncd.find()) {
|
||||
if ((temp = Func.register(matfuncd, mi, MigrationTool.db)) != null) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// op on hash
|
||||
Iterator<String> funcci = mi.hashfuncc.iterator();
|
||||
while (funcci.hasNext()) {
|
||||
if (!mi.hashfuncd.contains(temp = funcci.next()) && !mi.hashEFIcall.contains(temp)) {
|
||||
mi.hashnonlocalfunc.add(temp); // this set contains both changed and not changed items
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,19 +8,19 @@ import javax.xml.parsers.*;
|
|||
import org.w3c.dom.*;
|
||||
|
||||
public class MsaTreeEditor extends JPanel {
|
||||
/**
|
||||
* Define class Serial Version UID
|
||||
*/
|
||||
private static final long serialVersionUID = 3169905938472150649L;
|
||||
|
||||
private
|
||||
/**
|
||||
* Define class Serial Version UID
|
||||
*/
|
||||
private static final long serialVersionUID = 3169905938472150649L;
|
||||
|
||||
private
|
||||
/*
|
||||
MsaTreeEditor(ModuleInfo m, UI u, ModuleSurfaceAreaDocument md) {
|
||||
mi = m;
|
||||
ui = u;
|
||||
msadoc = md;
|
||||
|
||||
//rootNode = msadoc.getDomNode();
|
||||
MsaTreeEditor(ModuleInfo m, UI u, ModuleSurfaceAreaDocument md) {
|
||||
mi = m;
|
||||
ui = u;
|
||||
msadoc = md;
|
||||
|
||||
//rootNode = msadoc.getDomNode();
|
||||
rootNode = new DefaultMutableTreeNode("Root Node");
|
||||
treeModel = new DefaultTreeModel(rootNode);
|
||||
|
||||
|
@ -43,9 +43,9 @@ public class MsaTreeEditor extends JPanel {
|
|||
|
||||
addNode(rootNode, "1st");
|
||||
addNode(rootNode, "2nd");
|
||||
}
|
||||
}
|
||||
*/
|
||||
MsaTreeEditor() throws Exception {
|
||||
MsaTreeEditor() throws Exception {
|
||||
rootNode = new DefaultMutableTreeNode("Root Node");
|
||||
treeModel = new DefaultTreeModel(rootNode);
|
||||
|
||||
|
@ -70,92 +70,92 @@ public class MsaTreeEditor extends JPanel {
|
|||
menuitemdel.addActionListener(actionListener);
|
||||
menuitemedit.addActionListener(actionListener);
|
||||
|
||||
genDomTree(MigrationTool.ui.getFilepath("Select a msa file", JFileChooser.FILES_AND_DIRECTORIES));
|
||||
}
|
||||
|
||||
//private ModuleSurfaceAreaDocument msadoc;
|
||||
|
||||
private JTree tree;
|
||||
private DefaultMutableTreeNode rootNode;
|
||||
private DefaultTreeModel treeModel;
|
||||
private JMenuItem menuitemadd, menuitemdel, menuitemedit;
|
||||
|
||||
private JPopupMenu popupmenu;
|
||||
private MouseAdapter mouseadapter = new MouseAdapter() {
|
||||
public void mouseReleased(MouseEvent me) {
|
||||
if (me.getClickCount() == 1 && SwingUtilities.isRightMouseButton(me)) {
|
||||
tree.setSelectionPath(tree.getPathForLocation(me.getX(), me.getY()));
|
||||
popupmenu.show(tree, me.getX(), me.getY());
|
||||
}
|
||||
}
|
||||
};
|
||||
private ActionListener actionListener = new ActionListener() {
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
if (ae.getSource() == menuitemadd) {
|
||||
addNode();
|
||||
} else if (ae.getSource() == menuitemdel) {
|
||||
delNode();
|
||||
} else if (ae.getSource() == menuitemedit) {
|
||||
editNode();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private void editNode() {
|
||||
DefaultMutableTreeNode node = (DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent());
|
||||
Element element = (Element)node.getUserObject();
|
||||
System.out.println(element.getTextContent());
|
||||
}
|
||||
|
||||
private void delNode() {
|
||||
treeModel.removeNodeFromParent((DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent()));
|
||||
}
|
||||
|
||||
private void addNode() {
|
||||
addNode((DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent()), MigrationTool.ui.getInput("Input Node Name"));
|
||||
}
|
||||
|
||||
private DefaultMutableTreeNode addNode(DefaultMutableTreeNode parentNode, Object child) {
|
||||
genDomTree(MigrationTool.ui.getFilepath("Select a msa file", JFileChooser.FILES_AND_DIRECTORIES));
|
||||
}
|
||||
|
||||
//private ModuleSurfaceAreaDocument msadoc;
|
||||
|
||||
private JTree tree;
|
||||
private DefaultMutableTreeNode rootNode;
|
||||
private DefaultTreeModel treeModel;
|
||||
private JMenuItem menuitemadd, menuitemdel, menuitemedit;
|
||||
|
||||
private JPopupMenu popupmenu;
|
||||
private MouseAdapter mouseadapter = new MouseAdapter() {
|
||||
public void mouseReleased(MouseEvent me) {
|
||||
if (me.getClickCount() == 1 && SwingUtilities.isRightMouseButton(me)) {
|
||||
tree.setSelectionPath(tree.getPathForLocation(me.getX(), me.getY()));
|
||||
popupmenu.show(tree, me.getX(), me.getY());
|
||||
}
|
||||
}
|
||||
};
|
||||
private ActionListener actionListener = new ActionListener() {
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
if (ae.getSource() == menuitemadd) {
|
||||
addNode();
|
||||
} else if (ae.getSource() == menuitemdel) {
|
||||
delNode();
|
||||
} else if (ae.getSource() == menuitemedit) {
|
||||
editNode();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private void editNode() {
|
||||
DefaultMutableTreeNode node = (DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent());
|
||||
Element element = (Element)node.getUserObject();
|
||||
System.out.println(element.getTextContent());
|
||||
}
|
||||
|
||||
private void delNode() {
|
||||
treeModel.removeNodeFromParent((DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent()));
|
||||
}
|
||||
|
||||
private void addNode() {
|
||||
addNode((DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent()), MigrationTool.ui.getInput("Input Node Name"));
|
||||
}
|
||||
|
||||
private DefaultMutableTreeNode addNode(DefaultMutableTreeNode parentNode, Object child) {
|
||||
DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(child);
|
||||
treeModel.insertNodeInto(childNode, parentNode, parentNode.getChildCount());
|
||||
tree.scrollPathToVisible(new TreePath(childNode.getPath()));
|
||||
return childNode;
|
||||
}
|
||||
}
|
||||
|
||||
private final void handleNode(Node node, DefaultMutableTreeNode parentNode) {
|
||||
DefaultMutableTreeNode curNode = null;
|
||||
if (node.getNodeType() == Node.ELEMENT_NODE) {
|
||||
System.out.println("elem");
|
||||
curNode = addNode(parentNode, node);
|
||||
} else if (node.getNodeType() == Node.DOCUMENT_NODE){
|
||||
System.out.println("doc");
|
||||
curNode = addNode(parentNode, "MsaDocum"); // can Docum be with Root Node?
|
||||
}
|
||||
private final void handleNode(Node node, DefaultMutableTreeNode parentNode) {
|
||||
DefaultMutableTreeNode curNode = null;
|
||||
if (node.getNodeType() == Node.ELEMENT_NODE) {
|
||||
System.out.println("elem");
|
||||
curNode = addNode(parentNode, node);
|
||||
} else if (node.getNodeType() == Node.DOCUMENT_NODE){
|
||||
System.out.println("doc");
|
||||
curNode = addNode(parentNode, "MsaDocum"); // can Docum be with Root Node?
|
||||
}
|
||||
|
||||
NodeList nodelist = node.getChildNodes();
|
||||
for (int i = 0; i < nodelist.getLength(); i++) {
|
||||
handleNode(nodelist.item(i), curNode);
|
||||
}
|
||||
}
|
||||
|
||||
private final void genDomTree(String filename) throws Exception {
|
||||
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||
Document document = builder.parse(filename);
|
||||
handleNode(document, rootNode);
|
||||
}
|
||||
|
||||
public static final void init() throws Exception {
|
||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||
NodeList nodelist = node.getChildNodes();
|
||||
for (int i = 0; i < nodelist.getLength(); i++) {
|
||||
handleNode(nodelist.item(i), curNode);
|
||||
}
|
||||
}
|
||||
|
||||
private final void genDomTree(String filename) throws Exception {
|
||||
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||
Document document = builder.parse(filename);
|
||||
handleNode(document, rootNode);
|
||||
}
|
||||
|
||||
public static final void init() throws Exception {
|
||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||
|
||||
JFrame frame = new JFrame("MsaTreeEditor");
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
JFrame frame = new JFrame("MsaTreeEditor");
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
MsaTreeEditor mte = new MsaTreeEditor();
|
||||
mte.setLayout(new GridBagLayout());
|
||||
mte.setOpaque(true);
|
||||
MsaTreeEditor mte = new MsaTreeEditor();
|
||||
mte.setLayout(new GridBagLayout());
|
||||
mte.setOpaque(true);
|
||||
frame.setContentPane(mte);
|
||||
|
||||
frame.pack();
|
||||
frame.setVisible(true);
|
||||
}
|
||||
frame.pack();
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
|
@ -20,163 +20,163 @@ import org.tianocore.SupportedArchitectures.Enum;
|
|||
import org.apache.xmlbeans.*;
|
||||
|
||||
public class MsaWriter {
|
||||
MsaWriter(ModuleInfo moduleinfo) {
|
||||
mi = moduleinfo;
|
||||
}
|
||||
MsaWriter(ModuleInfo moduleinfo) {
|
||||
mi = moduleinfo;
|
||||
}
|
||||
|
||||
private ModuleInfo mi;
|
||||
|
||||
private ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.newInstance();
|
||||
|
||||
private ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.addNewModuleSurfaceArea();
|
||||
private MsaHeaderDocument.MsaHeader msaheader = msa.addNewMsaHeader();
|
||||
private ModuleDefinitionsDocument.ModuleDefinitions md = msa.addNewModuleDefinitions();
|
||||
private SourceFilesDocument.SourceFiles sourcefiles = msa.addNewSourceFiles(); //found local .h files are not written
|
||||
private GuidsDocument.Guids guids;
|
||||
private ProtocolsDocument.Protocols protocols;
|
||||
private PPIsDocument.PPIs ppis;
|
||||
private PackageDependenciesDocument.PackageDependencies pd = msa.addNewPackageDependencies();
|
||||
private LibraryClassDefinitionsDocument.LibraryClassDefinitions libclassdefs = msa.addNewLibraryClassDefinitions();
|
||||
private ExternsDocument.Externs externs = msa.addNewExterns();
|
||||
|
||||
private String Query (String requirement) throws Exception {
|
||||
String answer;
|
||||
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
|
||||
System.out.println(requirement);
|
||||
while ((answer = rd.readLine()).length() == 0) ;
|
||||
return answer;
|
||||
}
|
||||
|
||||
private void addSourceFiles (String name) { // furthur modification needed
|
||||
List<Enum> arch = new ArrayList<Enum>();
|
||||
FilenameDocument.Filename filename;
|
||||
filename = sourcefiles.addNewFilename();
|
||||
filename.setStringValue(name);
|
||||
|
||||
if (name.contains("x64" + File.separator)) { // filename ???
|
||||
arch.add(SupportedArchitectures.X_64);
|
||||
System.out.println("x64" + File.separator);
|
||||
filename.setSupArchList(arch);
|
||||
} else if (name.contains("Ia32" + File.separator)) { // filename ???
|
||||
arch.add(SupportedArchitectures.IA_32);
|
||||
System.out.println("Ia32" + File.separator);
|
||||
filename.setSupArchList(arch);
|
||||
} else if (name.contains("Ipf" + File.separator)) { // filename ???
|
||||
arch.add(SupportedArchitectures.IPF);
|
||||
System.out.println("Ipf" + File.separator);
|
||||
filename.setSupArchList(arch);
|
||||
} else if (name.contains("Ebc" + File.separator)) { // filename ???
|
||||
arch.add(SupportedArchitectures.EBC);
|
||||
System.out.println("Ebc" + File.separator);
|
||||
filename.setSupArchList(arch);
|
||||
}
|
||||
}
|
||||
|
||||
private ModuleSurfaceAreaDocument fulfillMsadoc() throws Exception {
|
||||
Iterator<String> it;
|
||||
String temp;
|
||||
|
||||
if (mi.modulename != null) {
|
||||
msaheader.setModuleName(mi.modulename);
|
||||
} else {
|
||||
msaheader.setModuleName(mi.modulename = Query("Module Name Not Found! Please Input ModuleName"));
|
||||
}
|
||||
if (mi.guidvalue == null) {
|
||||
mi.guidvalue = UUID.randomUUID().toString();
|
||||
MigrationTool.ui.println ("Guid value can not be retrieved from inf file. Generate " + mi.guidvalue + " at random!");
|
||||
}
|
||||
msaheader.setGuidValue(mi.guidvalue);
|
||||
if (mi.moduletype != null) {
|
||||
msaheader.setModuleType(ModuleTypeDef.Enum.forString(mi.getModuleType()));
|
||||
/*
|
||||
if (mi.moduletype.contains("PEI")) {
|
||||
msaheader.setModuleType(ModuleTypeDef.Enum.forString("PEIM"));
|
||||
} else {
|
||||
msaheader.setModuleType(ModuleTypeDef.Enum.forString("DXE_DRIVER"));
|
||||
}
|
||||
*/
|
||||
} else {
|
||||
msaheader.setModuleType(ModuleTypeDef.Enum.forString(mi.moduletype = Query("Guid Value Not Found! Please Input Guid Value")));
|
||||
}
|
||||
private ModuleInfo mi;
|
||||
|
||||
private ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.newInstance();
|
||||
|
||||
private ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.addNewModuleSurfaceArea();
|
||||
private MsaHeaderDocument.MsaHeader msaheader = msa.addNewMsaHeader();
|
||||
private ModuleDefinitionsDocument.ModuleDefinitions md = msa.addNewModuleDefinitions();
|
||||
private SourceFilesDocument.SourceFiles sourcefiles = msa.addNewSourceFiles(); //found local .h files are not written
|
||||
private GuidsDocument.Guids guids;
|
||||
private ProtocolsDocument.Protocols protocols;
|
||||
private PPIsDocument.PPIs ppis;
|
||||
private PackageDependenciesDocument.PackageDependencies pd = msa.addNewPackageDependencies();
|
||||
private LibraryClassDefinitionsDocument.LibraryClassDefinitions libclassdefs = msa.addNewLibraryClassDefinitions();
|
||||
private ExternsDocument.Externs externs = msa.addNewExterns();
|
||||
|
||||
private String Query (String requirement) throws Exception {
|
||||
String answer;
|
||||
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
|
||||
System.out.println(requirement);
|
||||
while ((answer = rd.readLine()).length() == 0) ;
|
||||
return answer;
|
||||
}
|
||||
|
||||
private void addSourceFiles (String name) { // furthur modification needed
|
||||
List<Enum> arch = new ArrayList<Enum>();
|
||||
FilenameDocument.Filename filename;
|
||||
filename = sourcefiles.addNewFilename();
|
||||
filename.setStringValue(name);
|
||||
|
||||
if (name.contains("x64" + File.separator)) { // filename ???
|
||||
arch.add(SupportedArchitectures.X_64);
|
||||
System.out.println("x64" + File.separator);
|
||||
filename.setSupArchList(arch);
|
||||
} else if (name.contains("Ia32" + File.separator)) { // filename ???
|
||||
arch.add(SupportedArchitectures.IA_32);
|
||||
System.out.println("Ia32" + File.separator);
|
||||
filename.setSupArchList(arch);
|
||||
} else if (name.contains("Ipf" + File.separator)) { // filename ???
|
||||
arch.add(SupportedArchitectures.IPF);
|
||||
System.out.println("Ipf" + File.separator);
|
||||
filename.setSupArchList(arch);
|
||||
} else if (name.contains("Ebc" + File.separator)) { // filename ???
|
||||
arch.add(SupportedArchitectures.EBC);
|
||||
System.out.println("Ebc" + File.separator);
|
||||
filename.setSupArchList(arch);
|
||||
}
|
||||
}
|
||||
|
||||
private ModuleSurfaceAreaDocument fulfillMsadoc() throws Exception {
|
||||
Iterator<String> it;
|
||||
String temp;
|
||||
|
||||
if (mi.modulename != null) {
|
||||
msaheader.setModuleName(mi.modulename);
|
||||
} else {
|
||||
msaheader.setModuleName(mi.modulename = Query("Module Name Not Found! Please Input ModuleName"));
|
||||
}
|
||||
if (mi.guidvalue == null) {
|
||||
mi.guidvalue = UUID.randomUUID().toString();
|
||||
MigrationTool.ui.println ("Guid value can not be retrieved from inf file. Generate " + mi.guidvalue + " at random!");
|
||||
}
|
||||
msaheader.setGuidValue(mi.guidvalue);
|
||||
if (mi.moduletype != null) {
|
||||
msaheader.setModuleType(ModuleTypeDef.Enum.forString(mi.getModuleType()));
|
||||
/*
|
||||
if (mi.moduletype.contains("PEI")) {
|
||||
msaheader.setModuleType(ModuleTypeDef.Enum.forString("PEIM"));
|
||||
} else {
|
||||
msaheader.setModuleType(ModuleTypeDef.Enum.forString("DXE_DRIVER"));
|
||||
}
|
||||
*/
|
||||
} else {
|
||||
msaheader.setModuleType(ModuleTypeDef.Enum.forString(mi.moduletype = Query("Guid Value Not Found! Please Input Guid Value")));
|
||||
}
|
||||
|
||||
msaheader.setCopyright("Copyright (c) 2006, Intel Corporation");
|
||||
msaheader.setVersion("1.0");
|
||||
msaheader.setAbstract("Component name for module " + mi.modulename);
|
||||
msaheader.setDescription("FIX ME!");
|
||||
msaheader.addNewLicense().setStringValue("All rights reserved.\n" +
|
||||
" This software and associated documentation (if any) is furnished\n" +
|
||||
" under a license and may only be used or copied in accordance\n" +
|
||||
" with the terms of the license. Except as permitted by such\n" +
|
||||
" license, no part of this software or documentation may be\n" +
|
||||
" reproduced, stored in a retrieval system, or transmitted in any\n" +
|
||||
" form or by any means without the express written consent of\n" +
|
||||
" Intel Corporation.");
|
||||
msaheader.setSpecification("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052");
|
||||
|
||||
List<Enum> arch = new ArrayList<Enum>();
|
||||
arch.add(SupportedArchitectures.IA_32);
|
||||
arch.add(SupportedArchitectures.X_64);
|
||||
arch.add(SupportedArchitectures.IPF);
|
||||
arch.add(SupportedArchitectures.EBC);
|
||||
md.setSupportedArchitectures(arch);
|
||||
md.setBinaryModule(false);
|
||||
md.setOutputFileBasename(mi.modulename);
|
||||
|
||||
pd.addNewPackage().setPackageGuid("5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec");
|
||||
externs.addNewSpecification().setStringValue("EFI_SPECIFICATION_VERSION 0x00020000");
|
||||
externs.addNewSpecification().setStringValue("EDK_RELEASE_VERSION 0x00020000");
|
||||
externs.addNewExtern().setModuleEntryPoint(mi.entrypoint);
|
||||
|
||||
it = mi.localmodulesources.iterator();
|
||||
while (it.hasNext()) {
|
||||
addSourceFiles(it.next());
|
||||
}
|
||||
if (!mi.protocol.isEmpty()) {
|
||||
protocols = msa.addNewProtocols();
|
||||
it = mi.protocol.iterator();
|
||||
while (it.hasNext()) {
|
||||
if ((temp = it.next()) != null) {
|
||||
ProtocolsDocument.Protocols.Protocol pr = protocols.addNewProtocol();
|
||||
pr.setProtocolCName(temp);
|
||||
pr.setUsage(UsageTypes.ALWAYS_CONSUMED);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mi.ppi.isEmpty()) {
|
||||
ppis = msa.addNewPPIs();
|
||||
it = mi.ppi.iterator();
|
||||
while (it.hasNext()) {
|
||||
if ((temp = it.next()) != null) {
|
||||
PPIsDocument.PPIs.Ppi pp = ppis.addNewPpi();
|
||||
pp.setPpiCName(temp);
|
||||
pp.setUsage(UsageTypes.ALWAYS_CONSUMED);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mi.guid.isEmpty()) {
|
||||
guids = msa.addNewGuids();
|
||||
it = mi.guid.iterator();
|
||||
while (it.hasNext()) {
|
||||
if ((temp = it.next()) != null) {
|
||||
GuidsDocument.Guids.GuidCNames gcn = guids.addNewGuidCNames();
|
||||
gcn.setGuidCName(temp);
|
||||
gcn.setUsage(UsageTypes.ALWAYS_CONSUMED);
|
||||
}
|
||||
}
|
||||
}
|
||||
it = mi.hashrequiredr9libs.iterator();
|
||||
while (it.hasNext()) {
|
||||
if ((temp = it.next()) != null && !temp.matches("%")) {
|
||||
LibraryClassDocument.LibraryClass lc = libclassdefs.addNewLibraryClass();
|
||||
lc.setKeyword(temp);
|
||||
lc.setUsage(UsageTypes.ALWAYS_CONSUMED);
|
||||
}
|
||||
}
|
||||
|
||||
return msadoc;
|
||||
}
|
||||
|
||||
public void flush() throws Exception {
|
||||
msaheader.setCopyright("Copyright (c) 2006, Intel Corporation");
|
||||
msaheader.setVersion("1.0");
|
||||
msaheader.setAbstract("Component name for module " + mi.modulename);
|
||||
msaheader.setDescription("FIX ME!");
|
||||
msaheader.addNewLicense().setStringValue("All rights reserved.\n" +
|
||||
" This software and associated documentation (if any) is furnished\n" +
|
||||
" under a license and may only be used or copied in accordance\n" +
|
||||
" with the terms of the license. Except as permitted by such\n" +
|
||||
" license, no part of this software or documentation may be\n" +
|
||||
" reproduced, stored in a retrieval system, or transmitted in any\n" +
|
||||
" form or by any means without the express written consent of\n" +
|
||||
" Intel Corporation.");
|
||||
msaheader.setSpecification("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052");
|
||||
|
||||
List<Enum> arch = new ArrayList<Enum>();
|
||||
arch.add(SupportedArchitectures.IA_32);
|
||||
arch.add(SupportedArchitectures.X_64);
|
||||
arch.add(SupportedArchitectures.IPF);
|
||||
arch.add(SupportedArchitectures.EBC);
|
||||
md.setSupportedArchitectures(arch);
|
||||
md.setBinaryModule(false);
|
||||
md.setOutputFileBasename(mi.modulename);
|
||||
|
||||
pd.addNewPackage().setPackageGuid("5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec");
|
||||
externs.addNewSpecification().setStringValue("EFI_SPECIFICATION_VERSION 0x00020000");
|
||||
externs.addNewSpecification().setStringValue("EDK_RELEASE_VERSION 0x00020000");
|
||||
externs.addNewExtern().setModuleEntryPoint(mi.entrypoint);
|
||||
|
||||
it = mi.localmodulesources.iterator();
|
||||
while (it.hasNext()) {
|
||||
addSourceFiles(it.next());
|
||||
}
|
||||
if (!mi.protocol.isEmpty()) {
|
||||
protocols = msa.addNewProtocols();
|
||||
it = mi.protocol.iterator();
|
||||
while (it.hasNext()) {
|
||||
if ((temp = it.next()) != null) {
|
||||
ProtocolsDocument.Protocols.Protocol pr = protocols.addNewProtocol();
|
||||
pr.setProtocolCName(temp);
|
||||
pr.setUsage(UsageTypes.ALWAYS_CONSUMED);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mi.ppi.isEmpty()) {
|
||||
ppis = msa.addNewPPIs();
|
||||
it = mi.ppi.iterator();
|
||||
while (it.hasNext()) {
|
||||
if ((temp = it.next()) != null) {
|
||||
PPIsDocument.PPIs.Ppi pp = ppis.addNewPpi();
|
||||
pp.setPpiCName(temp);
|
||||
pp.setUsage(UsageTypes.ALWAYS_CONSUMED);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mi.guid.isEmpty()) {
|
||||
guids = msa.addNewGuids();
|
||||
it = mi.guid.iterator();
|
||||
while (it.hasNext()) {
|
||||
if ((temp = it.next()) != null) {
|
||||
GuidsDocument.Guids.GuidCNames gcn = guids.addNewGuidCNames();
|
||||
gcn.setGuidCName(temp);
|
||||
gcn.setUsage(UsageTypes.ALWAYS_CONSUMED);
|
||||
}
|
||||
}
|
||||
}
|
||||
it = mi.hashrequiredr9libs.iterator();
|
||||
while (it.hasNext()) {
|
||||
if ((temp = it.next()) != null && !temp.matches("%")) {
|
||||
LibraryClassDocument.LibraryClass lc = libclassdefs.addNewLibraryClass();
|
||||
lc.setKeyword(temp);
|
||||
lc.setUsage(UsageTypes.ALWAYS_CONSUMED);
|
||||
}
|
||||
}
|
||||
|
||||
return msadoc;
|
||||
}
|
||||
|
||||
public void flush() throws Exception {
|
||||
XmlOptions options = new XmlOptions();
|
||||
|
||||
options.setCharacterEncoding("UTF-8");
|
||||
|
@ -184,14 +184,14 @@ public class MsaWriter {
|
|||
options.setSavePrettyPrintIndent(2);
|
||||
options.setUseDefaultNamespace();
|
||||
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + mi.modulename + ".msa"));
|
||||
fulfillMsadoc().save(bw, options);
|
||||
//MsaTreeEditor.init(mi, ui, msadoc);
|
||||
bw.flush();
|
||||
bw.close();
|
||||
}
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + mi.modulename + ".msa"));
|
||||
fulfillMsadoc().save(bw, options);
|
||||
//MsaTreeEditor.init(mi, ui, msadoc);
|
||||
bw.flush();
|
||||
bw.close();
|
||||
}
|
||||
|
||||
private static void flush(String path, ModuleSurfaceAreaDocument msadoc) throws Exception {
|
||||
private static void flush(String path, ModuleSurfaceAreaDocument msadoc) throws Exception {
|
||||
XmlOptions options = new XmlOptions();
|
||||
|
||||
options.setCharacterEncoding("UTF-8");
|
||||
|
@ -199,14 +199,14 @@ public class MsaWriter {
|
|||
options.setSavePrettyPrintIndent(2);
|
||||
options.setUseDefaultNamespace();
|
||||
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(path));
|
||||
msadoc.save(bw, options);
|
||||
bw.flush();
|
||||
bw.close();
|
||||
}
|
||||
|
||||
public static final void parse(String msafile) throws Exception {
|
||||
ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(msafile);
|
||||
flush("c:\\temp.msa", msadoc);
|
||||
}
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(path));
|
||||
msadoc.save(bw, options);
|
||||
bw.flush();
|
||||
bw.close();
|
||||
}
|
||||
|
||||
public static final void parse(String msafile) throws Exception {
|
||||
ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(msafile);
|
||||
flush("c:\\temp.msa", msadoc);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,35 +16,35 @@ import java.io.File;
|
|||
import java.util.*;
|
||||
|
||||
public final class PathIterator implements Common.ForDoAll {
|
||||
// this PathIterator is based on HashSet, an thread implementation is required.
|
||||
PathIterator(String path, int md) throws Exception {
|
||||
startpath = path;
|
||||
mode = md;
|
||||
Common.toDoAll(startpath, this, mode);
|
||||
it = pathlist.iterator();
|
||||
}
|
||||
private String startpath = null;
|
||||
private int mode;
|
||||
private HashSet<String> pathlist = new HashSet<String>();
|
||||
private Iterator<String> it = null;
|
||||
// this PathIterator is based on HashSet, an thread implementation is required.
|
||||
PathIterator(String path, int md) throws Exception {
|
||||
startpath = path;
|
||||
mode = md;
|
||||
Common.toDoAll(startpath, this, mode);
|
||||
it = pathlist.iterator();
|
||||
}
|
||||
private String startpath = null;
|
||||
private int mode;
|
||||
private HashSet<String> pathlist = new HashSet<String>();
|
||||
private Iterator<String> it = null;
|
||||
|
||||
public final void run(String path) throws Exception {
|
||||
pathlist.add(path);
|
||||
}
|
||||
public final void run(String path) throws Exception {
|
||||
pathlist.add(path);
|
||||
}
|
||||
|
||||
public boolean filter(File dir) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public final String next() {
|
||||
return it.next();
|
||||
}
|
||||
public boolean filter(File dir) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public final String next() {
|
||||
return it.next();
|
||||
}
|
||||
|
||||
public final boolean hasNext() {
|
||||
return it.hasNext();
|
||||
}
|
||||
public final boolean hasNext() {
|
||||
return it.hasNext();
|
||||
}
|
||||
|
||||
public final String toString() {
|
||||
return pathlist.toString();
|
||||
}
|
||||
public final String toString() {
|
||||
return pathlist.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,374 +18,374 @@ import java.util.regex.Matcher;
|
|||
import java.util.regex.Pattern;
|
||||
|
||||
public final class SourceFileReplacer implements Common.ForDoAll {
|
||||
private static final SourceFileReplacer SFReplacer = new SourceFileReplacer();
|
||||
private ModuleInfo mi;
|
||||
private static final Set<Common.Laplace> Laplaces = new HashSet<Common.Laplace>();
|
||||
private static final SourceFileReplacer SFReplacer = new SourceFileReplacer();
|
||||
private ModuleInfo mi;
|
||||
private static final Set<Common.Laplace> Laplaces = new HashSet<Common.Laplace>();
|
||||
|
||||
// these sets are used only for printing log of the changes in current file
|
||||
private static final Set<r8tor9> filefunc = new HashSet<r8tor9>();
|
||||
private static final Set<r8tor9> filemacro = new HashSet<r8tor9>();
|
||||
private static final Set<r8tor9> fileguid = new HashSet<r8tor9>();
|
||||
private static final Set<r8tor9> fileppi = new HashSet<r8tor9>();
|
||||
private static final Set<r8tor9> fileprotocol = new HashSet<r8tor9>();
|
||||
private static final Set<String> filer8only = new HashSet<String>();
|
||||
|
||||
private static final String[] specialhoblibfunc = {
|
||||
"BuildModuleHob",
|
||||
"BuildResourceDescriptorHob",
|
||||
"BuildFvHob",
|
||||
"BuildCpuHob",
|
||||
"BuildStackHob",
|
||||
"BuildBspStoreHob",
|
||||
"BuildMemoryAllocationHob"
|
||||
};
|
||||
|
||||
//---------------------------------------inner classes---------------------------------------//
|
||||
private static class r8tor9 {
|
||||
r8tor9(String r8, String r9) {
|
||||
r8thing = r8;
|
||||
r9thing = r9;
|
||||
}
|
||||
public String r8thing;
|
||||
public String r9thing;
|
||||
}
|
||||
|
||||
private class IdleLaplace extends Common.Laplace {
|
||||
public String operation(String wholeline) {
|
||||
return wholeline;
|
||||
}
|
||||
|
||||
public boolean recognize(String filename) {
|
||||
return filename.contains(".h") || filename.contains(".H") || filename.contains(".uni");
|
||||
}
|
||||
// these sets are used only for printing log of the changes in current file
|
||||
private static final Set<r8tor9> filefunc = new HashSet<r8tor9>();
|
||||
private static final Set<r8tor9> filemacro = new HashSet<r8tor9>();
|
||||
private static final Set<r8tor9> fileguid = new HashSet<r8tor9>();
|
||||
private static final Set<r8tor9> fileppi = new HashSet<r8tor9>();
|
||||
private static final Set<r8tor9> fileprotocol = new HashSet<r8tor9>();
|
||||
private static final Set<String> filer8only = new HashSet<String>();
|
||||
|
||||
private static final String[] specialhoblibfunc = {
|
||||
"BuildModuleHob",
|
||||
"BuildResourceDescriptorHob",
|
||||
"BuildFvHob",
|
||||
"BuildCpuHob",
|
||||
"BuildStackHob",
|
||||
"BuildBspStoreHob",
|
||||
"BuildMemoryAllocationHob"
|
||||
};
|
||||
|
||||
//---------------------------------------inner classes---------------------------------------//
|
||||
private static class r8tor9 {
|
||||
r8tor9(String r8, String r9) {
|
||||
r8thing = r8;
|
||||
r9thing = r9;
|
||||
}
|
||||
public String r8thing;
|
||||
public String r9thing;
|
||||
}
|
||||
|
||||
private class IdleLaplace extends Common.Laplace {
|
||||
public String operation(String wholeline) {
|
||||
return wholeline;
|
||||
}
|
||||
|
||||
public boolean recognize(String filename) {
|
||||
return filename.contains(".h") || filename.contains(".H") || filename.contains(".uni");
|
||||
}
|
||||
|
||||
public String namechange(String oldname) {
|
||||
if (oldname.contains(".H")) {
|
||||
return oldname.replaceFirst(".H", ".h");
|
||||
} else {
|
||||
return oldname;
|
||||
}
|
||||
}
|
||||
}
|
||||
private class DxsLaplace extends Common.Laplace {
|
||||
public String operation(String wholeline) {
|
||||
if (mi.getModuleType().equals("PEIM")) {
|
||||
return addincludefile(wholeline, "\\<PeimDepex.h\\>");
|
||||
} else {
|
||||
return addincludefile(wholeline, "\\<DxeDepex.h\\>");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean recognize(String filename) {
|
||||
return filename.contains(".dxs");
|
||||
}
|
||||
public String namechange(String oldname) {
|
||||
if (oldname.contains(".H")) {
|
||||
return oldname.replaceFirst(".H", ".h");
|
||||
} else {
|
||||
return oldname;
|
||||
}
|
||||
}
|
||||
}
|
||||
private class DxsLaplace extends Common.Laplace {
|
||||
public String operation(String wholeline) {
|
||||
if (mi.getModuleType().equals("PEIM")) {
|
||||
return addincludefile(wholeline, "\\<PeimDepex.h\\>");
|
||||
} else {
|
||||
return addincludefile(wholeline, "\\<DxeDepex.h\\>");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean recognize(String filename) {
|
||||
return filename.contains(".dxs");
|
||||
}
|
||||
|
||||
public String namechange(String oldname) {
|
||||
return oldname;
|
||||
}
|
||||
}
|
||||
|
||||
private class CLaplace extends Common.Laplace {
|
||||
public String operation(String wholeline) {
|
||||
boolean addr8 = false;
|
||||
public String namechange(String oldname) {
|
||||
return oldname;
|
||||
}
|
||||
}
|
||||
|
||||
private class CLaplace extends Common.Laplace {
|
||||
public String operation(String wholeline) {
|
||||
boolean addr8 = false;
|
||||
|
||||
Pattern pat = Pattern.compile("g?(BS|RT)(\\s*->\\s*)([a-zA-Z_]\\w*)", Pattern.MULTILINE); // ! only two level () bracket allowed !
|
||||
//Pattern ptnpei = Pattern.compile("\\(\\*\\*?PeiServices\\)[.-][>]?\\s*(\\w*[#$]*)(\\s*\\(([^\\(\\)]*(\\([^\\(\\)]*\\))?[^\\(\\)]*)*\\))", Pattern.MULTILINE);
|
||||
Pattern pat = Pattern.compile("g?(BS|RT)(\\s*->\\s*)([a-zA-Z_]\\w*)", Pattern.MULTILINE); // ! only two level () bracket allowed !
|
||||
//Pattern ptnpei = Pattern.compile("\\(\\*\\*?PeiServices\\)[.-][>]?\\s*(\\w*[#$]*)(\\s*\\(([^\\(\\)]*(\\([^\\(\\)]*\\))?[^\\(\\)]*)*\\))", Pattern.MULTILINE);
|
||||
|
||||
// replace BS -> gBS , RT -> gRT
|
||||
Matcher mat = pat.matcher(wholeline);
|
||||
if (mat.find()) { // add a library here
|
||||
MigrationTool.ui.println("Converting all BS->gBS, RT->gRT");
|
||||
wholeline = mat.replaceAll("g$1$2$3"); //unknown correctiveness
|
||||
}
|
||||
mat.reset();
|
||||
while (mat.find()) {
|
||||
if (mat.group(1).matches("BS")) {
|
||||
mi.hashrequiredr9libs.add("UefiBootServicesTableLib");
|
||||
}
|
||||
if (mat.group(1).matches("RT")) {
|
||||
mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib");
|
||||
}
|
||||
}
|
||||
// remove EFI_DRIVER_ENTRY_POINT
|
||||
wholeline = wholeline.replaceAll("(EFI_\\w+_ENTRY_POINT)", MigrationTool.MIGRATIONCOMMENT + " $1");
|
||||
|
||||
// start replacing names
|
||||
String r8thing;
|
||||
String r9thing;
|
||||
Iterator<String> it;
|
||||
// Converting non-locla function
|
||||
it = mi.hashnonlocalfunc.iterator();
|
||||
while (it.hasNext()) {
|
||||
r8thing = it.next();
|
||||
if (r8thing.matches("EfiInitializeDriverLib")) { //s
|
||||
mi.hashrequiredr9libs.add("UefiBootServicesTableLib"); //p
|
||||
mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib"); //e
|
||||
} else if (r8thing.matches("DxeInitializeDriverLib")) { //c
|
||||
mi.hashrequiredr9libs.add("UefiBootServicesTableLib"); //i
|
||||
mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib"); //a
|
||||
mi.hashrequiredr9libs.add("DxeServicesTableLib"); //l
|
||||
} else { //
|
||||
mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing)); // add a library here
|
||||
}
|
||||
// replace BS -> gBS , RT -> gRT
|
||||
Matcher mat = pat.matcher(wholeline);
|
||||
if (mat.find()) { // add a library here
|
||||
MigrationTool.ui.println("Converting all BS->gBS, RT->gRT");
|
||||
wholeline = mat.replaceAll("g$1$2$3"); //unknown correctiveness
|
||||
}
|
||||
mat.reset();
|
||||
while (mat.find()) {
|
||||
if (mat.group(1).matches("BS")) {
|
||||
mi.hashrequiredr9libs.add("UefiBootServicesTableLib");
|
||||
}
|
||||
if (mat.group(1).matches("RT")) {
|
||||
mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib");
|
||||
}
|
||||
}
|
||||
// remove EFI_DRIVER_ENTRY_POINT
|
||||
wholeline = wholeline.replaceAll("(EFI_\\w+_ENTRY_POINT)", MigrationTool.MIGRATIONCOMMENT + " $1");
|
||||
|
||||
// start replacing names
|
||||
String r8thing;
|
||||
String r9thing;
|
||||
Iterator<String> it;
|
||||
// Converting non-locla function
|
||||
it = mi.hashnonlocalfunc.iterator();
|
||||
while (it.hasNext()) {
|
||||
r8thing = it.next();
|
||||
if (r8thing.matches("EfiInitializeDriverLib")) { //s
|
||||
mi.hashrequiredr9libs.add("UefiBootServicesTableLib"); //p
|
||||
mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib"); //e
|
||||
} else if (r8thing.matches("DxeInitializeDriverLib")) { //c
|
||||
mi.hashrequiredr9libs.add("UefiBootServicesTableLib"); //i
|
||||
mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib"); //a
|
||||
mi.hashrequiredr9libs.add("DxeServicesTableLib"); //l
|
||||
} else { //
|
||||
mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing)); // add a library here
|
||||
}
|
||||
|
||||
r8tor9 temp;
|
||||
if ((r9thing = MigrationTool.db.getR9Func(r8thing)) != null) {
|
||||
if (!r8thing.equals(r9thing)) {
|
||||
if (wholeline.contains(r8thing)) {
|
||||
wholeline = wholeline.replaceAll(r8thing, r9thing);
|
||||
filefunc.add(new r8tor9(r8thing, r9thing));
|
||||
Iterator<r8tor9> rt = filefunc.iterator();
|
||||
while (rt.hasNext()) {
|
||||
temp = rt.next();
|
||||
if (MigrationTool.db.r8only.contains(temp.r8thing)) {
|
||||
filer8only.add(r8thing);
|
||||
mi.hashr8only.add(r8thing);
|
||||
addr8 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} //is any of the guids changed?
|
||||
if (addr8 == true) {
|
||||
wholeline = addincludefile(wholeline, "\"R8Lib.h\"");
|
||||
}
|
||||
|
||||
// Converting macro
|
||||
it = mi.hashnonlocalmacro.iterator();
|
||||
while (it.hasNext()) { //macros are all assumed MdePkg currently
|
||||
r8thing = it.next();
|
||||
//mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing));
|
||||
if ((r9thing = MigrationTool.db.getR9Macro(r8thing)) != null) {
|
||||
if (wholeline.contains(r8thing)) {
|
||||
wholeline = wholeline.replaceAll(r8thing, r9thing);
|
||||
filemacro.add(new r8tor9(r8thing, r9thing));
|
||||
}
|
||||
}
|
||||
}
|
||||
r8tor9 temp;
|
||||
if ((r9thing = MigrationTool.db.getR9Func(r8thing)) != null) {
|
||||
if (!r8thing.equals(r9thing)) {
|
||||
if (wholeline.contains(r8thing)) {
|
||||
wholeline = wholeline.replaceAll(r8thing, r9thing);
|
||||
filefunc.add(new r8tor9(r8thing, r9thing));
|
||||
Iterator<r8tor9> rt = filefunc.iterator();
|
||||
while (rt.hasNext()) {
|
||||
temp = rt.next();
|
||||
if (MigrationTool.db.r8only.contains(temp.r8thing)) {
|
||||
filer8only.add(r8thing);
|
||||
mi.hashr8only.add(r8thing);
|
||||
addr8 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} //is any of the guids changed?
|
||||
if (addr8 == true) {
|
||||
wholeline = addincludefile(wholeline, "\"R8Lib.h\"");
|
||||
}
|
||||
|
||||
// Converting macro
|
||||
it = mi.hashnonlocalmacro.iterator();
|
||||
while (it.hasNext()) { //macros are all assumed MdePkg currently
|
||||
r8thing = it.next();
|
||||
//mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing));
|
||||
if ((r9thing = MigrationTool.db.getR9Macro(r8thing)) != null) {
|
||||
if (wholeline.contains(r8thing)) {
|
||||
wholeline = wholeline.replaceAll(r8thing, r9thing);
|
||||
filemacro.add(new r8tor9(r8thing, r9thing));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Converting guid
|
||||
replaceGuid(wholeline, mi.guid, "guid", fileguid);
|
||||
replaceGuid(wholeline, mi.ppi, "ppi", fileppi);
|
||||
replaceGuid(wholeline, mi.protocol, "protocol", fileprotocol);
|
||||
// Converting guid
|
||||
replaceGuid(wholeline, mi.guid, "guid", fileguid);
|
||||
replaceGuid(wholeline, mi.ppi, "ppi", fileppi);
|
||||
replaceGuid(wholeline, mi.protocol, "protocol", fileprotocol);
|
||||
|
||||
// Converting Pei
|
||||
// First , find all (**PeiServices)-> or (*PeiServices). with arg "PeiServices" , change name and add #%
|
||||
Pattern ptnpei = Pattern.compile("\\(\\*\\*?PeiServices\\)[.-][>]?\\s*(\\w*)(\\s*\\(\\s*PeiServices\\s*,\\s*)", Pattern.MULTILINE);
|
||||
if (mi.getModuleType().matches("PEIM")) {
|
||||
//if (mi.moduletype.contains("PEIM")) {
|
||||
Matcher mtrpei = ptnpei.matcher(wholeline);
|
||||
while (mtrpei.find()) { // ! add a library here !
|
||||
wholeline = mtrpei.replaceAll("PeiServices$1#%$2");
|
||||
mi.hashrequiredr9libs.add("PeiServicesLib");
|
||||
}
|
||||
mtrpei.reset();
|
||||
if (wholeline.contains("PeiServicesCopyMem")) {
|
||||
wholeline = wholeline.replaceAll("PeiServicesCopyMem#%", "CopyMem");
|
||||
mi.hashrequiredr9libs.add("BaseMemoryLib");
|
||||
}
|
||||
if (wholeline.contains("PeiServicesSetMem")) {
|
||||
wholeline = wholeline.replaceAll("PeiServicesSetMem#%", "SetMem");
|
||||
mi.hashrequiredr9libs.add("BaseMemoryLib");
|
||||
}
|
||||
// Converting Pei
|
||||
// First , find all (**PeiServices)-> or (*PeiServices). with arg "PeiServices" , change name and add #%
|
||||
Pattern ptnpei = Pattern.compile("\\(\\*\\*?PeiServices\\)[.-][>]?\\s*(\\w*)(\\s*\\(\\s*PeiServices\\s*,\\s*)", Pattern.MULTILINE);
|
||||
if (mi.getModuleType().matches("PEIM")) {
|
||||
//if (mi.moduletype.contains("PEIM")) {
|
||||
Matcher mtrpei = ptnpei.matcher(wholeline);
|
||||
while (mtrpei.find()) { // ! add a library here !
|
||||
wholeline = mtrpei.replaceAll("PeiServices$1#%$2");
|
||||
mi.hashrequiredr9libs.add("PeiServicesLib");
|
||||
}
|
||||
mtrpei.reset();
|
||||
if (wholeline.contains("PeiServicesCopyMem")) {
|
||||
wholeline = wholeline.replaceAll("PeiServicesCopyMem#%", "CopyMem");
|
||||
mi.hashrequiredr9libs.add("BaseMemoryLib");
|
||||
}
|
||||
if (wholeline.contains("PeiServicesSetMem")) {
|
||||
wholeline = wholeline.replaceAll("PeiServicesSetMem#%", "SetMem");
|
||||
mi.hashrequiredr9libs.add("BaseMemoryLib");
|
||||
}
|
||||
|
||||
// Second , find all #% to drop the arg "PeiServices"
|
||||
Pattern ptnpeiarg = Pattern.compile("#%+(\\s*\\(+\\s*)PeiServices\\s*,\\s*", Pattern.MULTILINE);
|
||||
Matcher mtrpeiarg = ptnpeiarg.matcher(wholeline);
|
||||
while (mtrpeiarg.find()) {
|
||||
wholeline = mtrpeiarg.replaceAll("$1");
|
||||
}
|
||||
}
|
||||
|
||||
wholeline = hobLibFuncDropStatus(wholeline);
|
||||
|
||||
Matcher mtrmac;
|
||||
mtrmac = Pattern.compile("EFI_IDIV_ROUND\\((.*), (.*)\\)").matcher(wholeline);
|
||||
if (mtrmac.find()) {
|
||||
wholeline = mtrmac.replaceAll("\\($1 \\/ $2 \\+ \\(\\(\\(2 \\* \\($1 \\% $2\\)\\) \\< $2\\) \\? 0 \\: 1\\)\\)");
|
||||
}
|
||||
mtrmac = Pattern.compile("EFI_MIN\\((.*), (.*)\\)").matcher(wholeline);
|
||||
if (mtrmac.find()) {
|
||||
wholeline = mtrmac.replaceAll("\\(\\($1 \\< $2\\) \\? $1 \\: $2\\)");
|
||||
}
|
||||
mtrmac = Pattern.compile("EFI_MAX\\((.*), (.*)\\)").matcher(wholeline);
|
||||
if (mtrmac.find()) {
|
||||
wholeline = mtrmac.replaceAll("\\(\\($1 \\> $2\\) \\? $1 \\: $2\\)");
|
||||
}
|
||||
mtrmac = Pattern.compile("EFI_UINTN_ALIGNED\\((.*)\\)").matcher(wholeline);
|
||||
if (mtrmac.find()) {
|
||||
wholeline = mtrmac.replaceAll("\\(\\(\\(UINTN\\) $1\\) \\& \\(sizeof \\(UINTN\\) \\- 1\\)\\)");
|
||||
}
|
||||
if (wholeline.contains("EFI_UINTN_ALIGN_MASK")) {
|
||||
wholeline = wholeline.replaceAll("EFI_UINTN_ALIGN_MASK", "(sizeof (UINTN) - 1)");
|
||||
}
|
||||
// Second , find all #% to drop the arg "PeiServices"
|
||||
Pattern ptnpeiarg = Pattern.compile("#%+(\\s*\\(+\\s*)PeiServices\\s*,\\s*", Pattern.MULTILINE);
|
||||
Matcher mtrpeiarg = ptnpeiarg.matcher(wholeline);
|
||||
while (mtrpeiarg.find()) {
|
||||
wholeline = mtrpeiarg.replaceAll("$1");
|
||||
}
|
||||
}
|
||||
|
||||
wholeline = hobLibFuncDropStatus(wholeline);
|
||||
|
||||
Matcher mtrmac;
|
||||
mtrmac = Pattern.compile("EFI_IDIV_ROUND\\((.*), (.*)\\)").matcher(wholeline);
|
||||
if (mtrmac.find()) {
|
||||
wholeline = mtrmac.replaceAll("\\($1 \\/ $2 \\+ \\(\\(\\(2 \\* \\($1 \\% $2\\)\\) \\< $2\\) \\? 0 \\: 1\\)\\)");
|
||||
}
|
||||
mtrmac = Pattern.compile("EFI_MIN\\((.*), (.*)\\)").matcher(wholeline);
|
||||
if (mtrmac.find()) {
|
||||
wholeline = mtrmac.replaceAll("\\(\\($1 \\< $2\\) \\? $1 \\: $2\\)");
|
||||
}
|
||||
mtrmac = Pattern.compile("EFI_MAX\\((.*), (.*)\\)").matcher(wholeline);
|
||||
if (mtrmac.find()) {
|
||||
wholeline = mtrmac.replaceAll("\\(\\($1 \\> $2\\) \\? $1 \\: $2\\)");
|
||||
}
|
||||
mtrmac = Pattern.compile("EFI_UINTN_ALIGNED\\((.*)\\)").matcher(wholeline);
|
||||
if (mtrmac.find()) {
|
||||
wholeline = mtrmac.replaceAll("\\(\\(\\(UINTN\\) $1\\) \\& \\(sizeof \\(UINTN\\) \\- 1\\)\\)");
|
||||
}
|
||||
if (wholeline.contains("EFI_UINTN_ALIGN_MASK")) {
|
||||
wholeline = wholeline.replaceAll("EFI_UINTN_ALIGN_MASK", "(sizeof (UINTN) - 1)");
|
||||
}
|
||||
|
||||
show(filefunc, "function");
|
||||
show(filemacro, "macro");
|
||||
show(fileguid, "guid");
|
||||
show(fileppi, "ppi");
|
||||
show(fileprotocol, "protocol");
|
||||
if (!filer8only.isEmpty()) {
|
||||
MigrationTool.ui.println("Converting r8only : " + filer8only);
|
||||
}
|
||||
show(filefunc, "function");
|
||||
show(filemacro, "macro");
|
||||
show(fileguid, "guid");
|
||||
show(fileppi, "ppi");
|
||||
show(fileprotocol, "protocol");
|
||||
if (!filer8only.isEmpty()) {
|
||||
MigrationTool.ui.println("Converting r8only : " + filer8only);
|
||||
}
|
||||
|
||||
filefunc.clear();
|
||||
filemacro.clear();
|
||||
fileguid.clear();
|
||||
fileppi.clear();
|
||||
fileprotocol.clear();
|
||||
filer8only.clear();
|
||||
filefunc.clear();
|
||||
filemacro.clear();
|
||||
fileguid.clear();
|
||||
fileppi.clear();
|
||||
fileprotocol.clear();
|
||||
filer8only.clear();
|
||||
|
||||
return wholeline;
|
||||
}
|
||||
|
||||
public boolean recognize(String filename) {
|
||||
return filename.contains(".c") || filename.contains(".C");
|
||||
}
|
||||
return wholeline;
|
||||
}
|
||||
|
||||
public boolean recognize(String filename) {
|
||||
return filename.contains(".c") || filename.contains(".C");
|
||||
}
|
||||
|
||||
public String namechange(String oldname) {
|
||||
if (oldname.contains(".C")) {
|
||||
return oldname.replaceFirst(".C", ".c");
|
||||
} else {
|
||||
return oldname;
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------inner classes---------------------------------------//
|
||||
public String namechange(String oldname) {
|
||||
if (oldname.contains(".C")) {
|
||||
return oldname.replaceFirst(".C", ".c");
|
||||
} else {
|
||||
return oldname;
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------inner classes---------------------------------------//
|
||||
|
||||
//-------------------------------------process functions-------------------------------------//
|
||||
private static final String addincludefile(String wholeline, String hfile) {
|
||||
return wholeline.replaceFirst("(\\*/\\s)", "$1\n#include " + hfile + "\n");
|
||||
}
|
||||
|
||||
private static final void show(Set<r8tor9> hash, String sh) {
|
||||
Iterator<r8tor9> it = hash.iterator();
|
||||
r8tor9 temp;
|
||||
if (!hash.isEmpty()) {
|
||||
MigrationTool.ui.print("Converting " + sh + " : ");
|
||||
while (it.hasNext()) {
|
||||
temp = it.next();
|
||||
MigrationTool.ui.print("[" + temp.r8thing + "->" + temp.r9thing + "] ");
|
||||
}
|
||||
MigrationTool.ui.println("");
|
||||
}
|
||||
}
|
||||
//-------------------------------------process functions-------------------------------------//
|
||||
private static final String addincludefile(String wholeline, String hfile) {
|
||||
return wholeline.replaceFirst("(\\*/\\s)", "$1\n#include " + hfile + "\n");
|
||||
}
|
||||
|
||||
private static final void show(Set<r8tor9> hash, String sh) {
|
||||
Iterator<r8tor9> it = hash.iterator();
|
||||
r8tor9 temp;
|
||||
if (!hash.isEmpty()) {
|
||||
MigrationTool.ui.print("Converting " + sh + " : ");
|
||||
while (it.hasNext()) {
|
||||
temp = it.next();
|
||||
MigrationTool.ui.print("[" + temp.r8thing + "->" + temp.r9thing + "] ");
|
||||
}
|
||||
MigrationTool.ui.println("");
|
||||
}
|
||||
}
|
||||
|
||||
private static final void replaceGuid(String line, Set<String> hash, String kind, Set<r8tor9> filehash) {
|
||||
Iterator<String> it;
|
||||
String r8thing;
|
||||
String r9thing;
|
||||
it = hash.iterator();
|
||||
while (it.hasNext()) {
|
||||
r8thing = it.next();
|
||||
if ((r9thing = MigrationTool.db.getR9Guidname(r8thing)) != null) {
|
||||
if (!r8thing.equals(r9thing)) {
|
||||
if (line.contains(r8thing)) {
|
||||
line = line.replaceAll(r8thing, r9thing);
|
||||
filehash.add(new r8tor9(r8thing, r9thing));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private static final void replaceGuid(String line, Set<String> hash, String kind, Set<r8tor9> filehash) {
|
||||
Iterator<String> it;
|
||||
String r8thing;
|
||||
String r9thing;
|
||||
it = hash.iterator();
|
||||
while (it.hasNext()) {
|
||||
r8thing = it.next();
|
||||
if ((r9thing = MigrationTool.db.getR9Guidname(r8thing)) != null) {
|
||||
if (!r8thing.equals(r9thing)) {
|
||||
if (line.contains(r8thing)) {
|
||||
line = line.replaceAll(r8thing, r9thing);
|
||||
filehash.add(new r8tor9(r8thing, r9thing));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final String hobLibFuncDropStatus(String wholeline) { // or use regex to find pattern "Status = ..."
|
||||
Pattern ptnhobstatus;
|
||||
Matcher mtrhobstatus;
|
||||
String templine = wholeline;
|
||||
for (int i = 0; i < specialhoblibfunc.length; i++) {
|
||||
ptnhobstatus = Pattern.compile("(Status\\s*=\\s*)?" + specialhoblibfunc[i] + "(.*?\\)\\s*;)", Pattern.DOTALL);
|
||||
mtrhobstatus = ptnhobstatus.matcher(templine);
|
||||
if (mtrhobstatus.find()) {
|
||||
templine = mtrhobstatus.replaceAll(specialhoblibfunc[i] + mtrhobstatus.group(2) + "\n //Migration comments: R9 Hob-building library functions will assert if build failure.\n Status = EFI_SUCCESS;");
|
||||
}
|
||||
}
|
||||
return templine;
|
||||
}
|
||||
|
||||
private final void addr8only() throws Exception {
|
||||
String paragraph = null;
|
||||
String line = Common.file2string(MigrationTool.db.DatabasePath + File.separator + "R8Lib.c");
|
||||
PrintWriter outfile1 = new PrintWriter(new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.c")));
|
||||
PrintWriter outfile2 = new PrintWriter(new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.h")));
|
||||
Pattern ptnr8only = Pattern.compile("////#?(\\w*)?(.*?R8_(\\w*).*?)////~", Pattern.DOTALL);
|
||||
Matcher mtrr8only = ptnr8only.matcher(line);
|
||||
Matcher mtrr8onlyhead;
|
||||
|
||||
//add head comment
|
||||
Matcher mtrr8onlyheadcomment = Critic.PTN_NEW_HEAD_COMMENT.matcher(line);
|
||||
if (mtrr8onlyheadcomment.find()) {
|
||||
outfile1.append(mtrr8onlyheadcomment.group() + "\n\n");
|
||||
outfile2.append(mtrr8onlyheadcomment.group() + "\n\n");
|
||||
}
|
||||
|
||||
//add functions body
|
||||
while (mtrr8only.find()) {
|
||||
if (mi.hashr8only.contains(mtrr8only.group(3))) {
|
||||
paragraph = mtrr8only.group(2);
|
||||
outfile1.append(paragraph + "\n\n");
|
||||
if (mtrr8only.group(1).length() != 0) {
|
||||
mi.hashrequiredr9libs.add(mtrr8only.group(1));
|
||||
}
|
||||
//generate R8lib.h
|
||||
while ((mtrr8onlyhead = Func.ptnbrace.matcher(paragraph)).find()) {
|
||||
paragraph = mtrr8onlyhead.replaceAll(";");
|
||||
}
|
||||
outfile2.append(paragraph + "\n\n");
|
||||
}
|
||||
}
|
||||
outfile1.flush();
|
||||
outfile1.close();
|
||||
outfile2.flush();
|
||||
outfile2.close();
|
||||
|
||||
mi.localmodulesources.add("R8Lib.h");
|
||||
mi.localmodulesources.add("R8Lib.c");
|
||||
}
|
||||
//-------------------------------------process functions-------------------------------------//
|
||||
|
||||
//-----------------------------------ForDoAll-----------------------------------//
|
||||
public void run(String filepath) throws Exception {
|
||||
String inname = filepath.replace(mi.modulepath + File.separator, "");
|
||||
String tempinpath = mi.modulepath + File.separator + "temp" + File.separator;
|
||||
String tempoutpath = MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator;
|
||||
private final String hobLibFuncDropStatus(String wholeline) { // or use regex to find pattern "Status = ..."
|
||||
Pattern ptnhobstatus;
|
||||
Matcher mtrhobstatus;
|
||||
String templine = wholeline;
|
||||
for (int i = 0; i < specialhoblibfunc.length; i++) {
|
||||
ptnhobstatus = Pattern.compile("(Status\\s*=\\s*)?" + specialhoblibfunc[i] + "(.*?\\)\\s*;)", Pattern.DOTALL);
|
||||
mtrhobstatus = ptnhobstatus.matcher(templine);
|
||||
if (mtrhobstatus.find()) {
|
||||
templine = mtrhobstatus.replaceAll(specialhoblibfunc[i] + mtrhobstatus.group(2) + "\n //Migration comments: R9 Hob-building library functions will assert if build failure.\n Status = EFI_SUCCESS;");
|
||||
}
|
||||
}
|
||||
return templine;
|
||||
}
|
||||
|
||||
private final void addr8only() throws Exception {
|
||||
String paragraph = null;
|
||||
String line = Common.file2string(MigrationTool.db.DatabasePath + File.separator + "R8Lib.c");
|
||||
PrintWriter outfile1 = new PrintWriter(new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.c")));
|
||||
PrintWriter outfile2 = new PrintWriter(new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.h")));
|
||||
Pattern ptnr8only = Pattern.compile("////#?(\\w*)?(.*?R8_(\\w*).*?)////~", Pattern.DOTALL);
|
||||
Matcher mtrr8only = ptnr8only.matcher(line);
|
||||
Matcher mtrr8onlyhead;
|
||||
|
||||
//add head comment
|
||||
Matcher mtrr8onlyheadcomment = Critic.PTN_NEW_HEAD_COMMENT.matcher(line);
|
||||
if (mtrr8onlyheadcomment.find()) {
|
||||
outfile1.append(mtrr8onlyheadcomment.group() + "\n\n");
|
||||
outfile2.append(mtrr8onlyheadcomment.group() + "\n\n");
|
||||
}
|
||||
|
||||
//add functions body
|
||||
while (mtrr8only.find()) {
|
||||
if (mi.hashr8only.contains(mtrr8only.group(3))) {
|
||||
paragraph = mtrr8only.group(2);
|
||||
outfile1.append(paragraph + "\n\n");
|
||||
if (mtrr8only.group(1).length() != 0) {
|
||||
mi.hashrequiredr9libs.add(mtrr8only.group(1));
|
||||
}
|
||||
//generate R8lib.h
|
||||
while ((mtrr8onlyhead = Func.ptnbrace.matcher(paragraph)).find()) {
|
||||
paragraph = mtrr8onlyhead.replaceAll(";");
|
||||
}
|
||||
outfile2.append(paragraph + "\n\n");
|
||||
}
|
||||
}
|
||||
outfile1.flush();
|
||||
outfile1.close();
|
||||
outfile2.flush();
|
||||
outfile2.close();
|
||||
|
||||
mi.localmodulesources.add("R8Lib.h");
|
||||
mi.localmodulesources.add("R8Lib.c");
|
||||
}
|
||||
//-------------------------------------process functions-------------------------------------//
|
||||
|
||||
//-----------------------------------ForDoAll-----------------------------------//
|
||||
public void run(String filepath) throws Exception {
|
||||
String inname = filepath.replace(mi.modulepath + File.separator, "");
|
||||
String tempinpath = mi.modulepath + File.separator + "temp" + File.separator;
|
||||
String tempoutpath = MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator;
|
||||
|
||||
Iterator<Common.Laplace> itLaplace = Laplaces.iterator();
|
||||
while (itLaplace.hasNext()) {
|
||||
Common.Laplace lap = itLaplace.next();
|
||||
if (lap.recognize(inname)) {
|
||||
MigrationTool.ui.println("\nHandling file: " + inname);
|
||||
lap.transform(tempinpath + inname, tempoutpath + lap.namechange(inname));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean filter(File dir) {
|
||||
return true;
|
||||
}
|
||||
//-----------------------------------ForDoAll-----------------------------------//
|
||||
|
||||
private final void setModuleInfo(ModuleInfo moduleinfo) {
|
||||
mi = moduleinfo;
|
||||
}
|
||||
|
||||
private final void start() throws Exception {
|
||||
Laplaces.add(new DxsLaplace());
|
||||
Laplaces.add(new CLaplace());
|
||||
Laplaces.add(new IdleLaplace());
|
||||
|
||||
Common.toDoAll(mi.localmodulesources, this);
|
||||
|
||||
if (!mi.hashr8only.isEmpty()) {
|
||||
addr8only();
|
||||
}
|
||||
|
||||
Laplaces.clear();
|
||||
}
|
||||
|
||||
public static final void fireAt(ModuleInfo moduleinfo) throws Exception {
|
||||
SFReplacer.setModuleInfo(moduleinfo);
|
||||
SFReplacer.start();
|
||||
}
|
||||
Iterator<Common.Laplace> itLaplace = Laplaces.iterator();
|
||||
while (itLaplace.hasNext()) {
|
||||
Common.Laplace lap = itLaplace.next();
|
||||
if (lap.recognize(inname)) {
|
||||
MigrationTool.ui.println("\nHandling file: " + inname);
|
||||
lap.transform(tempinpath + inname, tempoutpath + lap.namechange(inname));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean filter(File dir) {
|
||||
return true;
|
||||
}
|
||||
//-----------------------------------ForDoAll-----------------------------------//
|
||||
|
||||
private final void setModuleInfo(ModuleInfo moduleinfo) {
|
||||
mi = moduleinfo;
|
||||
}
|
||||
|
||||
private final void start() throws Exception {
|
||||
Laplaces.add(new DxsLaplace());
|
||||
Laplaces.add(new CLaplace());
|
||||
Laplaces.add(new IdleLaplace());
|
||||
|
||||
Common.toDoAll(mi.localmodulesources, this);
|
||||
|
||||
if (!mi.hashr8only.isEmpty()) {
|
||||
addr8only();
|
||||
}
|
||||
|
||||
Laplaces.clear();
|
||||
}
|
||||
|
||||
public static final void fireAt(ModuleInfo moduleinfo) throws Exception {
|
||||
SFReplacer.setModuleInfo(moduleinfo);
|
||||
SFReplacer.start();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,18 +15,18 @@ package org.tianocore.migration;
|
|||
import java.util.*;
|
||||
|
||||
public interface UI {
|
||||
|
||||
public boolean yesOrNo(String question);
|
||||
|
||||
public void print(String message);
|
||||
|
||||
public void println(String message);
|
||||
|
||||
public void println(Set<String> hash);
|
||||
|
||||
public String choose(String message, Object[] choicelist);
|
||||
|
||||
public String getInput(String message);
|
||||
|
||||
public String getFilepath(String title, int mode); // necessary ?
|
||||
|
||||
public boolean yesOrNo(String question);
|
||||
|
||||
public void print(String message);
|
||||
|
||||
public void println(String message);
|
||||
|
||||
public void println(Set<String> hash);
|
||||
|
||||
public String choose(String message, Object[] choicelist);
|
||||
|
||||
public String getInput(String message);
|
||||
|
||||
public String getFilepath(String title, int mode); // necessary ?
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue