New test.
[mono.git] / mcs / class / Microsoft.Build.Tasks / Microsoft.Build.Tasks / GenerateResource.cs
index 5987cac9830e6a072f4024d9488de8a1c10a7e67..e65caefba9e7bde18847282ca648df269c2d9b7a 100644 (file)
@@ -3,7 +3,8 @@
 //
 // Author:
 //   Marek Sieradzki (marek.sieradzki@gmail.com)
-// FIXME: code from monoresgen, add authors
+//   Paolo Molaro (lupus@ximian.com)
+//   Gonzalo Paniagua Javier (gonzalo@ximian.com)
 //
 // (C) 2005 Marek Sieradzki
 //
@@ -32,6 +33,7 @@ using System;
 using System.Text;
 using System.IO;
 using System.Collections;
+using System.Collections.Generic;
 using System.Resources;
 using System.Reflection;
 using Microsoft.Build.Framework;
@@ -41,8 +43,9 @@ namespace Microsoft.Build.Tasks {
        public sealed class GenerateResource : TaskExtension {
        
                ITaskItem[]     filesWritten;
-               //bool          neverLockTypeAssemblies;
+               bool            neverLockTypeAssemblies;
                ITaskItem[]     outputResources;
+               bool            publicClass;
                ITaskItem[]     references;
                ITaskItem[]     sources;
                ITaskItem       stateFile;
@@ -59,7 +62,7 @@ namespace Microsoft.Build.Tasks {
 
                public override bool Execute ()
                {
-                       ArrayList temporaryFilesWritten = new ArrayList ();
+                       List  <ITaskItem> temporaryFilesWritten = new List <ITaskItem> ();
                        if (sources.Length != outputResources.Length) {
                                Log.LogErrorFromException (new Exception ("Sources count is different than OutputResources count."));
                                return false;
@@ -72,28 +75,26 @@ namespace Microsoft.Build.Tasks {
                                        CompileResourceFile (sourceFile, outputFile);
                                }
                        } else {
-                               IEnumerator sourceEnum, outputEnum;
-                               sourceEnum = sources.GetEnumerator ();
-                               outputEnum = outputResources.GetEnumerator ();
+                               IEnumerator <ITaskItem> sourceEnum, outputEnum;
+                               sourceEnum = (IEnumerator <ITaskItem>) sources.GetEnumerator ();
+                               outputEnum = (IEnumerator <ITaskItem>) outputResources.GetEnumerator ();
                                while (sourceEnum.MoveNext ()) {
                                        outputEnum.MoveNext ();
-                                       string sourceFile = ((ITaskItem) sourceEnum.Current).ItemSpec;
-                                       string outputFile = ((ITaskItem) outputEnum.Current).ItemSpec;
+                                       string sourceFile = sourceEnum.Current.ItemSpec;
+                                       string outputFile = outputEnum.Current.ItemSpec;
                                        if (outputFile == String.Empty) {
                                                Log.LogErrorFromException (new Exception ("Filename of output can not be empty."));
                                                return false;
                                        }
-                                       if (CompileResourceFile (sourceFile, outputFile) == false)
+                                       if (CompileResourceFile (sourceFile, outputFile) == false) {
                                                Log.LogErrorFromException (new Exception ("Error during compiling resource file."));
                                                return false;
+                                       }
                                        temporaryFilesWritten.Add (outputEnum.Current);
                                }
                        }
                        
-                       filesWritten = new ITaskItem [temporaryFilesWritten.Count];
-                       int i = 0;
-                       foreach (ITaskItem item in temporaryFilesWritten)
-                               filesWritten [i++] = item;
+                       filesWritten = temporaryFilesWritten.ToArray ();
                        
                        return true;
                }
@@ -172,19 +173,17 @@ namespace Microsoft.Build.Tasks {
                        get {
                                return filesWritten;
                        }
-                       set {
-                               filesWritten = value;
-                       }
                }
 
-               /*public bool NeverLockTypeAssemblies {
+               [MonoTODO]
+               public bool NeverLockTypeAssemblies {
                        get {
                                return neverLockTypeAssemblies;
                        }
                        set {
                                neverLockTypeAssemblies = value;
                        }
-               }*/
+               }
 
                [Output]
                public ITaskItem[] OutputResources {
@@ -195,6 +194,11 @@ namespace Microsoft.Build.Tasks {
                                outputResources = value;
                        }
                }
+               
+               public bool PublicClass {
+                       get { return publicClass; }
+                       set { publicClass = value; }
+               }
 
                public ITaskItem[] References {
                        get {
@@ -224,6 +228,7 @@ namespace Microsoft.Build.Tasks {
                        }
                }
 
+               [Output]
                public string StronglyTypedClassName {
                        get {
                                return stronglyTypedClassName;
@@ -233,7 +238,8 @@ namespace Microsoft.Build.Tasks {
                        }
                }
 
-               public string StronglyTypedFilename {
+               [Output]
+               public string StronglyTypedFileName {
                        get {
                                return stronglyTypedFilename;
                        }
@@ -271,4 +277,4 @@ namespace Microsoft.Build.Tasks {
        }
 }
 
-#endif
\ No newline at end of file
+#endif