Author: spouliot
Date: 2005-11-01 10:27:56 -0500 (Tue, 01 Nov 2005)
New Revision: 52446

Modified:
   trunk/mcs/class/System/System.CodeDom.Compiler/ChangeLog
   trunk/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
Log:
2005-11-01  Sebastien Pouliot  <[EMAIL PROTECTED]>

        CodeDomProvider.cs: Added missing 2.0 methods. Added CAS permissions.
        Added protection against NullReferenceException when no config is
        available.



Modified: trunk/mcs/class/System/System.CodeDom.Compiler/ChangeLog
===================================================================
--- trunk/mcs/class/System/System.CodeDom.Compiler/ChangeLog    2005-11-01 
15:27:07 UTC (rev 52445)
+++ trunk/mcs/class/System/System.CodeDom.Compiler/ChangeLog    2005-11-01 
15:27:56 UTC (rev 52446)
@@ -1,3 +1,9 @@
+2005-11-01  Sebastien Pouliot  <[EMAIL PROTECTED]>
+
+       CodeDomProvider.cs: Added missing 2.0 methods. Added CAS permissions.
+       Added protection against NullReferenceException when no config is
+       available.
+
 2005-10-29  Sebastien Pouliot  <[EMAIL PROTECTED]>
 
        CodeDomProvider.cs: Stubbed a few 2.0 methods to fix API errors in 

Modified: trunk/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
===================================================================
--- trunk/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs   
2005-11-01 15:27:07 UTC (rev 52445)
+++ trunk/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs   
2005-11-01 15:27:56 UTC (rev 52446)
@@ -1,10 +1,11 @@
 //
 // System.CodeDom.Compiler.CodeDomProvider.cs
 //
-// Author:
+// Authors:
 //   Daniel Stodden ([EMAIL PROTECTED])
 //   Marek Safar ([EMAIL PROTECTED])
 //   Gonzalo Paniagua Javier ([EMAIL PROTECTED])
+//   Sebastien Pouliot  <[EMAIL PROTECTED]>
 //
 // Copyright (C) 2002,2003,2004,2005 Novell, Inc (http://www.novell.com)
 //
@@ -28,10 +29,12 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Collections;
 using System.ComponentModel;
 using System.Configuration;
 using System.IO;
 using System.Runtime.InteropServices;
+using System.Security.Permissions;
 
 namespace System.CodeDom.Compiler {
 
@@ -66,8 +69,14 @@
                //
                // Methods
                //
+#if NET_2_0
+               [Obsolete ("ICodeCompiler is obsolete")]
+#endif
                public abstract ICodeCompiler CreateCompiler();
 
+#if NET_2_0
+               [Obsolete ("ICodeGenerator is obsolete")]
+#endif
                public abstract ICodeGenerator CreateGenerator();
                
                public virtual ICodeGenerator CreateGenerator (string fileName)
@@ -80,6 +89,9 @@
                        return CreateGenerator();
                }
 
+#if NET_2_0
+               [Obsolete ("ICodeParser is obsolete")]
+#endif
                public virtual ICodeParser CreateParser()
                {
                        return null;
@@ -91,90 +103,206 @@
                }
 
 #if NET_2_0
-
                public virtual CompilerResults CompileAssemblyFromDom 
(CompilerParameters options, params CodeCompileUnit[] compilationUnits)
                {
-                       return CreateCompiler ().CompileAssemblyFromDomBatch 
(options, compilationUnits);
+                       ICodeCompiler cc = CreateCompiler ();
+                       if (cc == null)
+                               throw new NotImplementedException ();
+                       return cc.CompileAssemblyFromDomBatch (options, 
compilationUnits);
                }
 
+               public virtual CompilerResults CompileAssemblyFromFile 
(CompilerParameters options, params string[] fileNames)
+               {
+                       ICodeCompiler cc = CreateCompiler ();
+                       if (cc == null)
+                               throw new NotImplementedException ();
+                       return cc.CompileAssemblyFromFileBatch (options, 
fileNames);
+               }
+
+               public virtual CompilerResults CompileAssemblyFromSource 
(CompilerParameters options, params string[] fileNames)
+               {
+                       ICodeCompiler cc = CreateCompiler ();
+                       if (cc == null)
+                               throw new NotImplementedException ();
+                       return cc.CompileAssemblyFromSourceBatch (options, 
fileNames);
+               }
+
+               public virtual string CreateEscapedIdentifier (string value)
+               {
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       return cg.CreateEscapedIdentifier (value);
+               }
+
+               [ComVisible (false)]
+               [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
                public static CodeDomProvider CreateProvider (string language)
                {
-                       return GetCompilerInfo (language).CreateProvider ();
+                       CompilerInfo ci = GetCompilerInfo (language);
+                       return (ci == null) ? null : ci.CreateProvider ();
                }
 
+               public virtual string CreateValidIdentifier (string value)
+               {
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       return cg.CreateValidIdentifier (value);
+               }
+
                public virtual void GenerateCodeFromCompileUnit 
(CodeCompileUnit compileUnit, 
                        TextWriter writer, CodeGeneratorOptions options)
                {
-                       CreateGenerator ().GenerateCodeFromCompileUnit 
(compileUnit, writer, options);
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       cg.GenerateCodeFromCompileUnit (compileUnit, writer, 
options);
                }
 
-               [MonoTODO]
                public virtual void GenerateCodeFromExpression (CodeExpression 
expression, TextWriter writer, CodeGeneratorOptions options)
                {
-                       throw new NotImplementedException();
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       cg.GenerateCodeFromExpression (expression, writer, 
options);
                }
 
-               [MonoTODO]
                public virtual void GenerateCodeFromMember (CodeTypeMember 
member, TextWriter writer, CodeGeneratorOptions options)
                {
-                       throw new NotImplementedException();
+                       // Documented to always throw an exception (if not 
overriden)
+                       throw new NotImplementedException ();
+                       // Note: the pattern is different from other 
GenerateCodeFrom* because 
+                       // ICodeGenerator doesn't have a GenerateCodeFromMember 
member
                }
 
