From 5d7d90c39506fb7a19514dc4abd540018deeaaf6 Mon Sep 17 00:00:00 2001 From: dimitri Date: Sun, 26 Jan 2003 21:10:54 +0000 Subject: Release-1.3-rc2-20030126 --- Doxyfile | 2 +- INSTALL | 4 +- README | 4 +- VERSION | 2 +- addon/doxmlparser/src/memberhandler.h | 19 +- packages/rpm/doxygen.spec | 2 +- src/classdef.cpp | 8 +- src/classdef.h | 2 +- src/config.l | 7 +- src/definition.cpp | 13 ++ src/definition.h | 1 + src/docparser.cpp | 2 +- src/filename.cpp | 8 +- src/ftvhelp.cpp | 376 +++++++++++++++++++++++++++++++++- src/ftvhelp.h | 13 +- src/latexdocvisitor.cpp | 4 +- src/scanner.l | 5 + src/tagreader.cpp | 1 + src/translator_jp.h | 26 ++- 19 files changed, 458 insertions(+), 41 deletions(-) diff --git a/Doxyfile b/Doxyfile index 5026e9f..8ac0802 100644 --- a/Doxyfile +++ b/Doxyfile @@ -107,7 +107,7 @@ BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO +GENERATE_TREEVIEW = YES TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output diff --git a/INSTALL b/INSTALL index 503f795..0353e63 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.3-rc2-20030119 +DOXYGEN Version 1.3-rc2-20030126 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (19 January 2003) +Dimitri van Heesch (26 January 2003) diff --git a/README b/README index 299ca5b..be6307c 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.3_rc2_20030119 +DOXYGEN Version 1.3_rc2_20030126 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) (19 January 2003) +Dimitri van Heesch (dimitri@stack.nl) (26 January 2003) diff --git a/VERSION b/VERSION index 41d507f..c31554b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3-rc2-20030119 +1.3-rc2-20030126 diff --git a/addon/doxmlparser/src/memberhandler.h b/addon/doxmlparser/src/memberhandler.h index 506ae79..213030b 100644 --- a/addon/doxmlparser/src/memberhandler.h +++ b/addon/doxmlparser/src/memberhandler.h @@ -33,16 +33,17 @@ class LinkedTextImpl; class LinkedTextHandler; class DocHandler; -struct MemberReference : public IMemberReference +class MemberReference : public IMemberReference { - virtual ~MemberReference() {} - virtual IMember *member() const; - virtual const IString *memberName() const { return &m_name; } - void initialize(MainHandler *m); - - QString m_memId; - StringImpl m_name; - MainHandler *m_mainHandler; + public: + virtual ~MemberReference() {} + virtual IMember *member() const; + virtual const IString *memberName() const { return &m_name; } + void initialize(MainHandler *m); + + QString m_memId; + StringImpl m_name; + MainHandler *m_mainHandler; }; class MemberReferenceIterator : public BaseIterator diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index dc12e3c..109bf8a 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ Summary: A documentation system for C/C++. Name: doxygen -Version: 1.3_rc2_20030119 +Version: 1.3_rc2_20030126 Release: 1 Epoch: 1 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz diff --git a/src/classdef.cpp b/src/classdef.cpp index aacf994..5fd5254 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -2195,10 +2195,10 @@ void ClassDef::determineIntfUsageRelation() } #endif -PackageDef *ClassDef::packageDef() const -{ - return m_fileDef ? m_fileDef->packageDef() : 0; -} +//PackageDef *ClassDef::packageDef() const +//{ +// return m_fileDef ? m_fileDef->packageDef() : 0; +//} QCString ClassDef::compoundTypeString() const { diff --git a/src/classdef.h b/src/classdef.h index 36abdb7..2292e2d 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -138,7 +138,7 @@ class ClassDef : public Definition /*! Returns the Java package this class is in or 0 if not applicable. */ - PackageDef *packageDef() const; + //PackageDef *packageDef() const; MemberDef *getMemberByName(const QCString &); diff --git a/src/config.l b/src/config.l index 8b63659..fcc2f5b 100644 --- a/src/config.l +++ b/src/config.l @@ -1966,10 +1966,9 @@ void Config::create() "If the GENERATE_TREEVIEW tag is set to YES, a side panel will be\n" "generated containing a tree-like index structure (just like the one that \n" "is generated for HTML Help). For this to work a browser that supports \n" - "JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, \n" - "or Internet explorer 4.0+). Note that for large projects the tree generation \n" - "can take a very long time. In such cases it is better to disable this feature. \n" - "Windows users are probably better off using the HTML help feature. \n", + "JavaScript, DHTML, CSS and frames is required (for instance Mozilla, \n" + "Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are \n" + "probably better off using the HTML help feature. \n", FALSE ); cb->addDependency("GENERATE_HTML"); diff --git a/src/definition.cpp b/src/definition.cpp index e3b35f5..583b55d 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -664,3 +664,16 @@ const QList *Definition::specialListItems() const return m_specialListItems; } + +QCString Definition::convertNameToFile(const char *name,bool allowDots) const +{ + if (!m_ref.isEmpty()) + { + return name; + } + else + { + return ::convertNameToFile(name,allowDots); + } +} + diff --git a/src/definition.h b/src/definition.h index c3c726a..68b7a92 100644 --- a/src/definition.h +++ b/src/definition.h @@ -132,6 +132,7 @@ class Definition void makePartOfGroup(GroupDef *gd); GroupList *partOfGroups() const { return m_partOfGroups; } + QCString convertNameToFile(const char *name,bool allowDots=FALSE) const; protected: int m_startBodyLine; // line number of the start of the definition diff --git a/src/docparser.cpp b/src/docparser.cpp index 2cfa394..d194a49 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -225,7 +225,7 @@ static QCString findAndCopyImage(const char *fileName,DocImage::Type type) return result; } -/*! Collects the parameters found with @param or @retval commands +/*! Collects the parameters found with \@param or \@retval commands * in a global list g_paramsFound. If \a isParam is set to TRUE * and the parameter is not an actual parameter of the current * member g_memberDef, than a warning is raised (unless warnings diff --git a/src/filename.cpp b/src/filename.cpp index 131f362..a9c8a02 100644 --- a/src/filename.cpp +++ b/src/filename.cpp @@ -35,13 +35,18 @@ void FileName::generateDiskNames() //QCString commonPrefix; FileDef *fd=first(); int count=0; - while (fd) { if (!fd->isReference()) count++; fd=next(); } + while (fd) + { + if (!fd->isReference()) count++; + fd=next(); + } if (count==1) { fd=first(); // skip references while (fd && fd->isReference()) fd=next(); // name if unique, so diskname is simply the name + //printf("!!!!!!!! Unique disk name=%s for fd=%s\n",name.data(),fd->diskname.data()); fd->diskname=name.copy(); } else if (count>1) // multiple occurrences of the same file name @@ -84,6 +89,7 @@ void FileName::generateDiskNames() { QCString prefix = fd->path.right(fd->path.length()-j-1); fd->setName(prefix+name); + //printf("!!!!!!!! non unique disk name=%s for fd=%s\n",(prefix+name).data(),fd->diskname.data()); fd->diskname=prefix+name; } fd=next(); diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp index 6a60074..0ed9565 100644 --- a/src/ftvhelp.cpp +++ b/src/ftvhelp.cpp @@ -1,7 +1,8 @@ /****************************************************************************** * ftvhelp.cpp,v 1.0 2000/09/06 16:09:00 * - * Kenney Wong + * Contributed by Kenney Wong + * Modified by Dimitri van Heesch (c) 2003 * * Folder Tree View for offline help on browsers that do not support HTML Help. * Uses the FTV structure from: @@ -20,10 +21,13 @@ #include "doxygen.h" #include "language.h" +#define MAX_INDENT 1024 +#if 0 const char treeview_data[]= #include "treeview.h" ; +#endif unsigned char ftv2blank_png[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, @@ -329,6 +333,22 @@ struct ImageInfo { 0,0,0 } }; +struct FTVNode +{ + FTVNode(bool dir,const char *r,const char *f,const char *a,const char *n) + : isLast(TRUE), isDir(dir),ref(r),file(f),anchor(a),name(n), + parent(0) { children.setAutoDelete(TRUE); } + bool isLast; + bool isDir; + QCString ref; + QCString file; + QCString anchor; + QCString name; + QList children; + FTVNode *parent; +}; + +#if 0 static void generateFolderTreeViewData() { // Generate tree view script @@ -437,6 +457,7 @@ static void generateFolderTreeViewData() p++; } } +#endif //---------------------------------------------------------------------------- @@ -446,11 +467,19 @@ FTVHelp *FTVHelp::m_theInstance = 0; * The object has to be \link initialize() initialized\endlink before it can * be used. */ -FTVHelp::FTVHelp() +FTVHelp::FTVHelp() { /* initial depth */ - m_dc = 0; + //m_dc = 0; m_cf = 0; + m_indentNodes = new QList[MAX_INDENT]; + m_indentNodes[0].setAutoDelete(TRUE); + m_indent=0; +} + +FTVHelp::~FTVHelp() +{ + delete[] m_indentNodes; } /*! return a reference to the one and only instance of this class. @@ -501,7 +530,8 @@ void FTVHelp::finalize() m_cts.unsetDevice(); m_cf->close(); delete m_cf; - generateFolderTreeViewData(); + generateTreeView(); + //generateFolderTreeViewData(); } /*! Increase the level of the contents hierarchy. @@ -511,7 +541,9 @@ void FTVHelp::finalize() int FTVHelp::incContentsDepth() { //int i; for (i=0;i *nl = &m_indentNodes[m_indent]; + FTVNode *parent = nl->getLast(); + QList *children = &m_indentNodes[m_indent+1]; + while (!children->isEmpty()) + { + parent->children.append(children->take(0)); + } + return m_indent; } /*! Add a list item to the contents file. @@ -538,6 +579,20 @@ void FTVHelp::addContentsItem(bool isDir, const char *name ) { + QList *nl = &m_indentNodes[m_indent]; + FTVNode *newNode = new FTVNode(isDir,ref,file,anchor,name); + if (!nl->isEmpty()) + { + nl->getLast()->isLast=FALSE; + } + nl->append(newNode); + if (m_indent>0) + { + QList *pnl = &m_indentNodes[m_indent-1]; + newNode->parent = pnl->getLast(); + } + +#if 0 int i; for (i=0;iparent) + { + generateIndent(t,n->parent,level+1); + } + // from the root up to node n do... + if (level==0) // item before a dir or document + { + if (n->isLast) + { + if (n->isDir) + { + t << ""; + } + else + { + t << ""; + } + } + else + { + if (n->isDir) + { + t << ""; + } + else + { + t << ""; + } + } + } + else // item at another level + { + if (n->isLast) + { + t << ""; + } + else + { + t << ""; + } + } +} + +void FTVHelp::generateLink(QTextStream &t,FTVNode *n) +{ + QCString *dest; + if (!n->ref.isEmpty()) // link to entity imported via tag file + { + t << "ref << ":"; + if ((dest=Doxygen::tagDestinationDict[n->ref])) t << *dest << "/"; + t << "\" "; + } + else // local link + { + t << "ref.isEmpty()) + { + if ((dest=Doxygen::tagDestinationDict[n->ref])) t << *dest << "/"; + } + if (!n->file.isEmpty()) t << n->file << Doxygen::htmlFileExtension; + if (!n->anchor.isEmpty()) t << "#" << n->anchor; + t << "\" target=\"basefrm\">"; + t << n->name; + t << ""; + if (!n->ref.isEmpty()) + { + t << " [external]"; + } +} + +void FTVHelp::generateTree(QTextStream &t, const QList &nl,int level) +{ + QCString spaces; + spaces.fill(' ',level*2+8); + QListIterator nli(nl); + FTVNode *n; + for (nli.toFirst();(n=nli.current());++nli) + { + t << spaces << "

