+\r
+ private final void addr8only() throws Exception {\r
+ String paragraph = null;\r
+ String line = Common.file2string(MigrationTool.db.DatabasePath + File.separator + "R8Lib.c");\r
+ PrintWriter outfile1 = new PrintWriter(new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.c")));\r
+ PrintWriter outfile2 = new PrintWriter(new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.h")));\r
+ Pattern ptnr8only = Pattern.compile("////#?(\\w*)?(.*?R8_(\\w*).*?)////~", Pattern.DOTALL);\r
+ Matcher mtrr8only = ptnr8only.matcher(line);\r
+ Matcher mtrr8onlyhead;\r
+ \r
+ //add head comment\r
+ Matcher mtrr8onlyheadcomment = Critic.PTN_NEW_HEAD_COMMENT.matcher(line);\r
+ if (mtrr8onlyheadcomment.find()) {\r
+ outfile1.append(mtrr8onlyheadcomment.group() + "\n\n");\r
+ outfile2.append(mtrr8onlyheadcomment.group() + "\n\n");\r
+ }\r
+ \r
+ //add functions body\r
+ while (mtrr8only.find()) {\r
+ if (mi.hashr8only.contains(mtrr8only.group(3))) {\r
+ paragraph = mtrr8only.group(2);\r
+ outfile1.append(paragraph + "\n\n");\r
+ if (mtrr8only.group(1).length() != 0) {\r
+ mi.hashrequiredr9libs.add(mtrr8only.group(1));\r
+ }\r
+ //generate R8lib.h\r
+ while ((mtrr8onlyhead = Func.ptnbrace.matcher(paragraph)).find()) {\r
+ paragraph = mtrr8onlyhead.replaceAll(";");\r
+ }\r
+ outfile2.append(paragraph + "\n\n");\r
+ }\r
+ }\r
+ outfile1.flush();\r
+ outfile1.close();\r
+ outfile2.flush();\r
+ outfile2.close();\r
+ \r
+ mi.localmodulesources.add("R8Lib.h");\r
+ mi.localmodulesources.add("R8Lib.c");\r
+ }\r
+ \r
+ //-----------------------------------ForDoAll-----------------------------------//\r
+ public void run(String filepath) throws Exception {\r
+ String inname = filepath.replace(mi.modulepath + File.separator, "");\r
+ String tempinpath = mi.modulepath + File.separator + "temp" + File.separator;\r
+ String tempoutpath = MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator;\r
+\r
+ Iterator<Common.Laplace> itLaplace = Laplaces.iterator();\r
+ while (itLaplace.hasNext()) {\r
+ Common.Laplace lap = itLaplace.next();\r
+ if (lap.recognize(inname)) {\r
+ MigrationTool.ui.println("\nHandling file: " + inname);\r
+ lap.transform(tempinpath + inname, tempoutpath + lap.namechange(inname));\r
+ }\r
+ }\r
+ }\r
+ \r
+ public boolean filter(File dir) {\r
+ return true;\r
+ }\r
+ //-----------------------------------ForDoAll-----------------------------------//\r
+ \r
+ private final void setModuleInfo(ModuleInfo moduleinfo) {\r
+ mi = moduleinfo;\r
+ }\r
+ \r
+ private final void start() throws Exception {\r
+ Laplaces.add(new DxsLaplace());\r
+ Laplaces.add(new CLaplace());\r
+ Laplaces.add(new IdleLaplace());\r
+ \r
+ Common.toDoAll(mi.localmodulesources, this);\r
+ \r
+ if (!mi.hashr8only.isEmpty()) {\r
+ addr8only();\r
+ }\r
+ \r
+ Laplaces.clear();\r
+ }\r
+ \r
+ public static final void fireAt(ModuleInfo moduleinfo) throws Exception {\r
+ SFReplacer.setModuleInfo(moduleinfo);\r
+ SFReplacer.start();\r
+ }\r