doxygen-develop Mailing List for Doxygen (Page 35)
Brought to you by:
dimitri
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
(4) |
Jul
(29) |
Aug
(8) |
Sep
(8) |
Oct
(17) |
Nov
(34) |
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(20) |
Feb
(14) |
Mar
(11) |
Apr
(9) |
May
(8) |
Jun
(7) |
Jul
(25) |
Aug
(12) |
Sep
(12) |
Oct
(24) |
Nov
(27) |
Dec
(12) |
2003 |
Jan
(12) |
Feb
(14) |
Mar
(15) |
Apr
(11) |
May
(17) |
Jun
(20) |
Jul
(32) |
Aug
(13) |
Sep
(34) |
Oct
(12) |
Nov
(16) |
Dec
(33) |
2004 |
Jan
(20) |
Feb
(6) |
Mar
(20) |
Apr
(15) |
May
(16) |
Jun
(28) |
Jul
(7) |
Aug
(7) |
Sep
(17) |
Oct
(16) |
Nov
(17) |
Dec
(43) |
2005 |
Jan
(15) |
Feb
(5) |
Mar
(14) |
Apr
(4) |
May
(3) |
Jun
(8) |
Jul
(17) |
Aug
(16) |
Sep
(7) |
Oct
(17) |
Nov
(1) |
Dec
(7) |
2006 |
Jan
(7) |
Feb
(6) |
Mar
(10) |
Apr
(6) |
May
(3) |
Jun
(4) |
Jul
(3) |
Aug
(3) |
Sep
(18) |
Oct
(11) |
Nov
(10) |
Dec
(3) |
2007 |
Jan
(12) |
Feb
(12) |
Mar
(23) |
Apr
(5) |
May
(13) |
Jun
(6) |
Jul
(5) |
Aug
(4) |
Sep
(8) |
Oct
(10) |
Nov
(6) |
Dec
(7) |
2008 |
Jan
(7) |
Feb
(13) |
Mar
(35) |
Apr
(14) |
May
(13) |
Jun
(4) |
Jul
(9) |
Aug
(6) |
Sep
(12) |
Oct
(9) |
Nov
(6) |
Dec
(3) |
2009 |
Jan
(2) |
Feb
(2) |
Mar
(2) |
Apr
(15) |
May
(1) |
Jun
(2) |
Jul
(7) |
Aug
(3) |
Sep
(4) |
Oct
(1) |
Nov
(2) |
Dec
(1) |
2010 |
Jan
(4) |
Feb
|
Mar
(5) |
Apr
(1) |
May
(5) |
Jun
|
Jul
(2) |
Aug
(3) |
Sep
(11) |
Oct
(2) |
Nov
(1) |
Dec
(5) |
2011 |
Jan
(12) |
Feb
(3) |
Mar
(28) |
Apr
(4) |
May
(3) |
Jun
(4) |
Jul
(15) |
Aug
(12) |
Sep
(2) |
Oct
(3) |
Nov
(6) |
Dec
(3) |
2012 |
Jan
(1) |
Feb
(4) |
Mar
(9) |
Apr
(5) |
May
(6) |
Jun
(6) |
Jul
(3) |
Aug
(3) |
Sep
(4) |
Oct
(2) |
Nov
(9) |
Dec
(7) |
2013 |
Jan
(8) |
Feb
(14) |
Mar
(15) |
Apr
(21) |
May
(29) |
Jun
(34) |
Jul
(3) |
Aug
(7) |
Sep
(13) |
Oct
(1) |
Nov
(3) |
Dec
(5) |
2014 |
Jan
|
Feb
|
Mar
|
Apr
(10) |
May
(2) |
Jun
(4) |
Jul
(2) |
Aug
(2) |
Sep
(4) |
Oct
(4) |
Nov
(4) |
Dec
(2) |
2015 |
Jan
(7) |
Feb
(4) |
Mar
(3) |
Apr
(15) |
May
(4) |
Jun
(9) |
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
(3) |
Dec
(7) |
2016 |
Jan
(1) |
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
(1) |
Jul
|
Aug
(5) |
Sep
|
Oct
(1) |
Nov
(1) |
Dec
(1) |
2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(9) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(5) |
2018 |
Jan
|
Feb
(2) |
Mar
(3) |
Apr
|
May
(7) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
(4) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
(1) |
2021 |
Jan
(2) |
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
From: <de...@vt...> - 2006-01-15 03:07:29
|
On Saturday 14 January 2006 20:55, Dave Dodge wrote: > On Sat, Jan 14, 2006 at 08:14:12AM -0500, de...@vt... wrote: > > The following patch allows doxygen to process C code which contains > > GCC attributes. > > Just FYI, a workaround for this is to make attributes conditionally > disappear in the preprocessor. I usually do that anyway since I want > to avoid tying code to gcc: Thanks for the tip, Dave. I much prefer this solution over hacking in support for arbitrary compilers into doxygen. |
From: Dave D. <do...@do...> - 2006-01-15 01:54:39
|
On Sat, Jan 14, 2006 at 08:14:12AM -0500, de...@vt... wrote: > The following patch allows doxygen to process C code which contains GCC > attributes. Just FYI, a workaround for this is to make attributes conditionally disappear in the preprocessor. I usually do that anyway since I want to avoid tying code to gcc: #if defined ( __GNUC__ ) #define FUNC_MALLOC() __attribute__((__malloc__)) #else #define FUNC_MALLOC() #endif extern void * foo(int,int) FUNC_MALLOC(); Doxygen still doesn't like seeing that FUNC_MALLOC() there. That's fixed by telling the Doxygen config to remove it during preprocessing: PREDEFINED = \ "FUNC_MALLOC()=" -Dave Dodge |
From: Kevin M. <ke...@pl...> - 2006-01-14 17:01:41
|
Hello, It's a good thing that you are submitting patches to the developer list, and we appreciate you submitting your patches. However, we prefer all bugs to be filed within the bugzilla, even if you have the patches to fix the bugs. Doing so makes it easier for us to add fixed bugs to the ChangeLogs. :) Thank you, - KJM de...@vt... wrote: > The following patch allows doxygen to process C code which contains > GCC attributes. > http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Attribute-Syntax.html#Attribute-Syntax > > Symptom: Doxygen gets confused when trying to process C code that > contains attributes, it usually throws off the parser causing > everything from the start of the first attribute to the end of the > file to be mis-processed. > > Cause: The scanner doesn't know to look for attributes. > |
From: <de...@vt...> - 2006-01-14 13:14:22
|
The following patch allows doxygen to process C code which contains GCC attributes. http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Attribute-Syntax.html#Attribute-Syntax Symptom: Doxygen gets confused when trying to process C code that contains attributes, it usually throws off the parser causing everything from the start of the first attribute to the end of the file to be mis-processed. Cause: The scanner doesn't know to look for attributes. Index: doxygen-1.4.6/src/scanner.l =================================================================== --- doxygen-1.4.6/src/scanner.l 2005-12-27 13:04:40.000000000 -0500 +++ doxygen-1.4.6-tlw/src/scanner.l 2006-01-14 07:51:22.210391347 -0500 @@ -1195,7 +1195,7 @@ } } <FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct{" | -<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct"/{BN}+ { +<FindMembers>{B}*(("typedef"{BN}+)?) ("volatile"{BN}+)?"struct"({BN}+"__attribute__"{BN}*"((".*"))")?/{BN}+ { isTypedef=((QCString)yytext).find("typedef")!=-1; current->section = Entry::STRUCT_SEC ; addType( current ) ; @@ -1233,6 +1233,8 @@ if (yytext[yyleng-1]=='{') unput('{'); BEGIN( CompoundName ) ; } +<FindMembers>"__attribute__"{BN}+"((".*"))"{BN}+ { + } <Operator>"("{BN}*")"({BN}*"<"[^>]*">"){BN}*/"(" { // A::operator()<int>(int arg) lineCount(); current->name += "()"; @@ -1874,7 +1876,8 @@ <FindMembers,FindFields,ReadInitializer>"//"([!/]?) {B}*{CMD}"}".*|"/*"([!*]?){B}*{CMD}"}".*"*/" { closeGroup(current,yyFileName,yyLineNr); } -<FindMembers>"=" { +<FindMembers>"=" | +<FindMember>({BN}+"__attribute__"{BN}*"((".*"))"{BN}+)?"=" { current->bodyLine = yyLineNr; lastInitializerContext = YY_START; initBracketCount=0; @@ -2202,7 +2205,9 @@ BEGIN( Array ) ; } } -<Array>"]" { current->args += *yytext ; +<Array>"]" | +<Array>"]"({BN}+"__attribute__"{BN}*"((".*"))")? { + current->args += *yytext ; if (--squareCount<=0) BEGIN( FindMembers ) ; } @@ -2211,7 +2216,8 @@ } <Array>. { current->args += *yytext ; } <SkipSquare>"[" { squareCount++; } -<SkipSquare>"]" { +<SkipSquare>"]" | +<SkipSquare>"]"({BN}+"__attribute__"{BN}*"((".*"))")? { if (--squareCount<=0) BEGIN( lastSquareContext ); } @@ -2238,7 +2244,7 @@ <FindFields>{ID} { current->name = yytext; } -<FindFields>"=" { +<FindFields>({BN}*"__attribute__"{BN}*"((".*"))"{BN}*)?"=" { lastInitializerContext = YY_START; initBracketCount=0; BEGIN(ReadInitializer); @@ -2443,7 +2449,7 @@ unput(';'); BEGIN( MemberSpec ) ; } -<MemberSpec>([*&]*{BN}*)*{ID}{BN}*("["[^\]\n]*"]")* { // the [] part could be improved. +<MemberSpec>([*&]*{BN}*)*{ID} {BN}*("["[^\]\n]*"]")*({BN}*"__attribute__"{BN}*"((".*"))")? { // the [] part could be improved. lineCount(); int i=0,l=yyleng,j; while (i<l && (!isId(yytext[i]))) i++; @@ -2574,7 +2580,7 @@ BEGIN( FindMembers ); } } -<MemberSpec>"=" { +<MemberSpec>({BN}*"__attribute__"{BN}*"((".*"))"{BN}*)?"=" { lastInitializerContext=YY_START; initBracketCount=0; BEGIN(ReadInitializer); |
From: Torsten I. <TI...@Ro...> - 2006-01-10 11:54:43
|
Hi there! I'm new to this mailing list, and I don't know if I'm corret here. When I create a doxygen documentation and I reference to a different documentation using a tag file the created link is not correct. Instead of the correct form 'href=3D"file:///c/..."' a link of the form 'href=3D"c:\..."' is created. Using Internet Explorer this is just fine, this browser corrects the link. But Firefox is not so forgiving; when I click on this link I receive an error message that "c is not a registered protocol". I hope someone of you can help me with this problem. Regards, Torsten=20 -------------------------------------------------------------------------= -------------------------------------------------------------------------= =20 Visit ROSEN on the Internet: www.RosenInspection.net |
From: Dimitri v. H. <do...@gm...> - 2006-01-06 11:10:23
|
On 1/5/06, Michal Marek <mm...@su...> wrote: > > Hi, > > we found a bug in doxygen-1.4.6, which causes it to segfault sometimes > (I couldn't create a simple testcase though). In 1.4.6, the following > code was added to doxygen.cpp: > > + if (! // not a php array > + (md->getFileDef() && > getLanguageFromFileName(md->getFileDef()->name())=3D=3DSrcLangExt_PHP) && > + (md->argsString()!=3Droot->args && root->args.find('[')!=3D-= 1) > + ) > + // not a php array variable > + { > ... > > however, this doesn't check the return value of md->getFileDef() (as it > is done on other places). This seems to fix the segfault: > > --- src/doxygen.cpp > +++ src/doxygen.cpp > @@ -1912,7 +1912,7 @@ > // variable already in the scope > { > if (! // not a php array > - > (getLanguageFromFileName(md->getFileDef()->name())=3D=3DSrcLangExt_PHP) &= & > + (md->getFileDef() && > getLanguageFromFileName(md->getFileDef()->name())=3D=3DSrcLangExt_PHP) && > (md->argsString()!=3Droot->args && root->args.find('[')!=3D-= 1) > ) > // not a php array variable > > Michal Marek > SuSE CR This is indeed a bug. It seems to be possible to trigger it when using tag files and namespaces. Your patch will be included in the next CVS update. Regards, Dimitri |
From: Michal M. <mm...@su...> - 2006-01-05 13:33:14
|
Hi, we found a bug in doxygen-1.4.6, which causes it to segfault sometimes (I couldn't create a simple testcase though). In 1.4.6, the following code was added to doxygen.cpp: + if (! // not a php array + (md->getFileDef() && getLanguageFromFileName(md->getFileDef()->name())==SrcLangExt_PHP) && + (md->argsString()!=root->args && root->args.find('[')!=-1) + ) + // not a php array variable + { ... however, this doesn't check the return value of md->getFileDef() (as it is done on other places). This seems to fix the segfault: --- src/doxygen.cpp +++ src/doxygen.cpp @@ -1912,7 +1912,7 @@ // variable already in the scope { if (! // not a php array - (getLanguageFromFileName(md->getFileDef()->name())==SrcLangExt_PHP) && + (md->getFileDef() && getLanguageFromFileName(md->getFileDef()->name())==SrcLangExt_PHP) && (md->argsString()!=root->args && root->args.find('[')!=-1) ) // not a php array variable Michal Marek SuSE CR |
From: Kevin M. <ke...@pl...> - 2005-12-20 05:59:13
|
Dimitri, we need to correct the information regarding the PATCH keyword - GNOME bugzilla doesn't have it anymore! Excerpt from #bugs: epn: bugzilla didn't use to be able to track or search for patches in any special way epn: so, we manually had volunteers try to mark all of them with the PATCH keyword epn: we couldn't ever really keep up epn: then, bugzilla got the abilities to search for it, and we eventually nuked the keyword Dave Dodge wrote: > BTW: On this page: > > http://www.stack.nl/~dimitri/doxygen/trouble.html#bug_reports > > it says "please use PATCH as a keyword in the bug report", but note > that: > > - The Bugzilla "new patch" forms never ask you for keywords, which > was confusing at first. > > - If you view the bug after submitting it, there is a keywords field. > But when I try to put PATCH in there, Bugzilla complains that > "PATCH" is not a valid keyword. I notice that if I get Bugzilla to > list all valid keywords, "PATCH" is not listed, but some of the > keyword descriptions mention it. So I'm guessing that it used to be > a valid keyword but was later deprecated. > > -Dave Dodge > > > ------------------------------------------------------- This SF.net > email is sponsored by: Splunk Inc. Do you grep through log files for > problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD > SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ Doxygen-develop > mailing list Dox...@li... > https://lists.sourceforge.net/lists/listinfo/doxygen-develop > |
From: Dave D. <do...@do...> - 2005-12-20 05:48:00
|
On Mon, Dec 19, 2005 at 08:13:26PM -0500, Kevin McBride wrote: > It's a good thing that you are submitting patches to the developer list, > and we appreciate you submitting your patches. However, we prefer all > bugs to be filed within the bugzilla, even if you have the patches to > fix the bugs. Okay. I've submitted them as bugs 324565, 324566, and 324568. BTW: On this page: http://www.stack.nl/~dimitri/doxygen/trouble.html#bug_reports it says "please use PATCH as a keyword in the bug report", but note that: - The Bugzilla "new patch" forms never ask you for keywords, which was confusing at first. - If you view the bug after submitting it, there is a keywords field. But when I try to put PATCH in there, Bugzilla complains that "PATCH" is not a valid keyword. I notice that if I get Bugzilla to list all valid keywords, "PATCH" is not listed, but some of the keyword descriptions mention it. So I'm guessing that it used to be a valid keyword but was later deprecated. -Dave Dodge |
From: Kevin M. <ke...@pl...> - 2005-12-20 01:09:58
|
Hello Dave. It's a good thing that you are submitting patches to the developer list, and we appreciate you submitting your patches. However, we prefer all bugs to be filed within the bugzilla, even if you have the patches to fix the bugs. Doing so makes it easier for us to add fixed bugs to the ChangeLogs. :) Thank you, - KJM |
From: Dave D. <do...@do...> - 2005-12-19 22:35:11
|
Symptom: Some function prototypes end up being treated as constructor calls. Example: /** \brief something */ typedef struct { int x; } t1; /** \brief something */ typedef int t2; extern t1 foo(t2); // declaration /** \brief something */ t1 foo(t2 x) // definition Doxygen thinks that the declaration is actually a variable being created with a call to a constructor for type t. It ends up putting it in the "Variables" section. This patch adds a check to the arguments being passed to the function that might be a constructor. If any argument consists entirely of a typedef name, it must be a bare type with no parameter name and therefore this must be a function prototype instead of a constructor call. Index: doxygen-1.4.5/src/doxygen.cpp =================================================================== --- doxygen-1.4.5.orig/src/doxygen.cpp 2005-11-11 12:20:37.000000000 -0500 +++ doxygen-1.4.5/src/doxygen.cpp 2005-11-11 12:25:40.000000000 -0500 @@ -1972,6 +1972,13 @@ result=FALSE; // arg type is a known type goto done; } + // If the parameter is just a typedef, then this is a function prototype. + if(checkIfTypedef(ctx,fd,a->type)) + { + //printf("%s:%d: false (arg is typedef)\n",__FILE__,__LINE__); + result=FALSE; // argument is a typedef + goto done; + } // If the argument is a pointer type, then this is a function prototype. if (a->type.find('*',a->type.length()-1)!=-1) { Index: doxygen-1.4.5/src/util.h =================================================================== --- doxygen-1.4.5.orig/src/util.h 2005-11-11 12:06:59.000000000 -0500 +++ doxygen-1.4.5/src/util.h 2005-11-11 12:25:40.000000000 -0500 @@ -153,6 +153,7 @@ QCString *pTemplSpec=0, bool mayBeUnlinkable=FALSE, bool mayBeHidden=FALSE); +bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n); NamespaceDef *getResolvedNamespace(const char *key); FileDef *findFileDef(const FileNameDict *fnDict,const char *n, bool &ambig); Index: doxygen-1.4.5/src/util.cpp =================================================================== --- doxygen-1.4.5.orig/src/util.cpp 2005-11-11 12:15:24.000000000 -0500 +++ doxygen-1.4.5/src/util.cpp 2005-11-11 12:25:40.000000000 -0500 @@ -1310,6 +1310,61 @@ return result; } +/*! Returns true iff the given name string appears to be a typedef in scope. */ +bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n) +{ + if (scope==0 || + (scope->definitionType()!=Definition::TypeClass && + scope->definitionType()!=Definition::TypeNamespace + ) + ) + { + scope=Doxygen::globalScope; + } + + QCString name = n; + if (name.isEmpty()) + return false; // no name was given + + DefinitionList *dl = Doxygen::symbolMap->find(name); + if (dl==0) + return false; // could not find any matching symbols + + // mostly copied from getResolvedClassRec() + QCString explicitScopePart; + int qualifierIndex = computeQualifiedIndex(name); + if (qualifierIndex!=-1) + { + explicitScopePart = name.left(qualifierIndex); + replaceNamespaceAliases(explicitScopePart,explicitScopePart.length()); + name = name.mid(qualifierIndex+2); + } + + // find the closest closest matching definition + DefinitionListIterator dli(*dl); + Definition *d; + int minDistance = 10000; + MemberDef *bestMatch = 0; + for (dli.toFirst();(d=dli.current());++dli) + { + if (d->definitionType()==Definition::TypeMember) + { + g_visitedNamespaces.clear(); + int distance = isAccessibleFromWithExpScope(scope,fileScope,d,explicitScopePart); + if (distance!=-1 && distance<minDistance) + { + minDistance = distance; + bestMatch = (MemberDef *)d; + } + } + } + + if (bestMatch && bestMatch->isTypedef()) + return true; // closest matching symbol is a typedef + else + return false; +} + //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- |
From: Dave D. <do...@do...> - 2005-12-19 22:30:18
|
Symptom: Some function prototypes end up being treated as constructor calls. Example: /** \brief something */ typedef struct { int x; } t; extern t foo(struct t *); // declaration /** \brief something */ t foo(struct t * x) // definition Doxygen thinks that the declaration is actually a variable being created with a call to a constructor for type t. It ends up putting it in the "Variables" section. This patch adds a check of the arguments being passed to the function that might be a constructor. If any argument ends in an asterisk, it must be a bare pointer type with no parameter name and therefore this must be a function prototype instead of a constructor call. Index: doxygen-1.4.5/src/doxygen.cpp =================================================================== --- doxygen-1.4.5.orig/src/doxygen.cpp 2005-11-11 12:07:22.000000000 -0500 +++ doxygen-1.4.5/src/doxygen.cpp 2005-11-11 12:20:06.000000000 -0500 @@ -1972,6 +1972,13 @@ result=FALSE; // arg type is a known type goto done; } + // If the argument is a pointer type, then this is a function prototype. + if (a->type.find('*',a->type.length()-1)!=-1) + { + //printf("%s:%d: false (arg is a pointer)\n",__FILE__,__LINE__); + result=FALSE; + goto done; + } if (a->type.find(initChars)==0) { result=TRUE; // argument type starts with typical initializer char |
From: Dave D. <do...@do...> - 2005-12-19 22:27:43
|
This fixes handling of multi-word types in prototypes Symptom: Function prototypes using multi-word C types such as "unsigned int", "long long", or "struct foo" with no explicit parameter name fail to be linked to the function definition. Cause: As an example: int foo(unsigned int); // prototype declaration in header int foo(unsigned int x) // definition in .c file In the declaration, Doxygen thinks that "unsigned" is the type and "int" is the parameter name. It fails to match this to the definition, which has type "unsigned int" and name "x". Solution: If the parameter name is one of the C keywords that can appear at the end of a multi-word type, the name is merged into the type. Likewise if the last word of the type is a C keyword that is normally followed by a tag, the name is assumed to be a tag and is merged into the type. Index: doxygen-1.4.5/src/util.cpp =================================================================== --- doxygen-1.4.5.orig/src/util.cpp 2005-11-11 12:08:21.000000000 -0500 +++ doxygen-1.4.5/src/util.cpp 2005-11-11 12:15:24.000000000 -0500 @@ -2832,7 +2832,7 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *arg) { QCString type = arg->type.stripWhiteSpace(); - QCString name = arg->name; + QCString name = arg->name.stripWhiteSpace(); //printf("extractCanonicalType(type=%s,name=%s)\n",type.data(),name.data()); if ((type=="const" || type=="volatile") && !name.isEmpty()) { // name is part of type => correct @@ -2845,6 +2845,47 @@ type+=name; } + // If a multiword type name such as "unsigned int" or "long long" + // appears at the end of a parameter in a prototype with no + // parameter name identifier, the defargs parser may end up thinking + // the "int" or "long" is the name of the parameter. This tries to + // detect and fixup those cases. + if (!type.isEmpty() && !name.isEmpty()) + { + if (name=="long" || name=="int" || name=="short" || name=="char" + || name=="double" || name=="_Complex" || name=="_Imaginary") + { + //printf("extractCanonicalType: fixed multiword type %s << %s\n",type.data(),name.data()); + type+=" "; + type+=name; + } + } + + // If a tagged type name such as "struct foo" appears at the end of + // a parameter in a prototype with no parameter name identifier, the + // defargs parser may end up thinking the "foo" tag is the name of + // the parameter. This tries to detect and fixup those cases. + if (!type.isEmpty() && !name.isEmpty()) + { + // The old QRegExp shipped with Doxygen is a bit limited, so this + // requires a bunch of tests. + static QRegExp exprs[] = { + QRegExp("\\sstruct$"),QRegExp("^struct$"), + QRegExp("\\sunion$"),QRegExp("^union$"), + QRegExp("\\senum$"),QRegExp("^enum$")}; + + for (unsigned int i=0;i < (sizeof exprs)/(sizeof exprs[0]);i++) + { + if (exprs[i].match(type)!=-1) + { + //printf("extractCanonicalType: fixed tag %s << %s\n",type.data(),name.data()); + type+=" "; + type+=name; + break; + } + } + } + // strip const and volatile keywords that are not relatevant for the type stripIrrelevantConstVolatile(type); |
From: Dave D. <do...@do...> - 2005-12-19 22:23:27
|
This fixes a line counting bug in the doxygen preprocessor. Symptom: References and callgraphs are sometimes not displayed for C functions, even if explicitly requested. Cause: The preprocessing code neglects to count linebreaks when it encounters certain commands in a comment block. #include directives are replaced with line number directives based on this faulty counter. The line directives affect the counter that is used to set up and index contexts for later processing stages. For example a \verbatim before an #include in the file will cause the contexts to be indexed with the wrong line numbers. When the later stage that computes function references needs the context, it looks it up using the correct line count and fails to find it. Therefore the references list ends up empty, and therefore callgraphs are suppressed. Index: doxygen-1.4.5/src/pre.l =================================================================== --- doxygen-1.4.5.orig/src/pre.l 2005-09-18 13:01:10.000000000 -0400 +++ doxygen-1.4.5/src/pre.l 2005-11-11 12:11:20.000000000 -0500 @@ -1838,9 +1838,11 @@ //g_commentCount++; } <SkipCComment>[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f{"|"f$"|"f["){BN}+ { + g_yyLineNr+=QCString(yytext).contains('\n'); outputArray(yytext,yyleng); } <SkipCComment>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ { + g_yyLineNr+=QCString(yytext).contains('\n'); outputArray(yytext,yyleng); if (yytext[1]=='f') { |
From: Dupuit C. <Cyr...@wo...> - 2005-11-25 16:18:28
|
Hello, I have a big program coded in TASM.=20 I am very interrested to use doxygen to do this but the file format = (.asm) is not recognize. How can I do a "special" file format recognition ? Regards. Cyril. This e-mail and any files transmitted with it are confidential and are = intended solely for the use of the individual or entity to whom they are = addressed. If you are not the original recipient or the person = responsible for delivering the e-mail to the intended recipient, be = advised that you have received this e-mail in error, and that any use, = dissemination, forwarding, printing, or copying of this e-mail is = strictly prohibited. If you received this e-mail in error, please = immediately notify Pos...@wo... Woodhead Industries, Inc. and its affiliates reserve the right to = monitor all internal and external communications at any time. |
From: Dave D. <do...@do...> - 2005-10-29 00:24:50
|
On Fri, Oct 28, 2005 at 05:15:40PM -0400, Duane Ellis wrote: > Somewhere on every HTML page - (or frame) - it would be very helpful if > there was a way in doxygen to insert a "mailto" type HTML tag that > identified the page. You might be able to do this with the existing HTML_FOOTER capability, if your custom footer included a link like this: <a href="mailto:som...@so...?subject=$title">please comment</a> -Dave Dodge |
From: Chris C. <do...@ke...> - 2005-10-28 21:46:02
|
As far as I can gather from the documentation, the following should work: /** * \file dt.c * \author Copyright (C) 2005 Chris Croughton <sw...@ke...> */ /* some code */ /** * \file * This is some more description of the file. */ /* some more code */ /** * \file * And some more descriptive stuff. */ However, it doesn't, only the first comment gets into the file description. Is there some way to do this that I'm missing, or is it not supposed to work? I'm sure I've done something like it before... Chris C |
From: Duane E. <dua...@fr...> - 2005-10-28 21:16:03
|
Somewhere on every HTML page - (or frame) - it would be very helpful if there was a way in doxygen to insert a "mailto" type HTML tag that identified the page. I mean *EVERY* page. Purpose: I need to publish some documentation for a large library. I'd like to have some type of "feed back" link added to the page that would help me make better documentation. I'm sure you've seen this type of stuff @ microsoft msdn documentation pages, and things like that - "Was this page helpful Y/N - Please comment" What I don't have - is an HTTP server the link can point to. Thus - I think a "MAILTO" link would work best. BUT - what I need is the "refering page" so I can find the thing they want to tell me about. For example, I'd like to see in the users mail client is something like this: To: som...@so... Subj: ${STRING} ${PAGE} In my case, ${STRING} is some thing set in the DOXYGEN config file and identifies/helps-with: Sorting EMAIL (procmail-rules) the release number or date the development system the module within the development system The "${PAGE}" some page specific thing - a number, string or filename. So the person updating/fixing the docs - can easily find what they are looking for. -Duane. |
From: Alex B. <a.b...@ca...> - 2005-10-23 23:47:24
|
Hi, I submitted this patch last week some time, but it didn't appear to get through. Apologies if it arrives twice. The patch is a modification to scanner to let it parse .ice files. ICE is a communications engine similar to CORBA, and .ice files are like .idl files (See http://www.zeroc.com for details). We've been using the updated doxygen version (with this patch) for about a week now, for both ICE and C++ code, and everything seems OK. Cheers, Alex |
From: Dimitri v. H. <di...@st...> - 2005-10-23 12:26:14
|
On Fri, Oct 21, 2005 at 04:39:04PM +0100, Michael McTernan wrote: > Hi, > > Another from valgrind and the doxygen-1.4.4-20050815.tar.gz CVS tarball. > > classdef.cpp:50: > > // constructs a new class definition > ClassDef::ClassDef( > const char *defFileName,int defLine, > const char *nm,CompoundType ct, > const char *lref,const char *fName, > bool isSymbol) > : > Definition(defFileName,defLine,removeRedundantWhiteSpace(nm),0,0,isSymbol) > { > m_compType=ct; > QCString compoundName=compoundTypeString(); > > ... > > Unfortunately compoundTypeString() does the following: > > if (m_compType==Interface && m_isObjC) return "class"; > > > Unlike m_compType, m_isObjC hasn't yet been setup. Indeed, will be corrected. Regards, Dimitri |
From: Michael M. <Mic...@tt...> - 2005-10-22 18:53:28
|
Excellent! Many thanks :) BTW, did you see bug 319427: http://bugzilla.gnome.org/show_bug.cgi?id=319427 I just checked the CVS tarball for 22/10/2005, and think this is still an issue. I think the solution is just to move the assignment of m_isObjC = FALSE to the start of the function, where m_compType is setup. Regards, Mike > -----Original Message----- > From: Dimitri van Heesch [mailto:di...@st...] > Sent: 22 October 2005 13:18 > To: Michael McTernan > Cc: dox...@li... > Subject: Re: [Doxygen-develop] Memory underrun in util.cpp:5584 > > On Fri, Oct 21, 2005 at 03:54:21PM +0100, Michael McTernan wrote: > > Hi there, > > > > I took the doxygen-1.4.4-20050815.tar.gz CVS tarball and ran it under > > valgrind. I found a byte being accessed before the start of a buffer: > > > > // search for trailing empty lines > > int b=l-1,bi=-1; > > p=s.data()+b; > > while (b>=0) > > { > > c=*--p; <------ Can read before s.data > > if (c==' ' || c=='\t' || c=='\r') b--; > > else if (c=='\n') bi=b,b--; > > else break; > > } > > > > I think the problem is that --p occurs before the dereference, and so > the > > code would be better written as: > > > > while (b>=0) > > { > > c=*p; > > p--; > > if (c==' ' || c=='\t' || c=='\r') b--; > > > > This avoids p[-1] being accessed if something like "\n" is in the > buffer. > > > > I've not put it into Bugzilla, but let me know if you would prefer it > filed > > there instead. > > If you look at version 1.4.5 or later, you'll see the code had been > changed to: > > ------------------------------------------------------ > // search for trailing empty lines > int b=l-1,bi=-1; > p=s.data()+b; > while (b>=0) > { > c=*p; p--; > if (c==' ' || c=='\t' || c=='\r') b--; > else if (c=='\n') bi=b,b--; > else break; > } > ------------------------------------------------------ > > so that's exactly what you are proposing ;-) > > Regards, > Dimitri |
From: Dimitri v. H. <di...@st...> - 2005-10-22 12:18:36
|
On Fri, Oct 21, 2005 at 03:54:21PM +0100, Michael McTernan wrote: > Hi there, > > I took the doxygen-1.4.4-20050815.tar.gz CVS tarball and ran it under > valgrind. I found a byte being accessed before the start of a buffer: > > // search for trailing empty lines > int b=l-1,bi=-1; > p=s.data()+b; > while (b>=0) > { > c=*--p; <------ Can read before s.data > if (c==' ' || c=='\t' || c=='\r') b--; > else if (c=='\n') bi=b,b--; > else break; > } > > I think the problem is that --p occurs before the dereference, and so the > code would be better written as: > > while (b>=0) > { > c=*p; > p--; > if (c==' ' || c=='\t' || c=='\r') b--; > > This avoids p[-1] being accessed if something like "\n" is in the buffer. > > I've not put it into Bugzilla, but let me know if you would prefer it filed > there instead. If you look at version 1.4.5 or later, you'll see the code had been changed to: ------------------------------------------------------ // search for trailing empty lines int b=l-1,bi=-1; p=s.data()+b; while (b>=0) { c=*p; p--; if (c==' ' || c=='\t' || c=='\r') b--; else if (c=='\n') bi=b,b--; else break; } ------------------------------------------------------ so that's exactly what you are proposing ;-) Regards, Dimitri |
From: Michael M. <Mic...@tt...> - 2005-10-21 15:39:11
|
Hi, Another from valgrind and the doxygen-1.4.4-20050815.tar.gz CVS tarball. classdef.cpp:50: // constructs a new class definition ClassDef::ClassDef( const char *defFileName,int defLine, const char *nm,CompoundType ct, const char *lref,const char *fName, bool isSymbol) : Definition(defFileName,defLine,removeRedundantWhiteSpace(nm),0,0,isSymbol) { m_compType=ct; QCString compoundName=compoundTypeString(); ... Unfortunately compoundTypeString() does the following: if (m_compType==Interface && m_isObjC) return "class"; Unlike m_compType, m_isObjC hasn't yet been setup. Cheers, Mike |
From: Michael M. <Mic...@tt...> - 2005-10-21 14:54:24
|
Hi there, I took the doxygen-1.4.4-20050815.tar.gz CVS tarball and ran it under valgrind. I found a byte being accessed before the start of a buffer: // search for trailing empty lines int b=l-1,bi=-1; p=s.data()+b; while (b>=0) { c=*--p; <------ Can read before s.data if (c==' ' || c=='\t' || c=='\r') b--; else if (c=='\n') bi=b,b--; else break; } I think the problem is that --p occurs before the dereference, and so the code would be better written as: while (b>=0) { c=*p; p--; if (c==' ' || c=='\t' || c=='\r') b--; This avoids p[-1] being accessed if something like "\n" is in the buffer. I've not put it into Bugzilla, but let me know if you would prefer it filed there instead. Regards, Mike |
From: Jens M. <ju...@ma...> - 2005-10-21 11:06:07
|
Am 21.10.2005 um 12:53 schrieb Martin Fuchs: > Hello, > > >> Also for the doxygen page itself in the german wikipedia >> the article is proposed to be deleted. >> http://de.wikipedia.org/wiki/Doxygen >> > > I added a comment on the Wiki discussion page with my veto > against the deletion: > > http://de.wikipedia.org/wiki/Diskussion:Doxygen There's a longer discussion going on at a different place: http://de.wikipedia.org/wiki/Wikipedia:L=F6schkandidaten/=20 20._Oktober_2005#Doxygen Should your comment/veto go there [as well]? </jum> |