2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System / System.CodeDom.Compiler / CodeDomProvider.cs
1 //
2 // System.CodeDom.Compiler.CodeDomProvider.cs
3 //
4 // Author:
5 //   Daniel Stodden (stodden@in.tum.de)
6 //   Marek Safar (marek.safar@seznam.cz)
7 //
8 // (C) 2002 Ximian, Inc.
9 //
10
11 //
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
19 // 
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
22 // 
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 //
31
32 using System.ComponentModel;
33 using System.IO;
34
35 namespace System.CodeDom.Compiler
36 {
37         [ToolboxItem ("")]
38         public abstract class CodeDomProvider : Component
39         {
40                 //
41                 // Constructors
42                 //
43                 protected CodeDomProvider()
44                 {
45                 }
46
47                 //
48                 // Properties
49                 //
50                 public virtual string FileExtension {
51                         get {
52                                 return String.Empty;
53                         }
54                 }
55
56                 public virtual LanguageOptions LanguageOptions {
57                         get {
58                                 return LanguageOptions.None;
59                         }
60                 }
61
62                 //
63                 // Methods
64                 //
65                 public abstract ICodeCompiler CreateCompiler();
66
67                 public abstract ICodeGenerator CreateGenerator();
68                 
69                 public virtual ICodeGenerator CreateGenerator (string fileName)
70                 {
71                         return CreateGenerator();
72                 }
73
74                 public virtual ICodeGenerator CreateGenerator (TextWriter output)
75                 {
76                         return CreateGenerator();
77                 }
78
79                 public virtual ICodeParser CreateParser()
80                 {
81                         return null;
82                 }
83
84                 public virtual TypeConverter GetConverter (Type type)
85                 {
86                         return TypeDescriptor.GetConverter (type);
87                 }
88
89 #if NET_2_0
90
91                 public virtual CompilerResults CompileAssemblyFromDom (CompilerParameters options, params CodeCompileUnit[] compilationUnits)
92                 {
93                         return CreateCompiler ().CompileAssemblyFromDomBatch (options, compilationUnits);
94                 }
95
96                 public static CodeDomProvider CreateProvider (string language)
97                 {
98                         return GetCompilerInfo (language).CreateProvider ();
99                 }
100
101                 public virtual void GenerateCodeFromCompileUnit (CodeCompileUnit compileUnit, 
102                         TextWriter writer, CodeGeneratorOptions options)
103                 {
104                         CreateGenerator ().GenerateCodeFromCompileUnit (compileUnit, writer, options);
105                 }
106
107                 public virtual void GenerateCodeFromStatement (CodeStatement statement, TextWriter writer, CodeGeneratorOptions options)
108                 {
109                         CreateGenerator ().GenerateCodeFromStatement (statement, writer, options);
110                 }
111
112                 [MonoTODO ("Not implemented")]
113                 public static CompilerInfo GetCompilerInfo (string language)
114                 {
115                         return null;
116                 }
117
118                 public virtual bool Supports (GeneratorSupport supports)
119                 {
120                         return CreateGenerator ().Supports (supports);
121                 }
122
123 #endif
124
125         }
126 }