tools/incparser/ParseWriter.cs
changeset 2019 9f473114a511
parent 1952 b7aa2b626807
     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();