Commit 32557464 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.4.5-20051024

parent c9ed38ab
DOXYGEN Version 1.4.5-20051010
DOXYGEN Version 1.4.5-20051024
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (10 October 2005)
Dimitri van Heesch (24 October 2005)
DOXYGEN Version 1.4.5_20051010
DOXYGEN Version 1.4.5_20051024
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (10 October 2005)
Dimitri van Heesch (dimitri@stack.nl) (24 October 2005)
1.4.5-20051010
1.4.5-20051024
......@@ -120,7 +120,7 @@ Options:
--enable-langs list Include support for output languages listed in list.
[default: $f_langs]
--with-doxywizard Build the GUI frontend for doxygen. This
requires Qt 2.x.x
requires Qt 3.3.x
EOF
test "$f_error" = y && exit 1
......
......@@ -22,7 +22,7 @@
read \ref unix_problems "this section" first.
<li>Doxygen is <em>not</em> a real compiler, it is only a lexical scanner.
This means that it can and will not detect errors in your source code.
<li>Since it impossible to test all possible code fragments, it is
<li>Since it is impossible to test all possible code fragments, it is
very well possible, that some valid piece of C/C++ code is not handled
properly. If you find such a piece, please send it to me, so I can
improve doxygen's parsing capabilities. Try to make the piece of code
......@@ -58,7 +58,7 @@
For a part this is because the code parser isn't smart enough at the
moment. I'll try to improve this in the future. But even with these
improvements not everthing can be properly linked to the corresponding
improvements not everything can be properly linked to the corresponding
documentation, because of possible ambiguities or lack of
information about the context in which the code fragment is found.
<li>It is not possible to insert a non-member function f in a class A
......
......@@ -47,6 +47,7 @@ ClassDef::ClassDef(
: Definition(defFileName,defLine,removeRedundantWhiteSpace(nm),0,0,isSymbol)
{
m_compType=ct;
m_isObjC = FALSE;
QCString compoundName=compoundTypeString();
if (fName)
{
......@@ -92,7 +93,6 @@ ClassDef::ClassDef(
m_artificial = FALSE;
m_isAbstract = FALSE;
m_isStatic = FALSE;
m_isObjC = FALSE;
m_isTemplArg = FALSE;
m_membersMerged = FALSE;
m_categoryOf = 0;
......
......@@ -1226,6 +1226,7 @@ static void startFontClass(const char *s)
static void writeObjCMethodCall(ObjCCallCtx *ctx)
{
if (ctx==0) return;
if (ctx->methodName.isEmpty()) return;
const char *p = ctx->format.data();
//printf("writeObjCMethodCall(%s) obj=%s method=%s\n",
// ctx->format.data(),ctx->objectTypeOrName.data(),ctx->methodName.data());
......@@ -2418,6 +2419,9 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
<ObjCCall,ObjCMName,ObjCSkipStr>"$" { g_currentCtx->format+="$$"; }
<ObjCCall,ObjCMName>"(" { g_currentCtx->format+=*yytext; g_braceCount++; }
<ObjCCall,ObjCMName>")" { g_currentCtx->format+=*yytext; g_braceCount--; }
<ObjCSkipStr>"@"/"\"" { // needed to prevent matching the global rule (for C#)
g_currentCtx->format+=yytext;
}
<ObjCCall,ObjCMName,ObjCSkipStr>. { g_currentCtx->format+=*yytext; }
<ObjCCall,ObjCMName,ObjCSkipStr>\n { g_currentCtx->format+=*yytext; }
......
......@@ -1636,7 +1636,7 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
{
if (*yytext=='\n') yyLineNr++;
addOutput('\n');
//printf("functionProto=%s\n",functionProto.data());
printf("functionProto=%s\n",functionProto.data());
langParser->parsePrototype(functionProto);
BEGIN( Comment );
}
......
......@@ -561,6 +561,7 @@ static QCString convertLabel(const QCString &l)
{
QCString result;
const char *p=l.data();
if (p==0) return result;
char c;
while ((c=*p++))
{
......
......@@ -245,7 +245,7 @@ static STLInfo g_stlinfo[] =
{ "ofstream", "basic_ofstream<char>", 0, 0, 0, 0, 0, FALSE, FALSE },
{ "wofstream", "basic_ofstream<wchar_t>", 0, 0, 0, 0, 0, FALSE, FALSE },
{ "fstream", "basic_fstream<char>", 0, 0, 0, 0, 0, FALSE, FALSE },
{ "wfstream", "basic_wfstream<wchar_t>", 0, 0, 0, 0, 0, FALSE, FALSE },
{ "wfstream", "basic_fstream<wchar_t>", 0, 0, 0, 0, 0, FALSE, FALSE },
{ "istringstream", "basic_istringstream<char>", 0, 0, 0, 0, 0, FALSE, FALSE },
{ "wistringstream", "basic_istringstream<wchar_t>", 0, 0, 0, 0, 0, FALSE, FALSE },
{ "ostringstream", "basic_ostringstream<char>", 0, 0, 0, 0, 0, FALSE, FALSE },
......
......@@ -24,7 +24,6 @@ int Entry::num=0;
Entry::Entry()
{
num++;
//printf("New Entry %d\n",num);
parent=0;
section = EMPTY_SEC;
sublist = new QList<Entry>;
......@@ -50,7 +49,6 @@ Entry::Entry()
Entry::Entry(const Entry &e)
{
num++;
//printf("Copy New Entry %d\n",num);
section = e.section;
protection = e.protection;
mtype = e.mtype;
......@@ -171,7 +169,7 @@ Entry::Entry(const Entry &e)
Entry::~Entry()
{
//printf("Deleting entry %d name %s type %x chilren %d\n",
//printf("Deleting entry %d name %s type %x children %d\n",
// num,name.data(),section,sublist->count());
delete sublist;
delete extends;
......@@ -190,7 +188,8 @@ void Entry::addSubEntry(Entry *current)
//printf("Entry %d with name %s type 0x%x added to %s type 0x%x\n",
// current->num,current->name.data(),current->section,
// name.data(),section);
//printf("Entry::addSubEntry(%s) %p\n",current->name.data(),current->tArgList);
//printf("Entry::addSubEntry(%s:%p) to %s\n",current->name.data(),
// current,name.data());
current->parent=this;
sublist->append(current);
}
......
......@@ -446,6 +446,10 @@ void HtmlHelp::createProjectFile()
t << s << endl;
s = indexFiles.next();
}
t << "tabs.css";
t << "tab_b.gif";
t << "tab_l.gif";
t << "tab_r.gif";
f.close();
}
else
......
......@@ -2248,7 +2248,16 @@ bool MemberDef::isConstructor() const
}
else // for other languages
{
return name()==classDef->localName();
QCString locName = classDef->localName();
int i=locName.find('<');
if (i==-1) // not a template class
{
return name()==locName;
}
else
{
return name()==locName.left(i);
}
}
}
else
......
......@@ -105,6 +105,9 @@ static QCString g_moduleScope;
static QCString g_packageName;
static bool g_hideClassDocs;
static QCString g_defVal;
static int g_braceCount;
//-----------------------------------------------------------------------------
......@@ -310,9 +313,11 @@ static void handleCommentBlock(const QCString &doc,bool brief)
static void endOfDef()
{
current = bodyEntry;
if (bodyEntry)
{
bodyEntry->endBodyLine = yyLineNr;
bodyEntry = 0;
}
newEntry();
//g_insideConstructor = FALSE;
}
......@@ -436,6 +441,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
%x FunctionDec
%x FunctionParams
%x FunctionBody
%x FunctionParamDefVal
/* Class states */
......@@ -798,17 +804,6 @@ STARTDOCSYMS ^{B}"##"/[^#]
}
current->name = yytext;
current->name = current->name.stripWhiteSpace();
//if (!current->name.isEmpty() && current->name.at(0)=='_')
//{
// current->protection = Private;
//}
//if ((current_root->section&Entry::SCOPE_MASK) &&
// current->name=="__init__") // constructor
//{
// g_insideConstructor = TRUE;
// g_constructorEntry = current;
// newEntry();
//}
}
{B}"(" {
......@@ -827,21 +822,19 @@ STARTDOCSYMS ^{B}"##"/[^#]
current->argList->getLast()->name = QCString(yytext).stripWhiteSpace();
current->argList->getLast()->type = "";
}
"="[^,)\n]+ { // default value
"=" { // default value
// TODO: this rule is too simple, need to be able to
// match things like =")" as well!
QCString defVal=&yytext[1];
if (current->argList->getLast())
{
current->argList->getLast()->defval=defVal.stripWhiteSpace();
}
g_defVal.resize(0);
g_braceCount=0;
BEGIN(FunctionParamDefVal);
}
")" { // end of parameter list
}
":" {
lineCount();
g_specialBlock = TRUE; // expecting a docstring
bodyEntry = current;
BEGIN( FunctionBody );
......@@ -852,6 +845,36 @@ STARTDOCSYMS ^{B}"##"/[^#]
}
<FunctionParamDefVal>{
"(" { // internal opening brace
g_braceCount++;
g_defVal+=*yytext;
}
"," |
")" {
if (g_braceCount==0) // end of default argument
{
if (current->argList->getLast())
{
current->argList->getLast()->defval=g_defVal.stripWhiteSpace();
}
BEGIN(FunctionParams);
}
else // continue
{
g_braceCount--;
g_defVal+=*yytext;
}
}
. {
g_defVal+=*yytext;
}
\n {
g_defVal+=*yytext;
yyLineNr++;
}
}
<ClassBody>{
\n/{IDENTIFIER}{BB} { // new def at indent 0
......@@ -861,6 +884,13 @@ STARTDOCSYMS ^{B}"##"/[^#]
YY_CURRENT_BUFFER->yy_at_bol=TRUE;
BEGIN(Search);
}
\n/"##" {
yyLineNr++;
endOfDef();
g_hideClassDocs = FALSE;
YY_CURRENT_BUFFER->yy_at_bol=TRUE;
BEGIN(Search);
}
^{BB}/\n { // skip empty line
current->program+=yytext;
}
......@@ -904,13 +934,13 @@ STARTDOCSYMS ^{B}"##"/[^#]
current->program+=yytext;
g_specialBlock = FALSE;
}
^{POUNDCOMMENT} { // normal comment
current->program+=yytext;
}
{NEWLINE} {
current->program+=*yytext;
yyLineNr++;
}
^{POUNDCOMMENT} { // normal comment
current->program+=yytext;
}
. { // any character
g_specialBlock = FALSE;
current->program+=*yytext;
......@@ -926,7 +956,6 @@ STARTDOCSYMS ^{B}"##"/[^#]
initTriSingleQuoteBlock();
BEGIN(TripleComment);
}
}
<ClassDec>{IDENTIFIER} {
......@@ -1145,7 +1174,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
// printf("Expected module block %d special=%d\n",g_expectModuleDocs,g_specialBlock);
if (g_doubleQuote==(yytext[0]=='"'))
{
if (g_specialBlock /*|| g_expectModuleDocs*/)
if (g_specialBlock)
{
QCString actualDoc=docBlock;
if (!docBlockSpecial) // legacy unformatted docstring
......@@ -1157,6 +1186,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
//{
// actualDoc.prepend("\\namespace "+g_moduleScope+"\\_linebr ");
//}
//printf("-------> current=%p bodyEntry=%p\n",current,bodyEntry);
handleCommentBlock(actualDoc, FALSE);
}
//g_expectModuleDocs=FALSE;
......@@ -1190,7 +1220,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
docBlock += yytext;
}
}
[^"\n \t]+ {
[^"'\n \t]+ {
docBlock += yytext;
}
\n {
......@@ -1423,10 +1453,6 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
initParser();
current = new Entry;
// Set the python flags
//current_root->python = TRUE;
//current->python = TRUE;
groupEnterFile(yyFileName,yyLineNr);
current->reset();
......
......@@ -3522,8 +3522,8 @@ IDLATTR ("["[^\]]*"]"){BN}*
{
current->name += "-p";
}
if (current->section == Entry::PROTOCOL_SEC /*||
current->section == Entry::OBJCIMPL_SEC*/)
if (current->section == Entry::PROTOCOL_SEC ||
current->section == Entry::OBJCIMPL_SEC)
{
unput('{'); // fake start of body
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment