Author: ankit
Date: 2006-12-26 10:18:12 -0500 (Tue, 26 Dec 2006)
New Revision: 70081

Modified:
   trunk/monodevelop/Extras/prj2make-sharp-lib/ChangeLog
   trunk/monodevelop/Extras/prj2make-sharp-lib/SlnFileFormat.cs
Log:
* SlnFileFormat.cs (LoadProjectConfigurationMappings): Update to
changes.
(FindCombineConfigurationEntry): Replace with ...
(GetConfigEntryForProject): ... this. Create the entries if not found.
(GetConfigEntry): New.


Modified: trunk/monodevelop/Extras/prj2make-sharp-lib/ChangeLog
===================================================================
--- trunk/monodevelop/Extras/prj2make-sharp-lib/ChangeLog       2006-12-26 
14:54:40 UTC (rev 70080)
+++ trunk/monodevelop/Extras/prj2make-sharp-lib/ChangeLog       2006-12-26 
15:18:12 UTC (rev 70081)
@@ -1,3 +1,11 @@
+2006-12-26  Ankit Jain  <[EMAIL PROTECTED]>
+
+       * SlnFileFormat.cs (LoadProjectConfigurationMappings): Update to
+       changes.
+       (FindCombineConfigurationEntry): Replace with ...
+       (GetConfigEntryForProject): ... this. Create the entries if not found.
+       (GetConfigEntry): New.
+
 2006-12-22  Ankit Jain  <[EMAIL PROTECTED]>
 
        * MSBuildSolution.cs:

Modified: trunk/monodevelop/Extras/prj2make-sharp-lib/SlnFileFormat.cs
===================================================================
--- trunk/monodevelop/Extras/prj2make-sharp-lib/SlnFileFormat.cs        
2006-12-26 14:54:40 UTC (rev 70080)
+++ trunk/monodevelop/Extras/prj2make-sharp-lib/SlnFileFormat.cs        
2006-12-26 15:18:12 UTC (rev 70081)
@@ -697,15 +697,7 @@
                                if (cache.ContainsKey (key)) {
                                        combineConfigEntry = cache [key];
                                } else {
-                                       combineConfigEntry = 
FindCombineConfigurationEntry (sln, slnConfig, project.Name);
-                                       if (combineConfigEntry == null) {
-                                               Console.WriteLine (
-                                                       "{0} ({1}) : Warning: 
No config entry found corresponding to solution config named '{2}'" +
-                                                       "and project named 
'{3}'.",
-                                                       sln.FileName, lineNum + 
1, slnConfig, project.Name);
-                                               continue;
-                                       }
-
+                                       combineConfigEntry = 
GetConfigEntryForProject (sln, slnConfig, project);
                                        cache [key] = combineConfigEntry;
                                }
 
@@ -735,28 +727,44 @@
 
                /* Finds a CombineConfigurationEntry corresponding to the 
@configName for a project (@projectName) 
                 * in @combine */
-               CombineConfigurationEntry FindCombineConfigurationEntry 
(Combine combine, string configName, string projectName)
+               CombineConfigurationEntry GetConfigEntryForProject (Combine 
combine, string configName, Project project)
                {
-                       CombineConfiguration cc = combine.GetConfiguration 
(configName) as CombineConfiguration;
-                       if (cc == null)
-                               return null;
+                       if (project.ParentCombine == null)
+                               throw new Exception (String.Format (
+                                       "INTERNAL ERROR: project {0} is not 
part of any combine", project.Name));
 
-                       foreach (CombineConfigurationEntry cce in cc.Entries) {
-                               Combine c = cce.Entry as Combine;
-                               if (c != null) {
-                                       CombineConfigurationEntry r = 
FindCombineConfigurationEntry (c, configName, projectName);
-                                       if (r != null)
-                                               return r;
+                       CombineConfigurationEntry ret = GetConfigEntry 
(project, configName);
 
-                                       continue;
-                               }
+                       //Ensure the corresponding entries exist all the way
+                       //upto the RootCombine
+                       Combine parent = project.ParentCombine;
+                       while (parent.ParentCombine != null) {
+                               CombineConfigurationEntry p = GetConfigEntry 
(parent, configName);
+                               if (p.ConfigurationName != configName)
+                                       p.ConfigurationName = configName;
+                               parent = parent.ParentCombine;
+                       }
 
-                               //Project
-                               if (cce.Entry.Name == projectName)
+                       return ret;
+               }
+
+               /* Gets the CombineConfigurationEntry corresponding to the 
@entry in its parentCombine's 
+                * CombineConfiguration. Creates the required bits if not 
present */
+               CombineConfigurationEntry GetConfigEntry (CombineEntry entry, 
string configName)
+               {
+                       Combine parent = entry.ParentCombine;
+                       CombineConfiguration combineConfig = 
parent.GetConfiguration (configName) as CombineConfiguration;
+                       if (combineConfig == null) {
+                               combineConfig = (CombineConfiguration) 
parent.CreateConfiguration (configName);
+                               parent.Configurations.Add (combineConfig);
+                       }
+
+                       foreach (CombineConfigurationEntry cce in 
combineConfig.Entries) {
+                               if (cce.Entry == entry)
                                        return cce;
                        }
 
-                       return null;
+                       return combineConfig.AddEntry (entry);
                }
 
                void LoadSolutionConfigurations (Section sec, List<string> 
lines, Combine combine, IProgressMonitor monitor)

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

Reply via email to