summaryrefslogtreecommitdiff
path: root/Tools/Source/MigrationTools
diff options
context:
space:
mode:
authoralfred <alfred@6f19259b-4bc3-4df7-8a09-765794883524>2006-09-05 07:37:01 +0000
committeralfred <alfred@6f19259b-4bc3-4df7-8a09-765794883524>2006-09-05 07:37:01 +0000
commit16b7eeef5489a5e16da1574c13df53990ffac2cf (patch)
tree163f5cd0db1b38b6bbb63f03b91d908a3651db97 /Tools/Source/MigrationTools
parent78b5fb82653276a1f8726ff2557854fc692c8f28 (diff)
downloadedk2-16b7eeef5489a5e16da1574c13df53990ffac2cf.zip
edk2-16b7eeef5489a5e16da1574c13df53990ffac2cf.tar.gz
edk2-16b7eeef5489a5e16da1574c13df53990ffac2cf.tar.bz2
REMODEL OF SourceFileReplacer.java
AT LAST git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1464 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools/Source/MigrationTools')
-rw-r--r--Tools/Source/MigrationTools/org/tianocore/migration/Common.java9
-rw-r--r--Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java2
-rw-r--r--Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java2
-rw-r--r--Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java110
4 files changed, 72 insertions, 51 deletions
diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/Common.java b/Tools/Source/MigrationTools/org/tianocore/migration/Common.java
index 19f64f7..fb89dca 100644
--- a/Tools/Source/MigrationTools/org/tianocore/migration/Common.java
+++ b/Tools/Source/MigrationTools/org/tianocore/migration/Common.java
@@ -142,8 +142,15 @@ public final class Common {
}
}
}
+
+ 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 void toDoAll(String path, ForDoAll fda, int type) throws Exception { // filter of file type can be done in toDo
+ 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;
diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java b/Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java
index cbb49a1..5f84ccd 100644
--- a/Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java
+++ b/Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java
@@ -34,7 +34,7 @@ public class MigrationTool {
ModuleReader.ModuleScan(mi);
//MigrationTool.ui.yesOrNo("go on replace?");
- SourceFileReplacer.flush(mi); // some adding library actions are taken here,so it must be put before "MsaWriter"
+ 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
diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java b/Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java
index 5706488..d53c7b9 100644
--- a/Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java
+++ b/Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java
@@ -15,8 +15,6 @@ package org.tianocore.migration;
import java.io.*;
import java.util.*;
-import org.tianocore.ModuleTypeDef;
-
/*
Class ModuleInfo is built for scanning the source files, it contains all the needed
information and all the temporary data.
diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java b/Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java
index 50606a7..e6d86b6 100644
--- a/Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java
+++ b/Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java
@@ -17,9 +17,10 @@ import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public final class SourceFileReplacer {
- private static ModuleInfo mi;
- private static boolean showdetails = false;
+public final class SourceFileReplacer implements Common.ForDoAll {
+ private static final SourceFileReplacer SFReplacer = new SourceFileReplacer();
+ private ModuleInfo mi;
+ private static boolean showdetails = true; // set this as default now, may be changed in the future
private static class r8tor9 {
r8tor9(String r8, String r9) {
@@ -38,52 +39,11 @@ public final class SourceFileReplacer {
private static final Set<r8tor9> fileprotocol = new HashSet<r8tor9>();
private static final Set<String> filer8only = new HashSet<String>();
- public static final void flush(ModuleInfo moduleinfo) throws Exception {
- mi = moduleinfo;
-
- String outname = null;
- String inname = null;
-
- showdetails = true; // set this as default now, may be changed in the future
-
- Iterator<String> di = mi.localmodulesources.iterator();
- String tempinpath = mi.modulepath + File.separator + "temp" + File.separator;
- String tempoutpath = MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator;
- while (di.hasNext()) {
- inname = di.next();
- if (inname.contains(".c") || inname.contains(".C")) {
- if (inname.contains(".C")) {
- outname = inname.replaceFirst(".C", ".c");
- } else {
- outname = inname;
- }
- MigrationTool.ui.println("\nModifying file: " + inname);
- Common.string2file(sourcefilereplace(Common.file2string(tempinpath + inname)), tempoutpath + outname);
- } else if (inname.contains(".h") || inname.contains(".H") || inname.contains(".uni")) {
- if (inname.contains(".H")) {
- outname = inname.replaceFirst(".H", ".h");
- } else {
- outname = inname;
- }
- MigrationTool.ui.println("\nCopying file: " + inname);
- Common.string2file(Common.file2string(tempinpath + inname), tempoutpath + outname);
- } else if (inname.contains(".dxs")) {
- outname = inname;
- MigrationTool.ui.println("\nModifying file: " + inname);
- Common.string2file(convertdxs(Common.file2string(tempinpath + inname)), tempoutpath + outname);
- }
- }
-
- if (!mi.hashr8only.isEmpty()) {
- addr8only();
- }
- }
-
private static final String addincludefile(String wholeline, String hfile) {
return wholeline.replaceFirst("(\\*/\\s)", "$1\n#include " + hfile + "\n");
}
- private static final String convertdxs(String wholeline) {
+ private final String convertdxs(String wholeline) {
if (mi.getModuleType().equals("PEIM")) {
return addincludefile(wholeline, "\\<PeimDepex.h\\>");
} else {
@@ -91,7 +51,7 @@ public final class SourceFileReplacer {
}
}
- private static final void addr8only() throws Exception {
+ 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")));
@@ -123,7 +83,7 @@ public final class SourceFileReplacer {
}
// Caution : if there is @ in file , it will be replaced with \n , so is you use Doxygen ... God Bless you!
- private static final String sourcefilereplace(String wholeline) throws Exception {
+ private final String sourcefilereplace(String wholeline) throws Exception {
boolean addr8 = false;
Pattern pat = Pattern.compile("g?(BS|RT)(\\s*->\\s*)([a-zA-Z_]\\w*)", Pattern.MULTILINE); // ! only two level () bracket allowed !
@@ -312,4 +272,60 @@ public final class SourceFileReplacer {
}
}
}
+
+ //-----------------------------------ForDoAll-----------------------------------//
+ public void run(String filepath) throws Exception {
+ String outname = null;
+ 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;
+
+ if (inname.contains(".c") || inname.contains(".C")) {
+ if (inname.contains(".C")) {
+ outname = inname.replaceFirst(".C", ".c");
+ } else {
+ outname = inname;
+ }
+ MigrationTool.ui.println("\nModifying file: " + inname);
+ Common.string2file(sourcefilereplace(Common.file2string(tempinpath + inname)), tempoutpath + outname);
+ } else if (inname.contains(".h") || inname.contains(".H") || inname.contains(".uni")) {
+ if (inname.contains(".H")) {
+ outname = inname.replaceFirst(".H", ".h");
+ } else {
+ outname = inname;
+ }
+ MigrationTool.ui.println("\nCopying file: " + inname);
+ Common.string2file(Common.file2string(tempinpath + inname), tempoutpath + outname);
+ } else if (inname.contains(".dxs")) {
+ outname = inname;
+ MigrationTool.ui.println("\nModifying file: " + inname);
+ Common.string2file(convertdxs(Common.file2string(tempinpath + inname)), tempoutpath + outname);
+ }
+ }
+
+ public boolean dirFilter(String filepath) {
+ return true;
+ }
+
+ public boolean fileFilter(String filepath) {
+ return true;
+ }
+ //-----------------------------------ForDoAll-----------------------------------//
+
+ private final void setModuleInfo(ModuleInfo moduleinfo) {
+ mi = moduleinfo;
+ }
+
+ private final void start() throws Exception {
+ Common.toDoAll(mi.localmodulesources, this);
+
+ if (!mi.hashr8only.isEmpty()) {
+ addr8only();
+ }
+ }
+
+ public static final void fireAt(ModuleInfo moduleinfo) throws Exception {
+ SFReplacer.setModuleInfo(moduleinfo);
+ SFReplacer.start();
+ }
}