-               [MonoTODO]
                public virtual void GenerateCodeFromNamespace (CodeNamespace 
codeNamespace, TextWriter writer, CodeGeneratorOptions options)
                {
-                       throw new NotImplementedException();
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       cg.GenerateCodeFromNamespace (codeNamespace, writer, 
options);
                }
 
                public virtual void GenerateCodeFromStatement (CodeStatement 
statement, TextWriter writer, CodeGeneratorOptions options)
                {
-                       CreateGenerator ().GenerateCodeFromStatement 
(statement, writer, options);
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       cg.GenerateCodeFromStatement (statement, writer, 
options);
                }
 
-               [MonoTODO]
                public virtual void GenerateCodeFromType (CodeTypeDeclaration 
codeType, TextWriter writer, CodeGeneratorOptions options)
                {
-                       throw new NotImplementedException();
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       cg.GenerateCodeFromType (codeType, writer, options);
                }
 
+               [ComVisible (false)]
+               [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
+               public static CompilerInfo[] GetAllCompilerInfo ()
+               {
+                       int n = 0;
+                       if ((Config != null) && (Config.Compilers != null)) 
+                               n = Config.Compilers.Hash.Count;
+                       CompilerInfo[] ci = new CompilerInfo [n];
+                       if (n > 0)
+                               Config.Compilers.Hash.Values.CopyTo (ci, 0);
+                       return ci;
+               }
+
+               [ComVisible (false)]
+               [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
                public static CompilerInfo GetCompilerInfo (string language)
                {
                        if (language == null)
                                throw new ArgumentNullException ("language");
 
-                       return Config.GetCompilerInfo (language);
+                       return (Config == null) ? null : Config.GetCompilerInfo 
(language);
                }
 
+               [ComVisible (false)]
+               [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
+               public static string GetLanguageFromExtension (string extension)
+               {
+                       if (extension == null)
+                               throw new ArgumentNullException ("extension");
+
+                       if (Config != null) {
+                               foreach (DictionaryEntry de in 
Config.Compilers.Hash) {
+                                       CompilerInfo c = (CompilerInfo) 
de.Value;
+                                       if (Array.IndexOf (c.GetExtensions (), 
extension) != -1)
+                                               return (string) de.Key;
+                               }
+                       }
+                       return null;
+               }
+
+               public virtual string GetTypeOutput (CodeTypeReference type)
+               {
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       return cg.GetTypeOutput (type);
+               }
+
+               [ComVisible (false)]
+               [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
                public static bool IsDefinedExtension (string extension)
                {
                        if (extension == null)
                                throw new ArgumentNullException ("extension");
 
-                       foreach (CompilerInfo c in 
Config.Compilers.Hash.Values) {
-                               if (Array.IndexOf (c.GetExtensions (), 
extension) != -1)
-                                       return true;
+                       if (Config != null) {
+                               foreach (CompilerInfo c in 
Config.Compilers.Hash.Values) {
+                                       if (Array.IndexOf (c.GetExtensions (), 
extension) != -1)
+                                               return true;
+                               }
                        }
-
                        return false;
                }
 
+               [ComVisible (false)]
+               [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
                public static bool IsDefinedLanguage (string language)
                {
                        if (language == null)
                                throw new ArgumentNullException ("language");
 
+                       if (Config == null)
+                               return false;
                        return (Config.GetCompilerInfo (language) == null);
                }
 
+               public virtual bool IsValidIdentifier (string value)
+               {
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       return cg.IsValidIdentifier (value);
+               }
+
+               public virtual CodeCompileUnit Parse (TextReader codeStream)
+               {
+                       ICodeParser cp = CreateParser ();
+                       if (cp == null)
+                               throw new NotImplementedException ();
+                       return cp.Parse (codeStream);
+               }
+
                public virtual bool Supports (GeneratorSupport supports)
                {
-                       return CreateGenerator ().Supports (supports);
+                       ICodeGenerator cg = CreateGenerator ();
+                       if (cg == null)
+                               throw new NotImplementedException ();
+                       return cg.Supports (supports);
                }
 
                static CompilationConfiguration Config {
                        get { return ConfigurationSettings.GetConfig 
("system.codedom") as CompilationConfiguration; }
                }
 #endif
-
        }
 }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to