[Uml-devel] Problem with C++ parsing, typedef and namespace

Yan Morin yansanmo at iquebec.com
Sun Feb 19 12:10:07 UTC 2006

Hi, I try to import sflphone .h files inside Umbrello. The src/ 
directory. When I import managerimpl.h two times it crash when he try to 
add a class with a new name and refuse (click on no in the popup).

Source code:

Since, the project is quite big, I've tried to reproduce the bug  with a 
smaller file, without success.

But, I've found that there is a lot of strange thing that happens with 
the typedef, namespace and friend keyword.

By example, take this file:

#include <map>

typedef unsigned int uint;

namespace NS_TEST {
   class TestItem;
   typedef std::map<std::string, TestItem> TestItemMap;
   typedef std::map<std::string, TestItemMap*> TestPtrMap;

   class TestIterator
     TestItemMap::iterator _iterItem;
     TestPtrMap::iterator _iterPtr;
   class TestItem {
     void myFunction(uint);
     friend class TestIterator;

1. It puts "uint" as a class, even if the "unsigned int" is already a 
2. It puts TestItemMap and TestPtrMap as a datatype inside the namespace 
and a class outside the namespace.
3. It create two "std" namespace.
4. When you re-import the file, it add a new TestIterator.

Something that could be good with typedef is to check the source type 
and assign the same type of class/datatype to it.

If we have:
typedef int myInt;   // myInt should be a Datatype since "int" is known 
as a datatype.
typedef std::map<int> myMap;  // myMap should have the 'map' type (so 
it's a UML class)

Yan Morin

More information about the umbrello-devel mailing list