1.1 --- a/tools/incparser/ParseWriter.cs Sat Apr 19 10:35:24 2008 +0000
1.2 +++ b/tools/incparser/ParseWriter.cs Mon Apr 21 21:41:38 2008 +0000
1.3 @@ -1,6 +1,8 @@
1.4 using System;
1.5 +using System.Collections;
1.6 using System.Collections.Generic;
1.7 using System.Text;
1.8 +using System.IO;
1.9
1.10 namespace incparser
1.11 {
1.12 @@ -9,6 +11,16 @@
1.13 private int level;
1.14 private StringBuilder data;
1.15
1.16 + public ArrayList enumList = new ArrayList();
1.17 + public ArrayList defineList = new ArrayList();
1.18 + public ArrayList enumTypeList = new ArrayList();
1.19 + public ArrayList forwardList = new ArrayList();
1.20 + public ArrayList nativeList = new ArrayList();
1.21 + public ArrayList stockList = new ArrayList();
1.22 + public ArrayList funcenumList = new ArrayList();
1.23 + public ArrayList functagList = new ArrayList();
1.24 + public ArrayList structList = new ArrayList();
1.25 +
1.26 public int Level
1.27 {
1.28 get
1.29 @@ -25,6 +37,12 @@
1.30 }
1.31 }
1.32
1.33 + public void Reset()
1.34 + {
1.35 + level = 0;
1.36 + data = new StringBuilder();
1.37 + }
1.38 +
1.39 public ParseWriter()
1.40 {
1.41 level = 0;
1.42 @@ -52,6 +70,79 @@
1.43 WriteLine("}");
1.44 }
1.45
1.46 + public void WriteFiles(string template, string outputfile)
1.47 + {
1.48 + StreamReader sr = null;
1.49 +
1.50 + try
1.51 + {
1.52 + sr = File.OpenText(template);
1.53 + }
1.54 + catch (Exception e)
1.55 + {
1.56 + Console.WriteLine("Failed to open template file: " + e.Message);
1.57 + return;
1.58 + }
1.59 +
1.60 + string contents = sr.ReadToEnd();
1.61 +
1.62 + string replace = ToOutputString(defineList);
1.63 + contents = contents.Replace("$defines", replace);
1.64 +
1.65 + replace = ToOutputString(enumList);
1.66 + contents = contents.Replace("$enums", replace);
1.67 +
1.68 + replace = ToOutputString(enumTypeList);
1.69 + contents = contents.Replace("$enumtypes", replace);
1.70 +
1.71 + replace = ToOutputString(forwardList);
1.72 + contents = contents.Replace("$forwards", replace);
1.73 +
1.74 + replace = ToOutputString(nativeList);
1.75 + contents = contents.Replace("$natives", replace);
1.76 +
1.77 + replace = ToOutputString(stockList);
1.78 + contents = contents.Replace("$stocks", replace);
1.79 +
1.80 + replace = ToOutputString(funcenumList);
1.81 + contents = contents.Replace("$funcenums", replace);
1.82 +
1.83 + replace = ToOutputString(functagList);
1.84 + contents = contents.Replace("$functags", replace);
1.85 +
1.86 + replace = ToOutputString(structList);
1.87 + contents = contents.Replace("$structs", replace);
1.88 +
1.89 + StreamWriter sw;
1.90 + sw = File.CreateText(outputfile);
1.91 +
1.92 + sw.Write(contents);
1.93 +
1.94 + sr.Close();
1.95 + sw.Close();
1.96 + }
1.97 +
1.98 + private string ToOutputString(ArrayList a)
1.99 + {
1.100 + string defines = "";
1.101 + int count = 0;
1.102 +
1.103 + foreach (object o in a)
1.104 + {
1.105 + defines += o;
1.106 + defines += " ";
1.107 + count += o.ToString().Length;
1.108 +
1.109 + if (count > 180)
1.110 + {
1.111 + defines += "\r\n";
1.112 + count = 0;
1.113 + }
1.114 + }
1.115 +
1.116 + return defines;
1.117 + }
1.118 +
1.119 private void WriteLine(string line)
1.120 {
1.121 Tabinate();