"; + generateIndent(t,n,0); + if (n->isDir) + { + t << ""; + generateLink(t,n); + t << "

\n"; + t << spaces << "
\n"; + folderId++; + generateTree(t,n->children,level+1); + t << spaces << "
\n"; + } + else + { + t << ""; + generateLink(t,n); + t << "

\n"; + } + } +} + +void FTVHelp::generateTreeView() +{ + // Generate alternative index.html as a frame + QCString fileName=Config_getString("HTML_OUTPUT")+"/index"+Doxygen::htmlFileExtension; + QFile f; + f.setName(fileName); + if (!f.open(IO_WriteOnly)) + { + err("Cannot open file %s for writing!\n",fileName.data()); + return; + } + else + { + QTextStream t(&f); +#if QT_VERSION >= 200 + t.setEncoding(QTextStream::Latin1); +#endif + t << ""; + t << "idLanguageCharset() << "\">\n"; + t << ""; + if (Config_getString("PROJECT_NAME").isEmpty()) + { + t << "Doxygen Documentation"; + } + else + { + t << Config_getString("PROJECT_NAME"); + } + t << "" << endl; + t << "" << endl; + t << " " << endl; + t << " " << endl; + t << "" << endl; + t << "" << endl; + f.close(); + } + + // Generate tree view frame + fileName=Config_getString("HTML_OUTPUT")+"/tree"+Doxygen::htmlFileExtension; + f.setName(fileName); + if (!f.open(IO_WriteOnly)) + { + err("Cannot open file %s for writing!\n",fileName.data()); + return; + } + else + { + QTextStream t(&f); + t << "\n"; + t << " \n"; + t << " \n"; + t << " \n"; + t << " \n"; + t << " " << endl; + t << " Test\n"; + t << " \n"; + t << " \n"; + t << " \n"; + t << "\n"; + t << " \n"; + t << "
\n"; + t << "

