[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