Commit 64ab3608 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3.7

parent 08b4b96e
DOXYGEN Version 1.3.6-20040427 DOXYGEN Version 1.3.7
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (27 April 2004) Dimitri van Heesch (07 May 2004)
aix-g++ aix-g++
aix-xlc aix-xlc
beos-g++
dgux-g++ dgux-g++
freebsd-g++ freebsd-g++
gnu-g++ gnu-g++
......
DOXYGEN Version 1.3.6_20040427 DOXYGEN Version 1.3.7
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (27 April 2004) Dimitri van Heesch (dimitri@stack.nl) (07 May 2004)
1.3.6-20040427 1.3.7
...@@ -23,7 +23,7 @@ f_make=NO ...@@ -23,7 +23,7 @@ f_make=NO
f_dot=NO f_dot=NO
f_perl=NO f_perl=NO
f_plf_auto=NO f_plf_auto=NO
f_prefix=/usr f_prefix=/usr/local
f_insttool=NO f_insttool=NO
f_english=NO f_english=NO
f_wizard=NO f_wizard=NO
...@@ -136,6 +136,9 @@ if test -z "$f_platform"; then ...@@ -136,6 +136,9 @@ if test -z "$f_platform"; then
AIX*) AIX*)
f_platform=aix-xlc f_platform=aix-xlc
;; ;;
BeOS*)
f_platform=beos-g++
;;
dgux:*) dgux:*)
f_platform=dgux-g++ f_platform=dgux-g++
;; ;;
...@@ -253,7 +256,7 @@ if test "$f_wizard" = YES; then ...@@ -253,7 +256,7 @@ if test "$f_wizard" = YES; then
echo "QTDIR not set and Qt not found at standard locations!" echo "QTDIR not set and Qt not found at standard locations!"
echo echo
echo "tmake requires the QTDIR environment variable to be set." echo "tmake requires the QTDIR environment variable to be set."
echo "check your Qt installation!" echo "check the Qt installation instructions!"
exit 2 exit 2
else else
if test ! -d "$QTDIR/lib"; then if test ! -d "$QTDIR/lib"; then
......
...@@ -30,7 +30,7 @@ clean: ...@@ -30,7 +30,7 @@ clean:
language: language.doc language: language.doc
language.doc: maintainers.txt language.tpl translator.pl language.doc: maintainers.txt language.tpl translator.py
set DOXYGEN_DOCDIR=. & set VERSION=$(VERSION) & $(PERL) translator.pl set DOXYGEN_DOCDIR=. & set VERSION=$(VERSION) & python translator.py
FORCE: FORCE:
...@@ -30,9 +30,9 @@ clean: ...@@ -30,9 +30,9 @@ clean:
language: language.doc language: language.doc
language.doc: maintainers.txt language.tpl translator.pl language.doc: maintainers.txt language.tpl translator.py
set DOXYGEN_DOCDIR=. set DOXYGEN_DOCDIR=.
set VERSION=$(VERSION) set VERSION=$(VERSION)
$(PERL) translator.pl python translator.py
FORCE: FORCE:
...@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other ...@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile). configuration file (with default name and known as Doxyfile).
Currently (version 1.3.6-20040413), 28 languages Currently (version 1.3.6-20040427), 28 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, French, German, Greek, Czech, Danish, Dutch, English, Finnish, French, German, Greek,
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.6_20040427 Version: 1.3.7
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -130,6 +130,8 @@ ...@@ -130,6 +130,8 @@
#define _OS_UNIXWARE7_ #define _OS_UNIXWARE7_
#elif defined(__CYGWIN__) #elif defined(__CYGWIN__)
#define _OS_CYGWIN_ #define _OS_CYGWIN_
#elif defined(__BEOS__)
#define _OS_BEOS_
#else #else
#error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com" #error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com"
#endif #endif
......
...@@ -986,7 +986,11 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -986,7 +986,11 @@ void ClassDef::writeDocumentation(OutputList &ol)
} }
ol.endTextLink(); ol.endTextLink();
ol.popGeneratorState(); ol.popGeneratorState();
ol.pushGeneratorState();
ol.disable(OutputGenerator::RTF);
ol.newParagraph(); ol.newParagraph();
ol.popGeneratorState();
} }
} }
ol.writeSynopsis(); ol.writeSynopsis();
......
...@@ -1999,7 +1999,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ...@@ -1999,7 +1999,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
<SkipString>"//"|"/*" { <SkipString>"//"|"/*" {
g_code->codify(yytext); g_code->codify(yytext);
} }
<SkipString>\" { <SkipString>@?\" {
g_code->codify(yytext); g_code->codify(yytext);
endFontClass(); endFontClass();
BEGIN( g_lastStringContext ); BEGIN( g_lastStringContext );
......
...@@ -300,9 +300,9 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -300,9 +300,9 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
{ {
a->type = removeRedundantWhiteSpace(g_curArgTypeName); a->type = removeRedundantWhiteSpace(g_curArgTypeName);
} }
//printf("a->type=%s a->name=%s a->array=%s\n",a->type.data(),a->name.data());
a->array += removeRedundantWhiteSpace(g_curArgArray); a->array += removeRedundantWhiteSpace(g_curArgArray);
a->defval = g_curArgDefValue.copy(); a->defval = g_curArgDefValue.copy();
//printf("a->type=%s a->name=%s a->defval=\"%s\"\n",a->type.data(),a->name.data(),a->defval.data());
a->docs = g_curArgDocs.stripWhiteSpace(); a->docs = g_curArgDocs.stripWhiteSpace();
//printf("Argument `%s' `%s' adding docs=`%s'\n",a->type.data(),a->name.data(),a->docs.data()); //printf("Argument `%s' `%s' adding docs=`%s'\n",a->type.data(),a->name.data(),a->docs.data());
g_argList->append(a); g_argList->append(a);
......
...@@ -76,7 +76,6 @@ static void removeFromMap(Definition *d) ...@@ -76,7 +76,6 @@ static void removeFromMap(Definition *d)
Definition::Definition(const char *df,int dl, Definition::Definition(const char *df,int dl,
const char *name,const char *b, const char *name,const char *b,
const char *d,bool isSymbol) const char *d,bool isSymbol)
: m_reachableDefs(17)
{ {
//QCString ns; //QCString ns;
m_defFileName = df; m_defFileName = df;
...@@ -112,8 +111,6 @@ Definition::Definition(const char *df,int dl, ...@@ -112,8 +111,6 @@ Definition::Definition(const char *df,int dl,
m_docFile=(QCString)"<"+name+">"; m_docFile=(QCString)"<"+name+">";
m_isSymbol = isSymbol; m_isSymbol = isSymbol;
if (m_isSymbol) addToMap(name,this); if (m_isSymbol) addToMap(name,this);
m_reachableDefs.setAutoDelete(TRUE);
m_reachabilityComputed=FALSE;
} }
Definition::~Definition() Definition::~Definition()
...@@ -761,32 +758,3 @@ QCString Definition::convertNameToFile(const char *name,bool allowDots) const ...@@ -761,32 +758,3 @@ QCString Definition::convertNameToFile(const char *name,bool allowDots) const
} }
} }
void Definition::addReachableDef(Definition *def,int distance)
{
if (m_reachableDefs.find(def->qualifiedName()))
{
m_reachableDefs.insert(def->qualifiedName(),new ReachableDefinition(def,distance));
}
}
void Definition::computeReachability()
{
if (m_reachabilityComputed) return;
addReachableDef(this,0);
Definition *parent = getOuterScope();
int i=1;
while (parent)
{
parent->computeReachability();
QDictIterator<ReachableDefinition> dli(m_reachableDefs);
ReachableDefinition *rd;
for (dli.toFirst();(rd=dli.current());++dli)
{
addReachableDef(rd->def,i);
}
parent=parent->getOuterScope();
i++;
}
m_reachabilityComputed=TRUE;
}
...@@ -25,8 +25,6 @@ ...@@ -25,8 +25,6 @@
class FileDef; class FileDef;
class OutputList; class OutputList;
class SectionDict; class SectionDict;
//class MemberList;
//class MemberDict;
class MemberSDict; class MemberSDict;
class MemberDef; class MemberDef;
class GroupDef; class GroupDef;
...@@ -52,7 +50,7 @@ class Definition ...@@ -52,7 +50,7 @@ class Definition
TypeClass, TypeMember, TypeFile, TypeGroup, TypeClass, TypeMember, TypeFile, TypeGroup,
TypeNamespace, TypePackage, TypePage TypeNamespace, TypePackage, TypePage
}; };
/*! Use this for dynamic inspection of the derived class */ /*! Use this for dynamic inspection of the type of the derived class */
virtual DefType definitionType() = 0; virtual DefType definitionType() = 0;
/*! Create a new definition */ /*! Create a new definition */
...@@ -60,51 +58,110 @@ class Definition ...@@ -60,51 +58,110 @@ class Definition
const char *defFileName,int defLine, const char *defFileName,int defLine,
const char *name,const char *b=0,const char *d=0, const char *name,const char *b=0,const char *d=0,
bool isSymbol=TRUE); bool isSymbol=TRUE);
/*! Destroys the definition */ /*! Destroys the definition */
virtual ~Definition(); virtual ~Definition();
/*! Returns the name of the definition */ /*! Returns the name of the definition */
const QCString& name() const { return m_name; } const QCString& name() const { return m_name; }
/*! Returns the base name of the output file that contains this /*! Returns the base name of the output file that contains this
* definition. * definition.
*/ */
virtual QCString qualifiedName(); virtual QCString qualifiedName();
/*! Returns the local name without any scope qualifiers. */
QCString localName() const; QCString localName() const;
/*! Returns the base file name (without extension) of this definition.
* as it is referenced to/written to disk.
*/
virtual QCString getOutputFileBase() const = 0; virtual QCString getOutputFileBase() const = 0;
/*! Returns the name of the source listing of this file. */ /*! Returns the name of the source listing of this file. */
const QCString getSourceFileBase() const { ASSERT(0); return "NULL"; } const QCString getSourceFileBase() const { ASSERT(0); return "NULL"; }
/*! Returns the detailed description of this definition */ /*! Returns the detailed description of this definition */
const QCString& documentation() const { return m_doc; } const QCString& documentation() const { return m_doc; }
/*! Returns the brief description of this definition */ /*! Returns the brief description of this definition */
const QCString& briefDescription() const { return m_brief; } const QCString& briefDescription() const { return m_brief; }
/*! Sets a new \a name for the definition */ /*! Sets a new \a name for the definition */
void setName(const char *name) { m_name=name; } void setName(const char *name) { m_name=name; }
/*! Sets the documentation of this definition to \a d. */ /*! Sets the documentation of this definition to \a d. */
void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE); void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE);
/*! Returns the line number at which the detailed documentation was found. */
int docLine() const { return m_docLine; } int docLine() const { return m_docLine; }
/*! Returns the file in which the detailed documentation block was found.
* This can differ from getDefFileName().
*/
QCString docFile() const { return m_docFile; } QCString docFile() const { return m_docFile; }
/*! Sets the brief description of this definition to \a b. /*! Sets the brief description of this definition to \a b.
* A dot is added to the sentence if not available. * A dot is added to the sentence if not available.
*/ */
void setBriefDescription(const char *b,const char *briefFile,int briefLine); void setBriefDescription(const char *b,const char *briefFile,int briefLine);
/*! Returns the line number at which the brief description was found. */
int briefLine() const { return m_briefLine; } int briefLine() const { return m_briefLine; }
/*! Returns the file in which the brief description was found.
* This can differ from getDefFileName().
*/
QCString briefFile() const { return m_briefFile; } QCString briefFile() const { return m_briefFile; }
/*! returns the file in which this definition was found */
QCString getDefFileName() const { return m_defFileName; }
/*! returns the line number at which the definition was found */
int getDefLine() const { return m_defLine; }
/*! Returns TRUE iff the definition is documented */ /*! Returns TRUE iff the definition is documented */
virtual bool hasDocumentation() const; virtual bool hasDocumentation() const;
/*! Returns TRUE iff it is possible to link to this item within this
* project.
*/
virtual bool isLinkableInProject() const = 0; virtual bool isLinkableInProject() const = 0;
/*! Returns TRUE iff it is possible to link to this item. This can
* be a link to another project imported via a tag file.
*/
virtual bool isLinkable() const = 0; virtual bool isLinkable() const = 0;
virtual QCString getReference() const { return m_ref; }
// symbols /*! If this definition was imported via a tag file, this function
QCString symbolName() const { return m_symbolName; } * returns the tagfile for the external project. This can be
void setSymbolName(const QCString &name) { m_symbolName=name; } * translated into an external link target via
* Doxygen::tagDestinationDict
*/
virtual QCString getReference() const { return m_ref; }
/*! Returns TRUE if this definition is imported via a tag file. */
virtual bool isReference() const { return !m_ref.isEmpty(); } virtual bool isReference() const { return !m_ref.isEmpty(); }
/*! Sets the tag file id via which this definition was imported. */
void setReference(const char *r) { m_ref=r; } void setReference(const char *r) { m_ref=r; }
/*! Returns the name of this definition as it appears in the symbol map.
*/
QCString symbolName() const { return m_symbolName; }
/*! Sets the name of this definition as it should appear in the symbol map.
*/
void setSymbolName(const QCString &name) { m_symbolName=name; }
/*! Add the list of anchors that mark the sections that are found in the /*! Add the list of anchors that mark the sections that are found in the
* documentation. * documentation.
*/ */
void addSectionsToDefinition(QList<SectionInfo> *anchorList); void addSectionsToDefinition(QList<SectionInfo> *anchorList);
/*! Writes the documentation anchors of the definition to
* the Doxygen::tagFile stream.
*/
void writeDocAnchorsToTagFile(); void writeDocAnchorsToTagFile();
// source references // source references
...@@ -120,28 +177,14 @@ class Definition ...@@ -120,28 +177,14 @@ class Definition
void addSourceReferencedBy(MemberDef *d); void addSourceReferencedBy(MemberDef *d);
void addSourceReferences(MemberDef *d); void addSourceReferences(MemberDef *d);
//{
// if (todoId!=0) m_todoId=todoId;
// if (testId!=0) m_testId=testId;
// if (bugId!=0) m_bugId=bugId;
//}
//int todoId() const { return m_todoId; }
//int testId() const { return m_testId; }
//int bugId() const { return m_bugId; }
void setRefItems(const QList<ListItemInfo> *sli); void setRefItems(const QList<ListItemInfo> *sli);
void mergeRefItems(Definition *d); void mergeRefItems(Definition *d);
const QList<ListItemInfo> *xrefListItems() const; const QList<ListItemInfo> *xrefListItems() const;
/*! returns the file in which this definition was found */
QCString getDefFileName() const { return m_defFileName; }
/*! returns the line number at which the definition was found */
int getDefLine() const { return m_defLine; }
virtual Definition *findInnerCompound(const char *name); virtual Definition *findInnerCompound(const char *name);
virtual Definition *getOuterScope() const { return m_outerScope; } virtual Definition *getOuterScope() const { return m_outerScope; }
virtual void addInnerCompound(Definition *d); virtual void addInnerCompound(Definition *d);
virtual void setOuterScope(Definition *d) { m_outerScope = d; } virtual void setOuterScope(Definition *d) { m_outerScope = d; }
virtual void computeReachability();
MemberSDict *getReferencesMembers() const { return m_sourceRefsDict; } MemberSDict *getReferencesMembers() const { return m_sourceRefsDict; }
MemberSDict *getReferencedByMembers() const { return m_sourceRefByDict; } MemberSDict *getReferencedByMembers() const { return m_sourceRefByDict; }
...@@ -149,7 +192,6 @@ class Definition ...@@ -149,7 +192,6 @@ class Definition
void makePartOfGroup(GroupDef *gd); void makePartOfGroup(GroupDef *gd);
GroupList *partOfGroups() const { return m_partOfGroups; } GroupList *partOfGroups() const { return m_partOfGroups; }
QCString convertNameToFile(const char *name,bool allowDots=FALSE) const; QCString convertNameToFile(const char *name,bool allowDots=FALSE) const;
void addReachableDef(Definition *d,int distance);
protected: protected:
int m_startBodyLine; // line number of the start of the definition int m_startBodyLine; // line number of the start of the definition
...@@ -169,10 +211,6 @@ class Definition ...@@ -169,10 +211,6 @@ class Definition
/*! List of groups this definition is part of */ /*! List of groups this definition is part of */
GroupList *m_partOfGroups; GroupList *m_partOfGroups;
// reachability of other definitions from this one
QDict<ReachableDefinition> m_reachableDefs;
bool m_reachabilityComputed;
private: private:
int getXRefListId(const char *listName) const; int getXRefListId(const char *listName) const;
void writeSourceRefList(OutputList &ol,const char *scopeName, void writeSourceRefList(OutputList &ol,const char *scopeName,
......
...@@ -82,12 +82,14 @@ static void writeGraphFooter(QTextStream &t) ...@@ -82,12 +82,14 @@ static void writeGraphFooter(QTextStream &t)
* site image map. * site image map.
* \param t the stream to which the result is written. * \param t the stream to which the result is written.
* \param mapName the name of the map file. * \param mapName the name of the map file.
* \param relPath the relative path to the root of the output directory
* (used in case CREATE_SUBDIRS is enabled).
* \param urlOnly if FALSE the url field in the map contains an external * \param urlOnly if FALSE the url field in the map contains an external
* references followed by a $ and then the URL. * references followed by a $ and then the URL.
* \returns TRUE if succesful. * \returns TRUE if succesful.
*/ */
static bool convertMapFile(QTextStream &t,const char *mapName, static bool convertMapFile(QTextStream &t,const char *mapName,
bool urlOnly=FALSE) const QCString relPath, bool urlOnly=FALSE)
{ {
QFile f(mapName); QFile f(mapName);
if (!f.open(IO_ReadOnly)) if (!f.open(IO_ReadOnly))
...@@ -146,7 +148,7 @@ static bool convertMapFile(QTextStream &t,const char *mapName, ...@@ -146,7 +148,7 @@ static bool convertMapFile(QTextStream &t,const char *mapName,
{ {
if ((dest=Doxygen::tagDestinationDict[df->ref()])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[df->ref()])) t << *dest << "/";
} }
if (!df->file().isEmpty()) t << df->file() << Doxygen::htmlFileExtension; if (!df->file().isEmpty()) t << relPath << df->file() << Doxygen::htmlFileExtension;
if (!df->anchor().isEmpty()) t << "#" << df->anchor(); if (!df->anchor().isEmpty()) t << "#" << df->anchor();
} }
else else
...@@ -175,7 +177,7 @@ static bool convertMapFile(QTextStream &t,const char *mapName, ...@@ -175,7 +177,7 @@ static bool convertMapFile(QTextStream &t,const char *mapName,
if ((dest=Doxygen::tagDestinationDict[refPtr])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[refPtr])) t << *dest << "/";
t << "\" "; t << "\" ";
} }
t << "href=\""; t << "href=\"" << relPath;
if (*refPtr!='\0') if (*refPtr!='\0')
{ {
if ((dest=Doxygen::tagDestinationDict[refPtr])) t << *dest << "/"; if ((dest=Doxygen::tagDestinationDict[refPtr])) t << *dest << "/";
...@@ -1004,7 +1006,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) ...@@ -1004,7 +1006,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
out << "<tr><td><img src=\"" << imgName << "\" border=\"0\" alt=\"\" usemap=\"#" out << "<tr><td><img src=\"" << imgName << "\" border=\"0\" alt=\"\" usemap=\"#"
<< mapLabel << "_map\">" << endl; << mapLabel << "_map\">" << endl;
out << "<map name=\"" << mapLabel << "_map\">" << endl; out << "<map name=\"" << mapLabel << "_map\">" << endl;
convertMapFile(out,mapName); convertMapFile(out,mapName,"");
out << "</map></td></tr>" << endl; out << "</map></td></tr>" << endl;
//thisDir.remove(mapName); //thisDir.remove(mapName);
} }
...@@ -1740,7 +1742,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out, ...@@ -1740,7 +1742,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
out << "\"></center>" << endl; out << "\"></center>" << endl;
QString tmpstr; QString tmpstr;
QTextOStream tmpout(&tmpstr); QTextOStream tmpout(&tmpstr);
convertMapFile(tmpout,baseName+".map"); convertMapFile(tmpout,baseName+".map",relPath);
if (!tmpstr.isEmpty()) if (!tmpstr.isEmpty())
{ {
out << "<map name=\"" << mapLabel << "\">" << endl; out << "<map name=\"" << mapLabel << "\">" << endl;
...@@ -2004,7 +2006,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -2004,7 +2006,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
out << "</center>" << endl; out << "</center>" << endl;
QString tmpstr; QString tmpstr;
QTextOStream tmpout(&tmpstr); QTextOStream tmpout(&tmpstr);
convertMapFile(tmpout,baseName+".map"); convertMapFile(tmpout,baseName+".map",relPath);
if (!tmpstr.isEmpty()) if (!tmpstr.isEmpty())
{ {
out << "<map name=\"" << mapName << "_map\">" << endl; out << "<map name=\"" << mapName << "_map\">" << endl;
...@@ -2185,7 +2187,7 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format, ...@@ -2185,7 +2187,7 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
out << "</center>" << endl; out << "</center>" << endl;
QString tmpstr; QString tmpstr;
QTextOStream tmpout(&tmpstr); QTextOStream tmpout(&tmpstr);
convertMapFile(tmpout,baseName+".map"); convertMapFile(tmpout,baseName+".map",relPath);
if (!tmpstr.isEmpty()) if (!tmpstr.isEmpty())
{ {
out << "<map name=\"" << mapName << "_map\">" << endl; out << "<map name=\"" << mapName << "_map\">" << endl;
...@@ -2421,7 +2423,7 @@ QString getDotImageMapFromFile(const QString& inFile, const QString& outDir) ...@@ -2421,7 +2423,7 @@ QString getDotImageMapFromFile(const QString& inFile, const QString& outDir)
} }
QString result; QString result;
QTextOStream tmpout(&result); QTextOStream tmpout(&result);
convertMapFile(tmpout, outFile, TRUE); convertMapFile(tmpout, outFile, "",TRUE);
QDir().remove(outFile); QDir().remove(outFile);
// printf("result=%s\n",result.data()); // printf("result=%s\n",result.data());
......
...@@ -3679,7 +3679,7 @@ static void computeClassRelations() ...@@ -3679,7 +3679,7 @@ static void computeClassRelations()
if ((cd==0 || (!cd->hasDocumentation() && !cd->isReference())) && if ((cd==0 || (!cd->hasDocumentation() && !cd->isReference())) &&
bName.right(2)!="::") bName.right(2)!="::")
{ {
if (!root->name.isEmpty() && root->name[0]!='@' && // normal name if (!root->name.isEmpty() && root->name.find('@')==-1 && // normal name
(guessSection(root->fileName)==Entry::HEADER_SEC || (guessSection(root->fileName)==Entry::HEADER_SEC ||
Config_getBool("EXTRACT_LOCAL_CLASSES")) && // not defined in source file Config_getBool("EXTRACT_LOCAL_CLASSES")) && // not defined in source file
(root->protection!=Private || Config_getBool("EXTRACT_PRIVATE")) && // hidden by protection (root->protection!=Private || Config_getBool("EXTRACT_PRIVATE")) && // hidden by protection
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include "section.h" #include "section.h"
#include "membergroup.h" #include "membergroup.h"
#include "reflist.h" #include "reflist.h"
//#include "packagedef.h"
class PageSList; class PageSList;
class PageSDict; class PageSDict;
......
...@@ -38,7 +38,6 @@ Entry::Entry() ...@@ -38,7 +38,6 @@ Entry::Entry()
argList->setAutoDelete(TRUE); argList->setAutoDelete(TRUE);
//printf("Entry::Entry() tArgList=0\n"); //printf("Entry::Entry() tArgList=0\n");
tArgLists = 0; tArgLists = 0;
//mtArgList = 0;
mGrpId = -1; mGrpId = -1;
tagInfo = 0; tagInfo = 0;
sli = 0; sli = 0;
...@@ -88,9 +87,6 @@ Entry::Entry(const Entry &e) ...@@ -88,9 +87,6 @@ Entry::Entry(const Entry &e)
initLines = e.initLines; initLines = e.initLines;
callGraph = e.callGraph; callGraph = e.callGraph;
objc = e.objc; objc = e.objc;
//todoId = e.todoId;
//testId = e.testId;
//bugId = e.bugId;
tagInfo = e.tagInfo; tagInfo = e.tagInfo;
sublist = new QList<Entry>; sublist = new QList<Entry>;
sublist->setAutoDelete(TRUE); sublist->setAutoDelete(TRUE);
...@@ -152,19 +148,6 @@ Entry::Entry(const Entry &e) ...@@ -152,19 +148,6 @@ Entry::Entry(const Entry &e)
tArgLists = copyArgumentLists(e.tArgLists); tArgLists = copyArgumentLists(e.tArgLists);
} }
// deep copy template argument list
//if (e.mtArgList)
//{
// mtArgList = new ArgumentList;
// mtArgList->setAutoDelete(TRUE);
// //printf("Entry::Entry(copy) new tArgList=%p\n",tArgList);
// QListIterator<Argument> mtali(*e.mtArgList);
// for (;(a=mtali.current());++mtali)
// {
// mtArgList->append(new Argument(*a));
// //printf("appending argument %s %s\n",a->type.data(),a->name.data());
// }
//}
if (e.sli) if (e.sli)
{ {
sli = new QList<ListItemInfo>; sli = new QList<ListItemInfo>;
...@@ -206,17 +189,6 @@ void Entry::addSubEntry(Entry *current) ...@@ -206,17 +189,6 @@ void Entry::addSubEntry(Entry *current)
//printf("Entry::addSubEntry(%s) %p\n",current->name.data(),current->tArgList); //printf("Entry::addSubEntry(%s) %p\n",current->name.data(),current->tArgList);
current->parent=this; current->parent=this;
sublist->append(current); sublist->append(current);
//if (current->tArgList)
//{
// Argument * a=current->tArgList->first();
// while (a)
// {
// printf("type=%s name=%s\n",a->type.data(),a->name.data());
// a=current->tArgList->next();
// }
//}
} }
void Entry::reset() void Entry::reset()
...@@ -227,7 +199,6 @@ void Entry::reset() ...@@ -227,7 +199,6 @@ void Entry::reset()
bitfields.resize(0); bitfields.resize(0);
exception.resize(0); exception.resize(0);
program.resize(0); program.resize(0);
//body.resize(0);
includeFile.resize(0); includeFile.resize(0);
includeName.resize(0); includeName.resize(0);
doc.resize(0); doc.resize(0);
...@@ -243,8 +214,6 @@ void Entry::reset() ...@@ -243,8 +214,6 @@ void Entry::reset()
inbodyLine=-1; inbodyLine=-1;
inside.resize(0); inside.resize(0);
fileName.resize(0); fileName.resize(0);
//scopeSpec.resize(0);
//memberSpec.resize(0);
initializer.resize(0); initializer.resize(0);
initLines = -1; initLines = -1;
startLine = 1; startLine = 1;
...@@ -252,9 +221,6 @@ void Entry::reset() ...@@ -252,9 +221,6 @@ void Entry::reset()
endBodyLine = -1; endBodyLine = -1;
mGrpId = -1; mGrpId = -1;
callGraph = FALSE; callGraph = FALSE;
//todoId = 0;
//testId = 0;
//bugId = 0;
section = EMPTY_SEC; section = EMPTY_SEC;
mtype = Method; mtype = Method;
virt = Normal; virt = Normal;
...@@ -347,18 +313,6 @@ int Entry::getSize() ...@@ -347,18 +313,6 @@ int Entry::getSize()
al=tArgLists->next(); al=tArgLists->next();
} }
} }
//if (mtArgList)
//{
// a=mtArgList->first();
// while (e)
// {
// size+=sizeof(Argument);
// size+=a->type.length()+1
// +a->name.length()+1
// +a->defval.length()+1;
// a=mtArgList->next();
// }
//}
return size; return size;
} }
......
...@@ -136,9 +136,9 @@ struct Grouping ...@@ -136,9 +136,9 @@ struct Grouping
{ {
GROUPING_LOWEST, GROUPING_LOWEST,
GROUPING_AUTO_WEAK = GROUPING_AUTO_WEAK =
GROUPING_LOWEST, //!< membership in group was defined via \@weakgroup GROUPING_LOWEST, //!< membership in group was defined via \@weakgroup
GROUPING_AUTO_ADD, //!< membership in group was defined via \@add[to]group GROUPING_AUTO_ADD, //!< membership in group was defined via \@add[to]group
GROUPING_AUTO_DEF, //!< membership in group was defined via \@defgroup GROUPING_AUTO_DEF, //!< membership in group was defined via \@defgroup
GROUPING_AUTO_HIGHEST = GROUPING_AUTO_DEF, GROUPING_AUTO_HIGHEST = GROUPING_AUTO_DEF,
GROUPING_INGROUP, //!< membership in group was defined by \@ingroup GROUPING_INGROUP, //!< membership in group was defined by \@ingroup
GROUPING_HIGHEST = GROUPING_INGROUP GROUPING_HIGHEST = GROUPING_INGROUP
...@@ -306,9 +306,9 @@ class Entry ...@@ -306,9 +306,9 @@ class Entry
bool objc; //!< Objective-C construct bool objc; //!< Objective-C construct
enum enum
{ {
GROUPDOC_NORMAL, //<! defgroup GROUPDOC_NORMAL, //!< defgroup
GROUPDOC_ADD, //<! addgroup GROUPDOC_ADD, //!< addgroup
GROUPDOC_WEAK //<! weakgroup GROUPDOC_WEAK //!< weakgroup
} groupDocType; //!< kind of group } groupDocType; //!< kind of group
/// return the command name used to define GROUPDOC_SEC /// return the command name used to define GROUPDOC_SEC
const char *groupDocCmd() const const char *groupDocCmd() const
......
...@@ -31,24 +31,6 @@ struct Example ...@@ -31,24 +31,6 @@ struct Example
QCString file; QCString file;
}; };
//class ExampleList : public QList<Example>
//{
// public:
// ExampleList() : QList<Example>() {}
// ~ExampleList() {}
// int compareItems(GCI item1,GCI item2)
// {
// return stricmp(((Example *)item1)->name,((Example *)item2)->name);
// }
//};
//class ExampleDict : public QDict<Example>
//{
// public:
// ExampleDict(int size=17) : QDict<Example>(size) {}
// ~ExampleDict() {}
//};
class ExampleSDict : public SDict<Example> class ExampleSDict : public SDict<Example>
{ {
public: public:
......
...@@ -573,6 +573,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -573,6 +573,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
{ {
ol.startMemberItem(0); ol.startMemberItem(0);
ol.docify(theTranslator->trGroup(FALSE,TRUE)); ol.docify(theTranslator->trGroup(FALSE,TRUE));
ol.docify(" ");
ol.insertMemberAlign(); ol.insertMemberAlign();
ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),0,gd->groupTitle()); ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),0,gd->groupTitle());
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
......
...@@ -37,3 +37,4 @@ int main(int argc,char **argv) ...@@ -37,3 +37,4 @@ int main(int argc,char **argv)
generateOutput(); generateOutput();
return 0; return 0;
} }
...@@ -188,7 +188,11 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -188,7 +188,11 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
QCString n=a->defval; QCString n=a->defval;
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName);
ol.docify(" = "); ol.docify(" = ");
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md->name(),n);
ol.startTypewriter();
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md->name(),n,FALSE,TRUE,TRUE);
ol.endTypewriter();
} }
a=defArgList->next(); a=defArgList->next();
if (a) if (a)
...@@ -618,21 +622,11 @@ void MemberDef::setDefinitionTemplateParameterLists(QList<ArgumentList> *lists) ...@@ -618,21 +622,11 @@ void MemberDef::setDefinitionTemplateParameterLists(QList<ArgumentList> *lists)
void MemberDef::writeLink(OutputList &ol,ClassDef *,NamespaceDef *, void MemberDef::writeLink(OutputList &ol,ClassDef *,NamespaceDef *,
FileDef *,GroupDef *gd) FileDef *,GroupDef *gd)
{ {
//Definition *d=0; QCString sep = Config_getBool("OPTIMIZE_OUTPUT_JAVA") ? "." : "::";
//if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else if (gd) d=gd; QCString n = name();
//if (d==0) { err("Member %s without definition! Please report this bug!\n",name().data()); return; } if (classDef && gd) n.prepend(classDef->name()+sep);
//if (group!=0 && gd==0) // forward link to the group else if (nspace && gd) n.prepend(nspace->name()+sep);
//{ ol.writeObjectLink(getReference(),getOutputFileBase(),anchor(),n);
// ol.writeObjectLink(group->getReference(),group->getOutputFileBase(),anchor(),name());
//}
//else // local link
//{
QCString sep = Config_getBool("OPTIMIZE_OUTPUT_JAVA") ? "." : "::";
QCString n = name();
if (classDef && gd) n.prepend(classDef->name()+sep);
else if (nspace && gd) n.prepend(nspace->name()+sep);
ol.writeObjectLink(getReference(),getOutputFileBase(),anchor(),n);
//}
} }
/*! If this member has an anonymous class/struct/union as its type, then /*! If this member has an anonymous class/struct/union as its type, then
...@@ -985,7 +979,11 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -985,7 +979,11 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (!name().isEmpty() && name().at(0)!='@') // hide annonymous stuff if (!name().isEmpty() && name().at(0)!='@') // hide annonymous stuff
{ {
//printf("Member name=`%s gd=%p md->groupDef=%p inGroup=%d isLinkable()=%d\n",name().data(),gd,getGroupDef(),inGroup,isLinkable()); //printf("Member name=`%s gd=%p md->groupDef=%p inGroup=%d isLinkable()=%d\n",name().data(),gd,getGroupDef(),inGroup,isLinkable());
if (isLinkable()) if (!(name().isEmpty() || name().at(0)=='@') && // name valid
(hasDocumentation() || isReference()) && // has docs
!(prot==Private && !Config_getBool("EXTRACT_PRIVATE") && mtype!=Friend) && // hidden due to protection
!(isStatic() && classDef==0 && !Config_getBool("EXTRACT_STATIC")) // hidden due to static-ness
)
{ {
if (annMemb) if (annMemb)
{ {
...@@ -1075,8 +1073,9 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -1075,8 +1073,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
// write brief description // write brief description
if (!briefDescription().isEmpty() && if (!briefDescription().isEmpty() &&
Config_getBool("BRIEF_MEMBER_DESC") && Config_getBool("BRIEF_MEMBER_DESC")
!annMemb) /* && !annMemb */
)
{ {
ol.startMemberDescription(); ol.startMemberDescription();
ol.parseDoc(briefFile(),briefLine(),getOuterScope()?getOuterScope():d,this,briefDescription(),TRUE,FALSE); ol.parseDoc(briefFile(),briefLine(),getOuterScope()?getOuterScope():d,this,briefDescription(),TRUE,FALSE);
...@@ -1144,7 +1143,7 @@ bool MemberDef::isDetailedSectionLinkable() const ...@@ -1144,7 +1143,7 @@ bool MemberDef::isDetailedSectionLinkable() const
// member is part of an anonymous scope that is the type of // member is part of an anonymous scope that is the type of
// another member in the list. // another member in the list.
// //
bool inAnonymousScope = !briefDescription().isEmpty() && annUsed; //bool inAnonymousScope = !briefDescription().isEmpty() && annUsed;
// hide friend (class|struct|union) member if HIDE_FRIEND_COMPOUNDS // hide friend (class|struct|union) member if HIDE_FRIEND_COMPOUNDS
// is true // is true
...@@ -1156,7 +1155,7 @@ bool MemberDef::isDetailedSectionLinkable() const ...@@ -1156,7 +1155,7 @@ bool MemberDef::isDetailedSectionLinkable() const
) )
); );
return ((docFilter && staticFilter && privateFilter && friendCompoundFilter) || inAnonymousScope); return ((docFilter && staticFilter && privateFilter && friendCompoundFilter) /*|| inAnonymousScope*/);
} }
bool MemberDef::isDetailedSectionVisible(bool inGroup) const bool MemberDef::isDetailedSectionVisible(bool inGroup) const
...@@ -2050,7 +2049,10 @@ Specifier MemberDef::virtualness() const ...@@ -2050,7 +2049,10 @@ Specifier MemberDef::virtualness() const
bool MemberDef::isConstructor() const bool MemberDef::isConstructor() const
{ {
return classDef ? name()==classDef->localName() : FALSE; if (classDef)
return name()==classDef->localName();
else
return FALSE;
} }
bool MemberDef::isDestructor() const bool MemberDef::isDestructor() const
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
typedef unsigned char Byte; typedef unsigned char Byte;
/*! \brief Entry in the color palette of a PNG image */
struct Color struct Color
{ {
Byte red; Byte red;
...@@ -29,6 +30,11 @@ struct Color ...@@ -29,6 +30,11 @@ struct Color
Byte blue; Byte blue;
}; };
/*! \brief PNG image encoder
*
* This class allows to encode a raw image to a compressed PNG.
* Use write() to save the result to disk.
*/
class PngEncoder class PngEncoder
{ {
public: public:
...@@ -36,8 +42,6 @@ class PngEncoder ...@@ -36,8 +42,6 @@ class PngEncoder
~PngEncoder(); ~PngEncoder();
void write(const char *fileName); void write(const char *fileName);
protected:
private: private:
// image variables // image variables
Byte *data; // pointer to the image data (one byte per pixel) Byte *data; // pointer to the image data (one byte per pixel)
......
...@@ -2154,7 +2154,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2154,7 +2154,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->type = current->type.mid(3); current->type = current->type.mid(3);
} }
current->type=current->type.simplifyWhiteSpace(); current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace(); current->args=removeRedundantWhiteSpace(current->args);
// was: current->args.simplifyWhiteSpace();
current->name=current->name.stripWhiteSpace(); current->name=current->name.stripWhiteSpace();
//if (!current->name.isEmpty() && current->type.left(8)=="typedef ") //if (!current->name.isEmpty() && current->type.left(8)=="typedef ")
//{ //{
...@@ -2338,7 +2339,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2338,7 +2339,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->program+=','; // add field terminator current->program+=','; // add field terminator
} }
// add compound definition to the tree // add compound definition to the tree
current->args = current->args.simplifyWhiteSpace(); current->args=removeRedundantWhiteSpace(current->args);
// was: current->args.simplifyWhiteSpace();
current->type = current->type.simplifyWhiteSpace(); current->type = current->type.simplifyWhiteSpace();
current->name = current->name.stripWhiteSpace(); current->name = current->name.stripWhiteSpace();
//printf("adding `%s' `%s' `%s' brief=%s insideObjC=%d %x\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data(),insideObjC,current->section); //printf("adding `%s' `%s' `%s' brief=%s insideObjC=%d %x\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data(),insideObjC,current->section);
...@@ -3082,7 +3084,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3082,7 +3084,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<Function>[;{,] { <Function>[;{,] {
current->name=current->name.simplifyWhiteSpace(); current->name=current->name.simplifyWhiteSpace();
current->type=current->type.simplifyWhiteSpace(); current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace(); current->args=removeRedundantWhiteSpace(current->args);
// was: current->args.simplifyWhiteSpace();
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
if (*yytext!=';' || (current_root->section&Entry::COMPOUND_MASK) ) if (*yytext!=';' || (current_root->section&Entry::COMPOUND_MASK) )
...@@ -3694,7 +3697,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3694,7 +3697,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
} }
<Comment>"/*" { current->program += yytext ; } <Comment>"/*" { current->program += yytext ; }
<Comment>"//" { current->program += yytext ; } <Comment>"//" { current->program += yytext ; }
<Comment>[^\n\*]+ { current->program += yytext ; } <Comment>[^\n\/\*]+ { current->program += yytext ; }
<Comment>"*/" { current->program += yytext ; <Comment>"*/" { current->program += yytext ;
BEGIN( lastContext ) ; BEGIN( lastContext ) ;
} }
......
This diff is collapsed.
...@@ -78,9 +78,27 @@ TextGeneratorOLImpl::TextGeneratorOLImpl(OutputDocInterface &od) : m_od(od) ...@@ -78,9 +78,27 @@ TextGeneratorOLImpl::TextGeneratorOLImpl(OutputDocInterface &od) : m_od(od)
{ {
} }
void TextGeneratorOLImpl::writeString(const char *s) const void TextGeneratorOLImpl::writeString(const char *s,bool keepSpaces) const
{ {
m_od.docify(s); if (keepSpaces)
{
const char *p=s;
if (p)
{
char cs[2];
char c;
cs[1]='\0';
while ((c=*p++))
{
if (c==' ') m_od.writeNonBreakableSpace(1);
else cs[0]=c,m_od.docify(cs);
}
}
}
else
{
m_od.docify(s);
}
} }
void TextGeneratorOLImpl::writeBreak() const void TextGeneratorOLImpl::writeBreak() const
...@@ -1171,9 +1189,26 @@ QCString removeRedundantWhiteSpace(const QCString &s) ...@@ -1171,9 +1189,26 @@ QCString removeRedundantWhiteSpace(const QCString &s)
uint csp=0; uint csp=0;
for (i=0;i<l;i++) for (i=0;i<l;i++)
{ {
nextChar:
char c=s.at(i); char c=s.at(i);
if (csp<6 && c==constScope[csp]) csp++; else csp=0; if (csp<6 && c==constScope[csp]) csp++; else csp=0;
if (i<l-2 && c=='<' && // current char is a < if (c=='"') // quoted string
{
i++;
result+=c;
while (i<l)
{
char cc=s.at(i);
result+=cc;
if (cc=='\\') // escaped character
{ result+=s.at(i+1); i+=2; }
else if (cc=='"') // end of string
{ i++; goto nextChar; }
else // any other character
{ i++; }
}
}
else if (i<l-2 && c=='<' && // current char is a <
(isId(s.at(i+1)) || isspace((uchar)s.at(i+1))) && // next char is an id char or space (isId(s.at(i+1)) || isspace((uchar)s.at(i+1))) && // next char is an id char or space
(i<8 || !findOperator(s,i)) // string in front is not "operator" (i<8 || !findOperator(s,i)) // string in front is not "operator"
) )
...@@ -1252,7 +1287,10 @@ bool leftScopeMatch(const QCString &scope, const QCString &name) ...@@ -1252,7 +1287,10 @@ bool leftScopeMatch(const QCString &scope, const QCString &name)
} }
void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileScope,const char * /*name*/,const char *text,bool autoBreak,bool external) void linkifyText(const TextGeneratorIntf &out,Definition *scope,
FileDef *fileScope,const char *,
const char *text, bool autoBreak,bool external,
bool keepSpaces)
{ {
//printf("`%s'\n",text); //printf("`%s'\n",text);
static QRegExp regExp("[a-z_A-Z][a-z_A-Z0-9:]*"); static QRegExp regExp("[a-z_A-Z][a-z_A-Z0-9:]*");
...@@ -1290,20 +1328,20 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco ...@@ -1290,20 +1328,20 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco
if (i==-1) i=splitText.find(' '); if (i==-1) i=splitText.find(' ');
if (i!=-1) // add a link-break at i in case of Html output if (i!=-1) // add a link-break at i in case of Html output
{ {
out.writeString(splitText.left(i+1)); out.writeString(splitText.left(i+1),keepSpaces);
out.writeBreak(); out.writeBreak();
out.writeString(splitText.right(splitLength-i-1)); out.writeString(splitText.right(splitLength-i-1),keepSpaces);
} }
else else
{ {
out.writeString(splitText); out.writeString(splitText,keepSpaces);
} }
floatingIndex=splitLength-i-1; floatingIndex=splitLength-i-1;
} }
else else
{ {
//ol.docify(txtStr.mid(skipIndex,newIndex-skipIndex)); //ol.docify(txtStr.mid(skipIndex,newIndex-skipIndex));
out.writeString(txtStr.mid(skipIndex,newIndex-skipIndex)); out.writeString(txtStr.mid(skipIndex,newIndex-skipIndex),keepSpaces);
} }
// get word from string // get word from string
QCString word=txtStr.mid(newIndex,matchLen); QCString word=txtStr.mid(newIndex,matchLen);
...@@ -1370,7 +1408,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco ...@@ -1370,7 +1408,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco
if (!found) // add word to the result if (!found) // add word to the result
{ {
//ol.docify(word); //ol.docify(word);
out.writeString(word); out.writeString(word,keepSpaces);
} }
// set next start point in the string // set next start point in the string
//printf("index=%d/%d\n",index,txtStr.length()); //printf("index=%d/%d\n",index,txtStr.length());
...@@ -1379,7 +1417,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco ...@@ -1379,7 +1417,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco
} }
// add last part of the string to the result. // add last part of the string to the result.
//ol.docify(txtStr.right(txtStr.length()-skipIndex)); //ol.docify(txtStr.right(txtStr.length()-skipIndex));
out.writeString(txtStr.right(txtStr.length()-skipIndex)); out.writeString(txtStr.right(txtStr.length()-skipIndex),keepSpaces);
} }
......
...@@ -57,7 +57,7 @@ class Definition; ...@@ -57,7 +57,7 @@ class Definition;
class TextGeneratorIntf class TextGeneratorIntf
{ {
public: public:
virtual void writeString(const char *) const = 0; virtual void writeString(const char *,bool) const = 0;
virtual void writeBreak() const = 0; virtual void writeBreak() const = 0;
virtual void writeLink(const char *extRef,const char *file, virtual void writeLink(const char *extRef,const char *file,
const char *anchor,const char *text const char *anchor,const char *text
...@@ -68,7 +68,7 @@ class TextGeneratorOLImpl : public TextGeneratorIntf ...@@ -68,7 +68,7 @@ class TextGeneratorOLImpl : public TextGeneratorIntf
{ {
public: public:
TextGeneratorOLImpl(OutputDocInterface &od); TextGeneratorOLImpl(OutputDocInterface &od);
void writeString(const char *s) const; void writeString(const char *s,bool keepSpaces) const;
void writeBreak() const; void writeBreak() const;
void writeLink(const char *extRef,const char *file, void writeLink(const char *extRef,const char *file,
const char *anchor,const char *text const char *anchor,const char *text
...@@ -85,7 +85,8 @@ void linkifyText(const TextGeneratorIntf &ol, ...@@ -85,7 +85,8 @@ void linkifyText(const TextGeneratorIntf &ol,
const char *name, const char *name,
const char *text, const char *text,
bool autoBreak=FALSE, bool autoBreak=FALSE,
bool external=TRUE bool external=TRUE,
bool keepSpaces=FALSE
); );
void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId=-1); void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId=-1);
QCString fileToString(const char *name,bool filter=FALSE); QCString fileToString(const char *name,bool filter=FALSE);
......
...@@ -445,7 +445,9 @@ void XmlDocVisitor::visitPost(DocSimpleListItem *) ...@@ -445,7 +445,9 @@ void XmlDocVisitor::visitPost(DocSimpleListItem *)
void XmlDocVisitor::visitPre(DocSection *s) void XmlDocVisitor::visitPre(DocSection *s)
{ {
if (m_hide) return; if (m_hide) return;
m_t << "<sect" << s->level() << " id=\"" << s->id() << "\">" << endl; m_t << "<sect" << s->level() << " id=\"" << s->file();
if (!s->anchor().isEmpty()) m_t << "_1" << s->anchor();
m_t << "\">" << endl;
m_t << "<title>"; m_t << "<title>";
filter(s->title()); filter(s->title());
m_t << "</title>" << endl; m_t << "</title>" << endl;
......
...@@ -153,7 +153,7 @@ class TextGeneratorXMLImpl : public TextGeneratorIntf ...@@ -153,7 +153,7 @@ class TextGeneratorXMLImpl : public TextGeneratorIntf
{ {
public: public:
TextGeneratorXMLImpl(QTextStream &t): m_t(t) {} TextGeneratorXMLImpl(QTextStream &t): m_t(t) {}
void writeString(const char *s) const void writeString(const char *s,bool /*keepSpaces*/) const
{ {
writeXMLString(m_t,s); writeXMLString(m_t,s);
} }
......
#! Use the common Unix template
#$ IncludeTemplate("../unix/app.t");
#! Use the common Unix template
#$ IncludeTemplate("../unix/lib.t");
#! Use the common Unix template
#$ IncludeTemplate("../unix/subdirs.t");
#
#
#
# tmake configuration for linux-g++
#
TEMPLATE = app
CONFIG = qt warn_on release
TMAKE_CC = gcc
TMAKE_CFLAGS =
TMAKE_CFLAGS_WARN_ON = -Wall -W
TMAKE_CFLAGS_WARN_OFF =
TMAKE_CFLAGS_RELEASE =
TMAKE_CFLAGS_DEBUG = -g
TMAKE_CFLAGS_SHLIB = -fPIC
TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
TMAKE_CXX = g++
TMAKE_CXXFLAGS = $$TMAKE_CFLAGS
TMAKE_CXXFLAGS_WARN_ON = $$TMAKE_CFLAGS_WARN_ON
TMAKE_CXXFLAGS_WARN_OFF = $$TMAKE_CFLAGS_WARN_OFF
TMAKE_CXXFLAGS_RELEASE = $$TMAKE_CFLAGS_RELEASE
TMAKE_CXXFLAGS_DEBUG = $$TMAKE_CFLAGS_DEBUG
TMAKE_CXXFLAGS_SHLIB = $$TMAKE_CFLAGS_SHLIB
TMAKE_CXXFLAGS_YACC = $$TMAKE_CFLAGS_YACC
TMAKE_INCDIR =
TMAKE_LIBDIR =
TMAKE_INCDIR_QT = $(QTDIR)/include
TMAKE_LIBDIR_QT = $(QTDIR)/lib
TMAKE_LINK = g++
TMAKE_LINK_SHLIB = g++
TMAKE_LFLAGS = -Wl,-rpath=/lib:$(QTDIR)/lib
TMAKE_LFLAGS_RELEASE =
TMAKE_LFLAGS_DEBUG =
TMAKE_LFLAGS_SHLIB = -shared
TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_QT = -lqt
TMAKE_MOC = moc
TMAKE_AR = ar cqs
TMAKE_RANLIB =
TMAKE_TAR = tar -cf
TMAKE_GZIP = gzip -9f
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