Re: [Doxygen-users] Re: templates and association diagrams
Brought to you by:
dimitri
From: Dimitri v. H. <di...@st...> - 2004-08-05 09:29:34
|
On Wed, Aug 04, 2004 at 02:16:18PM +0000, James Ahlborn wrote: > > Onorio Catenacci <Onorio.Catenacci <at> Compuware.Com> writes: > > > > I've been a little hesitant to join this discussion because this is just > > pure speculation on my part. However, with that proviso in mind, I > > think you're going to be disappointed on this issue. I think in order > > to get the functionality you're looking for (on a generic basis as > > opposed to the special case that the sed pattern covers) Doxygen would > > have to have compiler-like abilities. Dmitri has said on more than one > > occasion that Doxygen is not a compiler. > > Well, i agree with you insofar as doxygen should not be a compiler. however, if > you look in the general documentation that doxygen generates, this already > works! template instances are linked separately to the actual template and the > template types. so, for methods that use shared_ptr<bar>, the "shared_ptr" text > is linked to the shared_ptr documentation, and the "Bar" text is linked to the > Bar documenation. doxygen *already* has the appropriate knowledge, it's more a > matter of applying it to the diagrams. i don't know how complicated the diagram > generation is, so i don't know how easy this would be... If doxygen sees a (dummy) class definition of shared_ptr that looks like this: template<class T> class shared_ptr { T *ptr; }; it will show the relation Foo -> shared_ptr<Bar> -> Bar in the collaboration diagram for the following already: class Bar { }; class Foo { shared_ptr<Bar> m_bar; }; It think it is good that a user looking at the diagram sees that shared_ptr is used (instead of direct relation between Foo and Bar) as the shared_ptr has a special meaning and can never be a real pointer in C++. Regards, Dimitri P.S. I fixed a number of problems with the template relations in combination with typedefs and namespaces in the latest CVS release, so you might want to try that. |