Re: Problems with SgType::baseType()

>Well, I hope the explanation is sufficiently clear. Am I doing  

Not really wrong, but...
You are missing one important "bit" of information. An SgPointerType  
object has so-called indirection level. (Should be accessible via  
SgPointerType::indirection() method) Indirection levels of -1 and 1  
in a type chain "cancel" each other. In your example you have (you  
may want to look at the output of dumpdep to verify that):
T_POINTER(ind_level 1) -> T_POINTER(ind_level -1) ->  
T_POINTER(ind_level 1), so the net result should be one "*".
You would need to rewrite EntTypeName function to account for the  
indirection level. Or you might, instead, try using the getTrueType  
method; it figures out this "cancellation" of indirection levels for  
you (see documentation in libSage++.C).
PS: Did the fix for following typedefs in getTrueType work for you?