diff -r bdd2944b914b -r a0eee409ff14 apicompatanamdw/compatanalysercmd/headeranalyser/src/XMLUtils.cpp --- a/apicompatanamdw/compatanalysercmd/headeranalyser/src/XMLUtils.cpp Mon Sep 20 10:04:46 2010 +0100 +++ b/apicompatanamdw/compatanalysercmd/headeranalyser/src/XMLUtils.cpp Mon Sep 27 14:51:17 2010 +0530 @@ -1390,8 +1390,9 @@ bool ret1=newbaseline.FindNodeById(baselineid); bool ret2=newcurrent.FindNodeById(currentid); assert(ret1 && ret2); - string baselinetype = GetTypeName(newbaseline); - string currenttype = GetTypeName(newcurrent); + + string baselinetype = GetActualTypeName(newbaseline); + string currenttype = GetActualTypeName(newcurrent); // Test if either of the types is incomplete. // If either one is incomplete, the size and alignment @@ -2455,3 +2456,34 @@ #endif return name; } + +const XMLCh* GetActualTypeValue(const HANodeIterator& node) +{ + const XMLCh* retVal = 0; + if (Equals(node->getNodeName(),KXMLTypedefString)) + { + HANodeIterator typeMethod(node); + bool ret = typeMethod.FindNodeById(node.GetAttribute(KXMLTypeString)); + return GetActualTypeValue(typeMethod); + } + else + retVal = node.GetAttribute(KXMLNameString); + + return retVal; +} + +string GetActualTypeName(const HANodeIterator& node) +{ + string name; + if (Equals(node->getNodeName(),KXMLTypedefString)) + { + HANodeIterator typeMethod(node); + bool ret = typeMethod.FindNodeById(node.GetAttribute(KXMLTypeString)); + return GetActualTypeName(typeMethod); + } + else + name = GetTypeName(node); + + + return name; +} \ No newline at end of file