Root

\n"; + t << "
\n"; + + generateTree(t,m_indentNodes[0],0); + + t << "
\n"; + t << "
\n"; + t << " \n"; + t << "\n"; + } + + // Generate tree view images + ImageInfo *p = image_info; + while (p->name) + { + QCString fileName=Config_getString("HTML_OUTPUT")+"/"+p->name; + QFile f(fileName); + if (f.open(IO_WriteOnly)) + f.writeBlock((char *)p->data,p->len); + else + { + fprintf(stderr,"Warning: Cannot open file %s for writing\n",fileName.data()); + } + f.close(); + p++; + } } diff --git a/src/ftvhelp.h b/src/ftvhelp.h index 1d6ccdf..57a18be 100644 --- a/src/ftvhelp.h +++ b/src/ftvhelp.h @@ -13,8 +13,10 @@ #include "qtbc.h" #include +#include class QFile; +struct FTVNode; /*! A class that generated the FTV Help specific file. * This file is used in conjunction with additional FTV web browser code @@ -30,7 +32,7 @@ class FTVHelp int incContentsDepth(); int decContentsDepth(); /*! return the current depth of the contents tree */ - int contentsDepth() { return m_dc; } + int contentsDepth() const { return m_indent; } void addContentsItem(bool isDir, const char *ref, const char *file, @@ -38,11 +40,18 @@ class FTVHelp const char *name); private: + void generateTreeView(); + void generateTree(QTextStream &t,const QList &nl,int level); + void generateIndent(QTextStream &t,FTVNode *n,int level); + void generateLink(QTextStream &t,FTVNode *n); FTVHelp(); + ~FTVHelp(); QFile *m_cf; QTextStream m_cts; - int m_dc; + //int m_dc; static FTVHelp *m_theInstance; + QList *m_indentNodes; + int m_indent; }; #endif /* FTVHELP_H */ diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index 00cf338..937252a 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -597,14 +597,14 @@ void LatexDocVisitor::visitPost(DocHtmlTable *t) } else { - m_t << "\\\\\\hline\n\\end{TabularC}\n"; + m_t << "\\end{TabularC}\n"; } } void LatexDocVisitor::visitPre(DocHtmlCaption *) { if (m_hide) return; - m_t << "\\\\\\hline\n\\end{TabularC}\n\\centering\n\\caption{"; + m_t << "\\end{TabularC}\n\\centering\n\\caption{"; } void LatexDocVisitor::visitPost(DocHtmlCaption *) diff --git a/src/scanner.l b/src/scanner.l index 778f179..3d30f2d 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -1853,6 +1853,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) current->reset(); } } +"[" { // attribute list in IDL + squareCount=1; + lastSquareContext = YY_START; + BEGIN(SkipSquare); + } /* "," { unput(*yytext); BEGIN(FindFields); } */ diff --git a/src/tagreader.cpp b/src/tagreader.cpp index 2b81982..45fe620 100644 --- a/src/tagreader.cpp +++ b/src/tagreader.cpp @@ -1054,6 +1054,7 @@ void TagFileParser::buildLists(Entry *root) QString fullName = m_tagName+":"+tfi->path+stripPath(tfi->name); fe->fileName = fullName; + //printf("new FileDef() filename=%s\n",tfi->filename.data()); FileDef *fd = new FileDef(m_tagName+":"+tfi->path, tfi->name,m_tagName, tfi->filename diff --git a/src/translator_jp.h b/src/translator_jp.h index 3a4b904..e4b6445 100644 --- a/src/translator_jp.h +++ b/src/translator_jp.h @@ -41,7 +41,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish /*! returns the name of the package that is included by LaTeX */ virtual QCString idLanguageCharset() { -#ifdef _WIN32 +#ifdef __CYGWIN__ return "Shift_JIS"; #else return "euc-jp"; @@ -61,13 +61,13 @@ class TranslatorJapaneseEn : public TranslatorEnglish } }; -class TranslatorJapanese : public TranslatorAdapter_1_2_18 +class TranslatorJapanese : public Translator { private: /*! The decode() can change euc into sjis */ inline QCString decode(const QCString & sInput) { -#ifdef _WIN32 +#ifdef __CYGWIN__ return JapaneseEucToSjis(sInput); #else return sInput; @@ -83,7 +83,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_18 /*! returns the name of the package that is included by LaTeX */ virtual QCString idLanguageCharset() { -#ifdef _WIN32 +#ifdef __CYGWIN__ return "Shift_JIS"; #else return "euc-jp"; @@ -1387,5 +1387,23 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_18 { return "非推奨一覧"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.18 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a header for declaration section of the events found in + * a C# program + */ + virtual QCString trEvents() + { + return "イベント"; + } + /*! Header used for the documentation section of a class' events. */ + virtual QCString trEventDocumentation() + { + return "イベントの解説"; + } + }; #endif -- cgit v0.12