doxygen-users Mailing List for Doxygen (Page 554)
Brought to you by:
dimitri
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(118) |
Jun
(150) |
Jul
(115) |
Aug
(75) |
Sep
(92) |
Oct
(102) |
Nov
(139) |
Dec
(87) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(131) |
Feb
(60) |
Mar
(114) |
Apr
(83) |
May
(125) |
Jun
(82) |
Jul
(95) |
Aug
(98) |
Sep
(109) |
Oct
(97) |
Nov
(72) |
Dec
(70) |
2003 |
Jan
(117) |
Feb
(122) |
Mar
(187) |
Apr
(114) |
May
(154) |
Jun
(131) |
Jul
(130) |
Aug
(98) |
Sep
(121) |
Oct
(107) |
Nov
(80) |
Dec
(54) |
2004 |
Jan
(78) |
Feb
(71) |
Mar
(118) |
Apr
(56) |
May
(56) |
Jun
(64) |
Jul
(164) |
Aug
(104) |
Sep
(101) |
Oct
(69) |
Nov
(107) |
Dec
(98) |
2005 |
Jan
(75) |
Feb
(77) |
Mar
(107) |
Apr
(114) |
May
(142) |
Jun
(106) |
Jul
(79) |
Aug
(108) |
Sep
(115) |
Oct
(140) |
Nov
(128) |
Dec
(63) |
2006 |
Jan
(86) |
Feb
(71) |
Mar
(125) |
Apr
(55) |
May
(48) |
Jun
(143) |
Jul
(99) |
Aug
(91) |
Sep
(93) |
Oct
(82) |
Nov
(46) |
Dec
(45) |
2007 |
Jan
(69) |
Feb
(97) |
Mar
(125) |
Apr
(112) |
May
(65) |
Jun
(80) |
Jul
(82) |
Aug
(84) |
Sep
(56) |
Oct
(74) |
Nov
(63) |
Dec
(74) |
2008 |
Jan
(161) |
Feb
(115) |
Mar
(58) |
Apr
(73) |
May
(58) |
Jun
(79) |
Jul
(57) |
Aug
(115) |
Sep
(79) |
Oct
(62) |
Nov
(93) |
Dec
(37) |
2009 |
Jan
(69) |
Feb
(115) |
Mar
(77) |
Apr
(85) |
May
(124) |
Jun
(58) |
Jul
(44) |
Aug
(85) |
Sep
(90) |
Oct
(80) |
Nov
(87) |
Dec
(48) |
2010 |
Jan
(52) |
Feb
(71) |
Mar
(54) |
Apr
(37) |
May
(66) |
Jun
(86) |
Jul
(84) |
Aug
(68) |
Sep
(94) |
Oct
(66) |
Nov
(36) |
Dec
(53) |
2011 |
Jan
(59) |
Feb
(77) |
Mar
(59) |
Apr
(67) |
May
(76) |
Jun
(54) |
Jul
(95) |
Aug
(92) |
Sep
(84) |
Oct
(72) |
Nov
(46) |
Dec
(60) |
2012 |
Jan
(43) |
Feb
(77) |
Mar
(88) |
Apr
(121) |
May
(81) |
Jun
(69) |
Jul
(97) |
Aug
(64) |
Sep
(55) |
Oct
(55) |
Nov
(38) |
Dec
(60) |
2013 |
Jan
(85) |
Feb
(70) |
Mar
(81) |
Apr
(83) |
May
(51) |
Jun
(65) |
Jul
(71) |
Aug
(39) |
Sep
(47) |
Oct
(32) |
Nov
(43) |
Dec
(28) |
2014 |
Jan
(64) |
Feb
(22) |
Mar
(54) |
Apr
(20) |
May
(59) |
Jun
(20) |
Jul
(50) |
Aug
(17) |
Sep
(37) |
Oct
(56) |
Nov
(40) |
Dec
(24) |
2015 |
Jan
(51) |
Feb
(29) |
Mar
(57) |
Apr
(31) |
May
(23) |
Jun
(50) |
Jul
(30) |
Aug
(66) |
Sep
(59) |
Oct
(21) |
Nov
(29) |
Dec
(12) |
2016 |
Jan
(33) |
Feb
(30) |
Mar
(19) |
Apr
(23) |
May
(16) |
Jun
(31) |
Jul
(17) |
Aug
(19) |
Sep
(21) |
Oct
(20) |
Nov
(15) |
Dec
(6) |
2017 |
Jan
(16) |
Feb
(13) |
Mar
(16) |
Apr
(23) |
May
(16) |
Jun
(5) |
Jul
(14) |
Aug
(13) |
Sep
(12) |
Oct
(11) |
Nov
(3) |
Dec
(6) |
2018 |
Jan
(4) |
Feb
(6) |
Mar
(5) |
Apr
(11) |
May
(26) |
Jun
(5) |
Jul
(10) |
Aug
(7) |
Sep
(3) |
Oct
|
Nov
(3) |
Dec
(7) |
2019 |
Jan
(17) |
Feb
(18) |
Mar
(5) |
Apr
(6) |
May
(3) |
Jun
|
Jul
(9) |
Aug
(19) |
Sep
(3) |
Oct
(1) |
Nov
(23) |
Dec
(5) |
2020 |
Jan
(7) |
Feb
(1) |
Mar
(7) |
Apr
(11) |
May
(8) |
Jun
(7) |
Jul
(10) |
Aug
(3) |
Sep
(4) |
Oct
(7) |
Nov
(6) |
Dec
|
2021 |
Jan
(3) |
Feb
|
Mar
(4) |
Apr
(4) |
May
|
Jun
|
Jul
(1) |
Aug
(3) |
Sep
|
Oct
|
Nov
(8) |
Dec
(3) |
2022 |
Jan
(2) |
Feb
|
Mar
(1) |
Apr
|
May
(3) |
Jun
(1) |
Jul
|
Aug
(3) |
Sep
(9) |
Oct
(2) |
Nov
|
Dec
(2) |
2023 |
Jan
(2) |
Feb
(5) |
Mar
(3) |
Apr
(7) |
May
(6) |
Jun
(2) |
Jul
(5) |
Aug
|
Sep
(4) |
Oct
(1) |
Nov
(5) |
Dec
(5) |
2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
(4) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
From: Luigi B. <lui...@ri...> - 2001-09-17 15:32:05
|
Hi all (and especially Dimitri), I found a few small glitches in the generation of cross-links between brief and detailed docs in derived classes. The comments in the attached file should tell the whole story. The strange behavior is triggered by generating a fresh Doxyfile and setting INPUT = test.cpp REPEAT_BRIEF = NO Thanks, Luigi |
From: Kris T. <kri...@ic...> - 2001-09-14 15:07:39
|
This is fun indeed. Maybe not practical, but ok... > DEFINITION: > Class A is CONTAINED in class B if and only if class B has > an instance (not pointer or reference) member variable to class A. > fine for me > DEFINITION: > Class A is USED-BY class B if and only if in some member > functions of class B invokes a member function of class A. > > (I say member function, because we make all our member variables > private, right?) > fine for me as well. Except that I would include member variables in the definition. That way, you wouldn't have to add anything specific for friends below (if it's a friend, but doesn't use any of its members, there wasn't a point in having it a friend anyway). Here's one practical problem for doxygen: to decide on this, it would have to parse the actual C++ code, and in particular the implementations of the member functions. I don't think doxygen does this, and I don't think it would be easy. Sounds much more like real compilation to me. In particular, for nearly all purposes, you can get away with doxygening only the .h files (except of you put doxygen comments in .cxx). > struct A { void Foo(void){} }; > > CASE I (Instance) > 1) class B { A a; void Bar(void) {a.Foo();} }; > 2) class B { A a[10]; void Bar(void) {a[0].Foo();} }; // ?? > 3) class B { void Bar(A a) {a.Foo();} }; > CASE II (Pointer) > 1) class B { A *a; void Bar(void) {a->Foo();} }; > 2) class B { void Bar(A *a) {a->Foo();} }; > CASE III (Reference) > 1) class B { A &a; void Bar(void) {a.Foo();} }; > 2) class B { void Bar(A &a) {a.Foo();} }; > > We need to be careful in handling cases II and III, because > B does not necessarily invoke any public member function of A... > However, in reality, Doxygen simply concludes that class A is USED-BY > Class B in cases II.1 and III.1 It does not consider II.2 or III.2 > Perhaps it should? > I.2 seems an obvious candidate as well > > DEFINITION: > Class A is DIRECTLY-RELATED to class B if and only if class > A is CONTAINED in class B, or class A is USED-BY class B, or class > B is a FRIEND to class A. > fine for me. > CASE IV (Template) tough and so on. But I'm afraid that if you don't handle it, a lot of my code will not see any benefit if all this. > > "Is the result of a solution of the problem worth of the > > complexity of the solution?" > > Probably not... Oh well, life is full of tradeoff's. :) > if you ask me, it means that 'collaboration diagrams' are very diffiuclt to make sensible. In such a case, it is better to disable them in my opinion. Incomplete doc is more confusing than no doc. In any case, I can get so graphs in my doc from doxygen nowadays that it all looks stunning enough already! > It has been fun typing this message. Thank you for > your time if you made it this far. you're welcome. Kris Thielemans Imaging Research Solutions Ltd Cyclotron Building Hammersmith Hospital Du Cane Road London W12 ONN, United Kingdom web site address: http://www.irsl.org/~kris |
From: Wagner, V. <VW...@se...> - 2001-09-14 14:57:46
|
Sorry, I forget to hit 'reply all' -----Original Message----- From: Wagner, Victor Sent: Thursday, 2001 September 13 15:46 To: 'Dimitri van Heesch' Subject: RE: [Doxygen-users] Class collaboration IMO, it is far more important to know that std::vector<Widget*> gorph; is about Widget*s than std::vector.... mayhaps when you show the 'name' of the var involved with the collaboration, you could show it simply by showing the entire definition instead of just the name...or drop out the Class name for consistency with my proposal in the 'nit' paragraph. std::vector<*> gorph and place it next to the 'arrow' pointing to Widget NIT BTW, minor nit (and not big enough to comment on until I'm commenting on something closely related) when we have the arrows in the collaboration graph, there is NO distinction between member objects, member pointers to objects or member references to objects (might be nice).... syntax for pointer and reference are easy (* and & respectively adjacent to the name) I'm immensely pleased with Doxygen, keep up the good work. -----Original Message----- From: Dimitri van Heesch [mailto:di...@st...] Sent: Thursday, 2001 September 13 14:52 To: dox...@li... Subject: Re: [Doxygen-users] Class collaboration On Thu, Sep 13, 2001 at 12:51:43PM -0300, Anthony Yuen wrote: > > Hi, I found another "problem" that "bugs" me (pun intended!). > In the class collaboration diagram that is generated, I think something > is not quite right. Let me give an example: > > class A { /* some methods */ }; > > class B { std::vector<A *> vec; }; > > I'm just using the std::vector as an example. It can be any > kind of (STL) container. Even though this strongly suggests that > class B somehow uses class A for "something" (in my case, B *does* > make use of A, which is why B stores a vector of pointers to A), > Doxygen does not conclude that there is collaboration between A and B. > This can be extended to include the use of smart pointers stored > in a container. > > I'm interested to know if this is the intended behaviour. If > so, what is the reason behind? If not, maybe this is a bug? Currently this is intended behaviour, but I would like to hear what other people think about this. Should template arguments, such as in the example above, be visualised in collaboration diagrams? and if so, how? Does UML cover these kind of relations? Regards, Dimitri _______________________________________________ Doxygen-users mailing list Dox...@li... https://lists.sourceforge.net/lists/listinfo/doxygen-users This transmission may contain information that is privileged, confidential and exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you |
From: Anthony Y. <an...@ac...> - 2001-09-14 14:33:20
|
I'm a rather lazy person and that's the whole reason I'm using a tool such as Doxygen to automatically generate some nice reference manuals from my messy source code. :) But I agree that it would be nice to have the option when you REALLY need it! But most of the time, I would avoid doing anything "manually" when writing "manuals". :) Happy Doxygening! I'm quite impressed by the quality of the generated materials by Doxygen. I'm a happy users (with some minor complaints/whines/rants). :) -----Original Message----- From: dox...@li... [mailto:dox...@li...] On Behalf Of Prikryl,Petr Sent: Friday, 14 September, 2001 09:32 To: dox...@li... Subject: RE: [Doxygen-users] Class collaboration Hi Kris, I agree that adding some extra command to manually mark the relation between the classes would be fine. Majority probably do not need some general solution of that kind. Those who need to capture the relationship of that special kind would probably agree to insert it manually. I cannot argue here. I belong to the majority ;-) Petr -- |
From: Anthony Y. <an...@ac...> - 2001-09-14 14:26:09
|
Let me take the discussion a little further since I started it... A fair warning, it is a bit long... [snip] > "Should only direct relations be considered in the > collaboration diagram?" My answer to this question is YES. But it would be helpful to define exactly what "direct relation" is. I'll quote from the "graph legend": "A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible." So, in fact, keep in mind that Doxygen already considers (plain) pointers to another class as a collaboration. This means the "level of indirect relation" is 2 (see below). Then why does Doxygen put a "purple dashed arrow" if there is a "pointed class" inside another class? Let's examine a possible reason for that. It is clear what "a class is contained" means. It means that: if class B has an instance member variable to class A, then we say "class A is contained in B". Should a pointer to class A count as "contained in" too? No, I don't think so. Even if sizeof(A) changes, sizeof(B) doesn't, because B only contains a pointer (or reference). This is a proof that class A is *not* contained in class B. DEFINITION: Class A is CONTAINED in class B if and only if class B has an instance (not pointer or reference) member variable to class A. This leaves us the second way to get a "purple dashed arrow", which is when class A is "used" by class B. But what is "used"? How do you define "used"? Here is a reasonable definition: DEFINITION: Class A is USED-BY class B if and only if in some member functions of class B invokes a member function of class A. (I say member function, because we make all our member variables private, right?) Obviously, this includes (public, protected, private) inheritance relationships, since a derived class, at the minimum, must invoke the base class constructor(s) and destructor. Doxygen handles these separately. Exploring further, we see that if class B invokes a public member function of class A, then class A is USED-BY class B. How is this possible? There are 3 ways in C++: instance, pointer, reference. struct A { void Foo(void){} }; CASE I (Instance) 1) class B { A a; void Bar(void) {a.Foo();} }; 2) class B { A a[10]; void Bar(void) {a[0].Foo();} }; // ?? 3) class B { void Bar(A a) {a.Foo();} }; CASE II (Pointer) 1) class B { A *a; void Bar(void) {a->Foo();} }; 2) class B { void Bar(A *a) {a->Foo();} }; CASE III (Reference) 1) class B { A &a; void Bar(void) {a.Foo();} }; 2) class B { void Bar(A &a) {a.Foo();} }; We need to be careful in handling cases II and III, because B does not necessarily invoke any public member function of A... However, in reality, Doxygen simply concludes that class A is USED-BY Class B in cases II.1 and III.1 It does not consider II.2 or III.2 Perhaps it should? Should a friend class be considered a collaboration? Sure. Otherwise, the two classes shouldn't be friends in the first place. The reason you made class B a FRIEND to class A is so that B can invoke protected or private member functions of A... Doxygen does not handle this case either. In conclusion, what is a "direct relation"? DEFINITION: Class A is DIRECTLY-RELATED to class B if and only if class A is CONTAINED in class B, or class A is USED-BY class B, or class B is a FRIEND to class A. The above is my humble opinion on what a "direct relation" is. It is by no means exhaustive or scientifically rigorous. >If the answer is no, then main() (for example) is a >function that is indirectly related to almost everything >in the program -- except the part hidden in >implementation parts (.c, .cpp). If I use here some >object of the class that hides inside the whole >functionality of the application, then the collaboration graph >of that class would be very complex and it would contain almost >every class of the application. (Well, this is rather. >simplified, but I hope you understand the point.) Yes, I see a problem here, if the "level of indirect Relation" is allowed to be "infinity". >If the above were accepted, then the only reasonable >solution would be to define the maximum level of indirect >relations. Say, 1 (one) is the level when we think only >about direct relations. Agreed, if you consider my definition of a direct relation. >Now, std::vector<A> is a vector of instances of class A. >The mentioned example of std::vector<A *> is vector of >pointers to such instances. Even when you know how >std::vector<whatever> may look like inside---from the abstract >point of view---you should agree that the "whatever" is hidden >inside something lager. If "vec" is the object of that class, then >"whatever" is somehow hidden inside. So, I would mark >the level of collaboration between B and "whatever" using >at least value 2. Moreover, if the "whatever" is a >pointer to "something-else", I would mark the level of >collaboration between B and "something-else" using at >least the value 3. I agree that "whatever" is hidden. But if class B invokes a public member function of class A, through the vector or some other kind of container, then class A is USED-BY class B. Another way of "justifying" a collaboration between A and B is that, std::vector<A> (or std::vector<A *>) is a type that depends on A. So A is USED-BY B to create a new type. Hence, we have a CASE IV: CASE IV (Template) 1) template <typename T> class B {}; B<A> b; 2) class B { template <typename T> void Bar(void){} }; B b; b.Bar<A>(); 3) class B { some_template<A> t_a; }; Of course, there are many variations on this theme, but I hope you get the idea. This CASE IV is what complicates things by many orders of magnitudes. And I wouldn't want to be the person to try to solve it. :) >Even more serious problem is that the argument of any >template is used textually inside the body of the >template. This also means that you do not exactly know >how it is used. We know how it is used -- to create a new type using the template! > To conclude, I guess that generally it would be very >difficult to build the collaboration diagram correctly if >the template arguments should be followed. Agreed. May be this is an NP-Hard problem. :) >On the other hand, the life is not only that much >scientific. It could probably be useful to include some >internal knowledge about standard containers into doxygen. >But then, you have to know whether "vector<something>" >means _some_ vector or std::vector<>, etc. In other words, >the parser would be probably more complicated. Agreed, so I "forgive" Doxygen for not handling the CASE IV. But, still, what about CASE II.2 and III.2? >So, the final question is: > > "Is the result of a solution of the problem worth of the > complexity of the solution?" Probably not... Oh well, life is full of tradeoff's. :) It has been fun typing this message. Thank you for your time if you made it this far. |
From: Prikryl,Petr <PRI...@sk...> - 2001-09-14 12:35:05
|
Hi Kris, I agree that adding some extra command to manually mark the relation between the classes would be fine. Majority probably do not need some general solution of that kind. Those who need to capture the relationship of that special kind would probably agree to insert it manually. I cannot argue here. I belong to the majority ;-) Petr -- Petr Prikryl, SKIL, spol. s r.o., pri...@sk... > -----Original Message----- > From: Kris Thielemans [SMTP:kri...@ic...] > Sent: Friday, September 14, 2001 12:26 PM > To: dox...@li... > Subject: RE: [Doxygen-users] Class collaboration > > Dear Petr, > > I agree with you. It seems impossible to do this without knowing what > std::vector is. One could argue this is easy to do, but what about by own > class Array. Can doxygen know it's also a container class? Too hard. > > > > > [...] In the class collaboration diagram that is generated, > > > > I think something is not quite right. Let me give an example: > > > > > > > > class A { /* some methods */ }; > > > > class B { std::vector<A *> vec; }; > > > > "Is the result of a solution of the problem worth of the > > complexity of the solution?" > > So, I don't think anyone should try to build this in in the parser. > However, > it might be useful to have an extra doxygen command (one more!) to force a > class to be put in the collaboration diagram. That would solve this > conundrum I guess. [...] |
From: Kris T. <kri...@ic...> - 2001-09-14 10:29:16
|
Dear Petr, I agree with you. It seems impossible to do this without knowing what std::vector is. One could argue this is easy to do, but what about by own class Array. Can doxygen know it's also a container class? Too hard. > > > [...] In the class collaboration diagram that is generated, > > > I think something is not quite right. Let me give an example: > > > > > > class A { /* some methods */ }; > > > class B { std::vector<A *> vec; }; > > > > > "Is the result of a solution of the problem worth of the > complexity of the solution?" > So, I don't think anyone should try to build this in in the parser. However, it might be useful to have an extra doxygen command (one more!) to force a class to be put in the collaboration diagram. That would solve this conundrum I guess. All the best, Kris Thielemans Imaging Research Solutions Ltd Cyclotron Building Hammersmith Hospital Du Cane Road London W12 ONN, United Kingdom web site address: http://www.irsl.org/~kris |
From: Schreib, D. VTC-B. <dir...@vo...> - 2001-09-14 06:38:21
|
> > In the > > class collaboration diagram that is generated, I think something is > > not quite right. Let me give an example: > > > > class A { /* some methods */ }; > > > > class B { std::vector<A *> vec; }; > > > > I'm just using the std::vector as an example. It can > be any kind of > > (STL) container. Even though this strongly suggests that class B > > somehow uses class A for "something" (in my case, B *does* > make use of > > A, which is why B stores a vector of pointers to A), > Doxygen does not > > conclude that there is collaboration between A and B. This can be > > extended to include the use of smart pointers stored in a container. > > > > I'm interested to know if this is the intended > behaviour. If so, > > what is the reason behind? If not, maybe this is a bug? > > Currently this is intended behaviour, but I would like to > hear what other > people think about this. Should template arguments, such as > in the example > above, be visualised in collaboration diagrams? and if so, > how? Does UML cover these kind of relations? Take a look at Together C++ / Control Center. This tool visualizes it as an one-to-many relationship from B to A. (and an aggregation, if you remove the pointer). Dirk --------------------------------------------------------- This Mail has been checked for Viruses Attention: Encrypted mails can NOT be checked! ** Diese Mail wurde auf Viren geprueft Hinweis: Verschluesselte mails koennen NICHT auf Viren geprueft werden! --------------------------------------------------------- |
From: Prikryl,Petr <PRI...@sk...> - 2001-09-14 06:06:53
|
Dimitri wrote: > Anthony Yuen wrote: > > > > [...] In the class collaboration diagram that is generated, > > I think something is not quite right. Let me give an example: > > > > class A { /* some methods */ }; > > class B { std::vector<A *> vec; }; > > > > [...] I'm interested to know if this is the intended behaviour. If > > so, what is the reason behind? If not, maybe this is a bug? > > Currently this is intended behaviour, but I would like > to hear what other people think about this. Should > template arguments, such as in the example above, be > visualised in collaboration diagrams? and if so, how? > [...] Shortly, I think that this behaviour is correct. No so shortly, I feel that it is more philosophic problem than the technical one (I may be wrong). So I would reformulate the question: "Should only direct relations be considered in the collaboration diagram?" If the answer is no, then main() (for example) is a function that is indirectly related to almost everything in the program -- except the part hidden in implementation parts (.c, .cpp). If I use here some object of the class that hides inside the whole functionality of the application, then the collaboration graph of that class would be very complex and it would contain almost every class of the application. (Well, this is rather simplified, but I hope you understand the point.) If the above were accepted, then the only reasonable solution would be to define the maximum level of indirect relations. Say, 1 (one) is the level when we think only about direct relations. Now, std::vector<A> is a vector of instances of class A. The mentioned example of std::vector<A *> is vector of pointers to such instances. Even when you know how std::vector<whatever> may look like inside---from the abstract point of view---you should agree that the "whatever" is hidden inside something lager. If "vec" is the object of that class, then "whatever" is somehow hidden inside. So, I would mark the level of collaboration between B and "whatever" using at least value 2. Moreover, if the "whatever" is a pointer to "something-else", I would mark the level of collaboration between B and "something-else" using at least the value 3. Even more serious problem is that the argument of any template is used textually inside the body of the template. This also means that you do not exactly know how it is used. To conclude, I guess that generally it would be very difficult to build the collaboration diagram correctly if the template arguments should be followed. On the other hand, the life is not only that much scientific. It could probably be useful to include some internal knowledge about standard containers into doxygen. But then, you have to know whether "vector<something>" means _some_ vector or std::vector<>, etc. In other words, the parser would be probably more complicated. So, the final question is: "Is the result of a solution of the problem worth of the complexity of the solution?" With regards, Petr -- Petr Prikryl, SKIL, spol. s r.o., pri...@sk... |
From: Steve W. <ste...@ag...> - 2001-09-14 05:29:36
|
Hi All, Sorry for the overly simple question but having read through the doco I cannot under stand why I get the following error messages: Generating docs for file wdog.c... Generating docs for file wdog.h... c:/data/stevew/doxygen/wdog/wdog.h,135,Warning: Member wdCreate of file wdog.h is not documented. c:/data/stevew/doxygen/wdog/wdog.h,146,Warning: Member wdDelete of file wdog.h is not documented. c:/data/stevew/doxygen/wdog/wdog.h,156,Warning: Member wdStart of file wdog.h is not documented. c:/data/stevew/doxygen/wdog/wdog.h,167,Warning: Member wdStop of file wdog.h isnot documented. Generating docs for file wdog2.c... Generating docs for file wdog2.h... c:/data/stevew/doxygen/wdog/wdog2.h,34,Warning: Member wdShow of file wdog2.h is not documented. The wdog.h file is as follows: /*! \fn int wdCreate(int wd_id) \brief Creates a new instance of a Watch Dog Timer \param wd_id A user designated ID for the Watch Dog Timer to be created */ int wdCreate(int wd_id); /*! \fn int wdDelete(int wd_id) \brief Deletes a Watch Dog Timer \param wd_id The user assigned ID for the Watch Dog Timer */ int wdDelete(int wd_id); etc..... What have I missed, such that I get the warnings above ? Regards, Steve Walker. |
From: Jeff G. <je...@cr...> - 2001-09-13 19:29:00
|
> Currently this is intended behaviour, but I would like to hear what other > people think about this. Should template arguments, such as in the example > above, be visualised in collaboration diagrams? and if so, how? Does UML > cover these kind of relations? The case of std::vector<ValueType> seems reasonable, but std::map<KeyType, ValueType> would be tricky in my mind. I wouldn't think that we would want the KeyType in the collaboration diagram although that class is certainly used. Jeff |
From: Dimitri v. H. <di...@st...> - 2001-09-13 18:52:04
|
On Thu, Sep 13, 2001 at 12:51:43PM -0300, Anthony Yuen wrote: > > Hi, I found another "problem" that "bugs" me (pun intended!). > In the class collaboration diagram that is generated, I think something > is not quite right. Let me give an example: > > class A { /* some methods */ }; > > class B { std::vector<A *> vec; }; > > I'm just using the std::vector as an example. It can be any > kind of (STL) container. Even though this strongly suggests that > class B somehow uses class A for "something" (in my case, B *does* > make use of A, which is why B stores a vector of pointers to A), > Doxygen does not conclude that there is collaboration between A and B. > This can be extended to include the use of smart pointers stored > in a container. > > I'm interested to know if this is the intended behaviour. If > so, what is the reason behind? If not, maybe this is a bug? Currently this is intended behaviour, but I would like to hear what other people think about this. Should template arguments, such as in the example above, be visualised in collaboration diagrams? and if so, how? Does UML cover these kind of relations? Regards, Dimitri |
From: Anthony Y. <an...@ac...> - 2001-09-13 15:50:12
|
Hi, I found another "problem" that "bugs" me (pun intended!). In the class collaboration diagram that is generated, I think something is not quite right. Let me give an example: class A { /* some methods */ }; class B { std::vector<A *> vec; }; I'm just using the std::vector as an example. It can be any kind of (STL) container. Even though this strongly suggests that class B somehow uses class A for "something" (in my case, B *does* make use of A, which is why B stores a vector of pointers to A), Doxygen does not conclude that there is collaboration between A and B. This can be extended to include the use of smart pointers stored in a container. I'm interested to know if this is the intended behaviour. If so, what is the reason behind? If not, maybe this is a bug? Thanks for your time. |
From: Anthony Y. <an...@ac...> - 2001-09-13 13:32:43
|
Thanks for your response. Yes, that's exactly what I'd like to do. I know about the option SORT_MEMBER_DOCS but it only sorts the detailed descriptions, *NOT* the brief descriptions, where the names are separated by different access modifiers. I was wondering if they can be sorted alphabetically as well. Right now, even if the SORT_MEMBER_DOCS is YES, the brief descriptions appear in the order in which the functions are declared in the header, *NOT* sorted... It would be nice to have an option for sorting them. -----Original Message----- From: dox...@li... [mailto:dox...@li...] On Behalf Of Prikryl,Petr Sent: Thursday, 13 September, 2001 03:35 To: Anthony Yuen; dox...@li... Subject: RE: [Doxygen-users] Sorting member functions (bug?) Try "doxygen -g" to generate Doxyfile with comments. Then look for SORT_MEMBER_DOCS. You can find the following: # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES It works for me concerning the detailed descriptions. On the other hand, the list of methods with brief descriptions (in the first part of a documentation page for a class) is not sorted. I guess that it can be a bug. Or is it intentional? Thanks, Petr -- Petr Prikryl, SKIL, spol. s r.o., pri...@sk... |
From: Moshe K. <Kr...@Pa...> - 2001-09-13 11:38:29
|
I cannot seem to make \c and % work together in any combination: that is to render a work in fixed-proportion font and disable the link. Anyone encountered this problem and found a solution? <tt></tt> works for the fixed-proportion font part, but of course it's a shlepp and makes the code more heavy and illegible than it is anyhow. Moshe Kruger Paradigm Geophysical |
From: Raimund K. <rk...@or...> - 2001-09-13 08:24:15
|
Hi Dimitri and all, I havbe found one and, well, I guess a half, bugs with simple member groups. One apparently is related to not using the \name command (that's the half), the other one is a relatively serious LaTeX error. I'll start with the latter, since there seems to be no good workaround for this one. Let's say I have a class Test coded and documented like this: class Test { public : /** Brief group description. * * Second paragraph of group description. * * \name something */ /*@{*/ int a; int b; /*@}*/ }; "a" and "b" are grouped together in the group "something", but the "Public Attributes" part of the generated LaTeX file looks like this: \subsection*{Public Attributes} \begin{CompactItemize} \end{CompactItemize} \begin{Indent}{\bf something}\par {\em Brief group description. Second paragraph of group description.}\begin{CompactItemize} \item int {\bf a} \item int {\bf b} \end{CompactItemize} \end{Indent} This generates a LaTeX error, because the CompactItemize environment in lines 2 and 3 is empty. In general, LaTeX does not allow list environments without a single \item. The other problem arises when I don't include a \name command - this actually is the case in several places of the project I am currently working on: Some members are related to each other and therefore should be grouped together; however, a group name seems superfluous. The result is about the same in HTML and LaTeX output: The group structure appears to get lost as well as the second documentation paragraph. Additionally, the group description is not associated to "a" and "b", but just to "a". E.g., the LaTeX output looks like this: \section{Test Class Reference} \label{classTest}\index{Test@{Test}} {\tt \#include $<$test.h$>$} \subsection*{Public Attributes} \begin{CompactItemize} \end{CompactItemize} {\bf }\par \begin{CompactItemize} \item int {\bf a} \begin{CompactList}\small\item\em Brief group description.\item\end{CompactList}\item int {\bf b} \end{CompactItemize} \subsection{Member Data Documentation} \index{Test@{Test}!a@{a}} \index{a@{a}!Test@{Test}} \subsubsection{\setlength{\rightskip}{0pt plus 5cm}int Test::a}\label{classTest_m0} Brief group description. Definition at line 9 of file test.h.\index{Test@{Test}!b@{b}} \index{b@{b}!Test@{Test}} \subsubsection{\setlength{\rightskip}{0pt plus 5cm}int Test::b}\label{classTest_m1} Definition at line 10 of file test.h. The documentation for this class was generated from the following file:\begin{CompactItemize} \item {\bf test.h}\end{CompactItemize} Just to make sure: I am using the latest CVS checkout. Regards, -- Raimund Klein <kl...@or...> Orthogon GmbH, Hastedter Osterdeich 222, D-28207 Bremen |
From: Prikryl,Petr <PRI...@sk...> - 2001-09-13 06:41:05
|
Try "doxygen -g" to generate Doxyfile with comments. Then look for SORT_MEMBER_DOCS. You can find the following: # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES It works for me concerning the detailed descriptions. On the other hand, the list of methods with brief descriptions (in the first part of a documentation page for a class) is not sorted. I guess that it can be a bug. Or is it intentional? Thanks, Petr -- Petr Prikryl, SKIL, spol. s r.o., pri...@sk... > -----Original Message----- > From: Anthony Yuen [SMTP:an...@ac...] > Sent: Thursday, September 13, 2001 5:38 AM > To: dox...@li... > Subject: [Doxygen-users] Sorting member functions > > > Hi, I just started using Doxygen, please bear with me. I'd like > to have the member functions of my C++ classes to be sorted > alphabetically, > section by section (i.e. public, protected, private are separately > sorted). Is > there such an option in Doxygen? I'm using 1.2.10. Thanks for your help. > > |
From: Anthony Y. <an...@ac...> - 2001-09-13 03:37:24
|
Hi, I just started using Doxygen, please bear with me. I'd like to have the member functions of my C++ classes to be sorted alphabetically, section by section (i.e. public, protected, private are separately sorted). Is there such an option in Doxygen? I'm using 1.2.10. Thanks for your help. |
From: <dr...@ca...> - 2001-09-12 19:34:05
|
Does anyone know why the # command to generate a link doesn't work under \retval? example : #define I_WILL_GET_LINKED 0 #define I_WONT_GET_LINKED 1 /*! #I_WILL_GET_LINKED \param myParam1 the following will be a generated link #I_WILL_GET_LINKED \retval #I_WONT_GET_LINKED an error occured \retval #I_WONT_GET_LINKED This link wont get generated */ Dimitri, could you fix this please? Thx. |
From: Rob D. <rd...@ce...> - 2001-09-12 18:44:58
|
I am having problems with the HTML output generated from the code below. Using doxygen-1.2.10 on WIN2000 the first typedef (allocFunc) comes out ok but the second typedef(freeFunc) is mistakenly documented as a function. If I remove CALLCONV from the typedefs then the output is ok. This is a simplified example where CALLCONV is always __cdecl but in my real project CALLCONV will vary depending on the platform. /** @file file.h */ /** @def CALLCONV __cdecl */ #define CALLCONV __cdecl /** @typedef void* (CALLCONV *allocFunc )( int size, void * const memRef ); Prototype for the callback function which allocates memory. Notes: @param size [Input] Number of bytes to allocate. @param memRef [Input] User reference parameter. @return pointer to allocated memory */ typedef void* (CALLCONV *allocFunc )( int size, void * const memRef ); /** @typedef void* ( CALLCONV *freeFunc )( void *block, void * const memRef ); Prototype for the callback function which frees memory. Notes: @param block [Input/Output] Block to free. @param memRef [Input] User reference parameter. @return nothing */ typedef void (CALLCONV *freeFunc )( void *block, void * const memRef ); /** @struct MemCallbacks * Structure for memory callbacks */ struct MemCallbacks { /** memory allocation callback */ allocFunc malloc; /** memory de-allocation callback */ freeFunc free; /** reference for memory callbacks */ void * memRef; } MemCallbacks; /** @typedef struct MemCallbacks MemCallbacks * Structure for application callbacks */ typedef struct MemCallbacks MemCallbacks; |
From: root <bob...@bo...> - 2001-09-12 15:53:14
|
I tried to post this a few days ago, but did not see it on the mail list. Forgive me if this is a repeat post for everyoe else. My project includes a shell like command line processor with commands in the ususal unix command line format. eg. command -a -bvalue I'd like to document them using doxygen and incorporate them into the rest of my docs. I have two questions. Are there any options available for assisting in documenting such commands something like the following /*! \page command.html command description \command command -a -bvalue \param -a Does whatever -a does \param -bvalue Does whatever -b value does Long Description of command \sa othercommand, yetanothercommand */ Secondly if I want a section to describe all these commands, one command per page, I can create each page with the \page command but then each commands page shows up in the related docs section. I'd prefer only the top level page giving an overview fo the commands and links to the other pages to appear there. Is this possible. Thanks Bob S. ------------------------------------------------------- |
From: Roberto B. <ba...@cs...> - 2001-09-11 10:20:45
|
Luigi Ballabio wrote: > > Hi all (and especially Dimitri), > lately I have been writing a few general sections in my > documentation---"general" meaning an overview of the problem addressed by > the code as opposed to "non general" being the documentation of a single > method/class---and I thought that it would be nice to have a command for > references. > > It could work like: > /*! \page etc. > ... > As pointed out in > \cite (some_label?) > Doe J., "Gnats and Gnus", Journal of This and That 12, 2001 > \endcite > gnats can be nastier than gnus at times. > ... > */ > > This would cause the above block to appear in the documentation as > > As pointed out in [1], gnats can be nastier than gnus at times. > > while a separate page (the list of references) would contain among others > > [1] Doe J., "Gnats and Gnus", Journal of This and That 12, 2001. > > The [1] in the documentation would be a link to the appropriate entry in > the list of references. > > Would it be at least moderately easy to implement? Could it use BibTeX for > LaTeX output? Does anyone like the idea? Suggestions? Rejections? I think that this is a great idea and a feature (BibTeX support included) that I would love to have. All the best, Roberto -- Roberto Bagnara Computer Science Group Department of Mathematics, University of Parma, Italy http://www.cs.unipr.it/~bagnara/ mailto:ba...@cs... |
From: Christian H. <ch...@po...> - 2001-09-11 09:56:48
|
Attached is an updated XML bug fix patch. With these changes, I am now able to generate XML-compliant documentation for both my small test cases and my large applications and libraries. Previously, the tags being generated were not balanced, and thus could not be parsed by any XML parsers. It shouldn't have disturbed any of the other doc generators, but I haven't tested them all with this to be sure. -- Christian Hammond <> The GNUpdate Project ch...@po... <> http://www.gnupdate.org/ |
From: John S. <joh...@se...> - 2001-09-11 08:28:04
|
Hi all, Can anybody enlighten me as to what the \refitem keyword officially does? Can't find a description for it in the doc, though the source for the doc (commands.doc, config.doc) use it extensively. Also, whilst playing around with config.doc, I've noticed that \refitem FOO FOO produces an empty list item. Bug? Cheers, John |
From: Luigi B. <lui...@ri...> - 2001-09-11 07:26:21
|
Hi all (and especially Dimitri), lately I have been writing a few general sections in my documentation---"general" meaning an overview of the problem addressed by the code as opposed to "non general" being the documentation of a single method/class---and I thought that it would be nice to have a command for references. It could work like: /*! \page etc. ... As pointed out in \cite (some_label?) Doe J., "Gnats and Gnus", Journal of This and That 12, 2001 \endcite gnats can be nastier than gnus at times. ... */ This would cause the above block to appear in the documentation as As pointed out in [1], gnats can be nastier than gnus at times. while a separate page (the list of references) would contain among others [1] Doe J., "Gnats and Gnus", Journal of This and That 12, 2001. The [1] in the documentation would be a link to the appropriate entry in the list of references. Would it be at least moderately easy to implement? Could it use BibTeX for LaTeX output? Does anyone like the idea? Suggestions? Rejections? Bye, Luigi |