bump referencesource for System.Data (remove wrong MDAC ver. check for Odbc)
[mono.git] / mcs / tools / misc / GenerateDelegate.cs
1 /**\r
2  * Namespace: com.mastergaurav.utils\r
3  * Class:     GenerateDelegate\r
4  *\r
5  * Author:  Gaurav Vaish\r
6  * Maintainer: gvaish@iitk.ac.in\r
7  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
8  * Implementation: yes\r
9  * Status:  100%\r
10  *\r
11  * (C) Gaurav Vaish (2001)\r
12  */\r
13 \r
14 using System;\r
15 using System.IO;\r
16 \r
17 namespace com.mastergaurav.Utils\r
18 {\r
19         public class GenerateDelegate\r
20         {\r
21                 public static string TargetDirectory = String.Empty;\r
22                 public static string NamespaceName   = String.Empty;\r
23 \r
24                 public static readonly string PROLOGUE = "/**\n * Namespace: ";\r
25                 public static readonly string DETAILS   = " *\n * Author: Gaurav Vaish\n" +\r
26                                                           " * Maintainer: gvaish@iitk.ac.in\n" +\r
27                                                           " * Contact:  <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\n" +\r
28                                                           " * Implementation: yes\n" +\r
29                                                           " * Status: 100%\n" +\r
30                                                           " *\n" +\r
31                                                           " * (C) Gaurav Vaish (2002)\n" +\r
32                                                           " */\n\n";\r
33                 public static readonly string USING     = "using System;\n" +\r
34                                                           "using System.Web;\n" +\r
35                                                           "using System.Web.UI;\n\n";\r
36 \r
37                 public static readonly string NAMESPACE = "namespace ";\r
38 \r
39                 public static string AskForNamespace()\r
40                 {\r
41                         string nm = String.Empty;\r
42                         System.Console.Write("Enter the name of the namespace: ");\r
43                         nm = System.Console.ReadLine();\r
44                         return nm;\r
45                 }\r
46 \r
47                 public static string AskForMore()\r
48                 {\r
49                         string del = String.Empty;\r
50                         System.Console.Write("Enter the name of the delegate (end to stop): ");\r
51                         del = System.Console.ReadLine();\r
52                         if(del == String.Empty || del == "end")\r
53                                 return String.Empty;\r
54                         return del;\r
55                 }\r
56 \r
57                 public static void Generate(string delName)\r
58                 {\r
59                         string fileName = TargetDirectory + "\\" + delName + "EventHandler.cs";\r
60                         System.Console.Write("File: ");//, fileName);\r
61                         System.Console.Write(fileName);\r
62                         System.Console.Write("\tGenerating");\r
63 \r
64                         StreamWriter writer;\r
65                         try\r
66                         {\r
67                                 Stream stream = new FileStream(fileName, FileMode.Truncate, FileAccess.Write);\r
68                                 writer = new StreamWriter(stream);\r
69                         } catch(FileNotFoundException)\r
70                         {\r
71                                 writer = File.CreateText(fileName);\r
72                         }\r
73                         if(writer == null)\r
74                         {\r
75                                 System.Console.WriteLine("Null writer...\n");\r
76                                 return;\r
77                         }\r
78                         writer.Write(PROLOGUE);\r
79                         writer.Write(NamespaceName + "\n");\r
80                         writer.Write(DETAILS);\r
81                         writer.Write(NAMESPACE);\r
82                         writer.Write(NamespaceName + "\n");\r
83                         writer.Write("{\n");\r
84                         writer.Write("\tpublic delegate void ");\r
85                         writer.Write(delName);\r
86                         writer.Write("EventHandler(object sender, ");\r
87                         writer.Write(delName);\r
88                         writer.Write("EventArgs e);\n");\r
89                         writer.Write("}");\r
90 \r
91                         writer.Flush();\r
92                         writer.Close();\r
93 \r
94                         System.Console.WriteLine("\tGenerated\n");\r
95                 }\r
96 \r
97                 public static string GetTargetDir()\r
98                 {\r
99                         System.Console.Write("Enter target directory: ");\r
100                         return System.Console.ReadLine();\r
101                 }\r
102 \r
103                 public static void Usage(bool wrong)\r
104                 {\r
105                         if(wrong)\r
106                         {\r
107                                 System.Console.WriteLine("Wrong # arguments.");\r
108                         }\r
109                         System.Console.WriteLine("Usage: GenerateDelegate [target-dir] [namespace] [delegate1 [delegate2 [...]]]");\r
110                 }\r
111 \r
112                 public static bool IsHelp(string arg)\r
113                 {\r
114                         return (arg == "-h" || arg == "--help");\r
115                 }\r
116 \r
117                 public static bool IsDirectory(string dirName)\r
118                 {\r
119                         FileAttributes attrs;\r
120                         try\r
121                         {\r
122                                 attrs = File.GetAttributes(dirName);\r
123                                 if( (attrs & FileAttributes.Directory) != FileAttributes.Directory)\r
124                                 {\r
125                                         Usage(true);\r
126                                         return false;\r
127                                 }\r
128                         }catch(Exception e)\r
129                         {\r
130                                 System.Console.WriteLine("Exception: {0}", e.ToString());\r
131                                 return false;\r
132                         }\r
133                         return true;\r
134                 }\r
135 \r
136                 public static void Main(string[] args)\r
137                 {\r
138                         if(args.Length == 1 && IsHelp(args[0]))\r
139                         {\r
140                                 Usage(false);\r
141                                 return;\r
142                         }\r
143 \r
144                         if(args.Length == 0)\r
145                         {\r
146                                 TargetDirectory = GetTargetDir();\r
147                                 while(TargetDirectory.EndsWith("\\"))\r
148                                 {\r
149                                         TargetDirectory = TargetDirectory.Substring(0, TargetDirectory.Length - 1);\r
150                                 }\r
151                         } else\r
152                         {\r
153                                 while(args[0].EndsWith("\\"))\r
154                                 {\r
155                                         args[0] = args[0].Substring(0, args[0].Length - 1);\r
156                                 }\r
157                                 TargetDirectory = args[0];\r
158                         }\r
159 \r
160                         if(!IsDirectory(TargetDirectory))\r
161                                 return;\r
162 \r
163                         if(args.Length > 1)\r
164                         {\r
165                                 NamespaceName = args[1];\r
166                         } else\r
167                         {\r
168                                 NamespaceName = AskForNamespace();\r
169                         }\r
170 \r
171                         if(args.Length > 2)\r
172                         {\r
173                                 int i=0;\r
174                                 foreach(string currArg in args)\r
175                                 {\r
176                                         if(i != 0)\r
177                                         {\r
178                                                 Generate(currArg);\r
179                                         }\r
180                                         i++;\r
181                                 }\r
182                         }\r
183                         string delegateName = String.Empty;\r
184                         while((delegateName = AskForMore()) != String.Empty)\r
185                         {\r
186                                 Generate(delegateName);\r
187                         }\r
188                 }\r
189         }\r
190 }\r