[Mobies-commit] [commit] r3614 - UDM/trunk/src/Udm

ksmyth at redhat1.isis.vanderbilt.edu ksmyth at redhat1.isis.vanderbilt.edu
Tue Jan 25 17:03:54 CST 2011


Author: ksmyth
Date: Tue Jan 25 17:03:54 2011
New Revision: 3614

Log:
Fix Udm-72: need to look down the class hierarchy, as a more derived class may be contained in a different container

Modified:
   UDM/trunk/src/Udm/ClassGen.cpp

Modified: UDM/trunk/src/Udm/ClassGen.cpp
==============================================================================
--- UDM/trunk/src/Udm/ClassGen.cpp	Mon Jan 24 15:24:02 2011	(r3613)
+++ UDM/trunk/src/Udm/ClassGen.cpp	Tue Jan 25 17:03:54 2011	(r3614)
@@ -867,7 +867,20 @@
 	
 	if(!parent_defined) 
 	{
-		set< ::Uml::Class> ans = Uml::CommonAncestorClasses(Uml::AncestorContainerClasses(c));
+		// see also UDM-72
+		set< ::Uml::Class> ancestors = Uml::AncestorClasses(c);
+		set< ::Uml::Class> descendants = Uml::DescendantClasses(c);
+		set< ::Uml::Class> ancestorsAndDescendants = ancestors;
+		ancestorsAndDescendants.insert(descendants.begin(), descendants.end());
+		set< ::Uml::Class> containers;
+		for (set< ::Uml::Class>::iterator classIt = ancestorsAndDescendants.begin(); 
+			classIt != ancestorsAndDescendants.end(); classIt++)
+		{
+			set< ::Uml::Class> containerClasses = Uml::ContainerClasses(*classIt);
+			containers.insert(containerClasses.begin(), containerClasses.end());
+		}
+
+		set< ::Uml::Class> ans = Uml::CommonAncestorClasses(containers);
 		if (ans.size() == 1)
 		{
 			::Uml::Class ans_class = (::Uml::Class)(*ans.begin());


More information about the Mobies-commit mailing list