public String operation(String wholeline) {\r
boolean addr8 = false;\r
\r
- Pattern pat = Pattern.compile("g?(BS|RT)(\\s*->\\s*)([a-zA-Z_]\\w*)", Pattern.MULTILINE); // ! only two level () bracket allowed !\r
- //Pattern ptnpei = Pattern.compile("\\(\\*\\*?PeiServices\\)[.-][>]?\\s*(\\w*[#$]*)(\\s*\\(([^\\(\\)]*(\\([^\\(\\)]*\\))?[^\\(\\)]*)*\\))", Pattern.MULTILINE);\r
-\r
- // replace BS -> gBS , RT -> gRT\r
- Matcher mat = pat.matcher(wholeline);\r
- if (mat.find()) { // add a library here\r
- MigrationTool.ui.println("Converting all BS->gBS, RT->gRT");\r
- wholeline = mat.replaceAll("g$1$2$3"); //unknown correctiveness\r
- }\r
- mat.reset();\r
- while (mat.find()) {\r
- if (mat.group(1).matches("BS")) {\r
- mi.hashrequiredr9libs.add("UefiBootServicesTableLib");\r
- }\r
- if (mat.group(1).matches("RT")) {\r
- mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib");\r
- }\r
- }\r
// remove EFI_DRIVER_ENTRY_POINT\r
wholeline = wholeline.replaceAll("(EFI_\\w+_ENTRY_POINT)", MigrationTool.MIGRATIONCOMMENT + " $1");\r
- \r
+ // remove R8 library contractor\r
+ wholeline = wholeline.replaceAll ("(\\b(?:Efi|Dxe)InitializeDriverLib\\b)", MigrationTool.MIGRATIONCOMMENT + " $1");\r
+ // Add Library Class for potential reference of gBS, gRT & gDS.\r
+ if (Common.find (wholeline, "\\bg?BS\\b")) {\r
+ mi.hashrequiredr9libs.add("UefiBootServicesTableLib");\r
+ }\r
+ if (Common.find (wholeline, "\\bg?RT\\b")) {\r
+ mi.hashrequiredr9libs.add ("UefiRuntimeServicesTableLib");\r
+ }\r
+ if (Common.find (wholeline, "\\bgDS\\b")) {\r
+ mi.hashrequiredr9libs.add ("DxeServicesTableLib");\r
+ }\r
// start replacing names\r
String r8thing;\r
String r9thing;\r
it = mi.hashnonlocalfunc.iterator();\r
while (it.hasNext()) {\r
r8thing = it.next();\r
- if (r8thing.matches("EfiInitializeDriverLib")) { //s\r
- mi.hashrequiredr9libs.add("UefiBootServicesTableLib"); //p\r
- mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib"); //e\r
- } else if (r8thing.matches("DxeInitializeDriverLib")) { //c\r
- mi.hashrequiredr9libs.add("UefiBootServicesTableLib"); //i\r
- mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib"); //a\r
- mi.hashrequiredr9libs.add("DxeServicesTableLib"); //l\r
- } else { //\r
- mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing)); // add a library here\r
- }\r
-\r
+ mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing)); // add a library here\r
+ \r
r8tor9 temp;\r
if ((r9thing = MigrationTool.db.getR9Func(r8thing)) != null) {\r
if (!r8thing.equals(r9thing)) {\r