Commit 0fb3f32d authored by dimitri's avatar dimitri

Release-1.6.3-20100507

parent 600fbfb8
......@@ -138,7 +138,7 @@ VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
......@@ -173,7 +173,7 @@ QHG_LOCATION =
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES
USE_INLINE_TREES = NO
USE_INLINE_TREES = YES
TREEVIEW_WIDTH = 250
FORMULA_FONTSIZE = 10
SEARCHENGINE = YES
......
DOXYGEN Version 1.6.3-20100418
DOXYGEN Version 1.6.3-20100507
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (18 April 2010)
Dimitri van Heesch (07 May 2010)
DOXYGEN Version 1.6.3_20100418
DOXYGEN Version 1.6.3_20100507
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) (18 April 2010)
Dimitri van Heesch (dimitri@stack.nl) (07 May 2010)
......@@ -4,6 +4,8 @@
#include "expert.h"
#include "wizard.h"
#define MAX_RECENT_FILES 10
const int messageTimeout = 5000; //!< status bar message timeout in millisec.
MainWindow &MainWindow::instance()
......@@ -31,6 +33,8 @@ MainWindow::MainWindow()
this,SLOT(resetToDefaults()));
settings->addAction(tr("Use current settings at startup"),
this,SLOT(makeDefaults()));
settings->addAction(tr("Clear recent list"),
this,SLOT(clearRecent()));
QMenu *help = menuBar()->addMenu(tr("Help"));
help->addAction(tr("Online manual"),
......@@ -280,6 +284,25 @@ void MainWindow::makeDefaults()
}
}
void MainWindow::clearRecent()
{
if (QMessageBox::question(this,tr("Clear the list of recent files?"),
tr("Do you want to clear the list of recently "
"loaded configuration files?"),
QMessageBox::Yes|
QMessageBox::Cancel)==QMessageBox::Yes)
{
m_recentMenu->clear();
m_recentFiles.clear();
for (int i=0;i<MAX_RECENT_FILES;i++)
{
m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromAscii(""));
}
m_settings.sync();
}
}
void MainWindow::resetToDefaults()
{
if (QMessageBox::question(this,tr("Reset settings to their default values?"),
......@@ -310,17 +333,19 @@ void MainWindow::loadSettings()
if (loadSettings!=QVariant::Invalid && loadSettings.toBool())
{
m_expert->loadSettings(&m_settings);
if (workingDir!=QVariant::Invalid && QDir(workingDir.toString()).exists())
{
setWorkingDir(workingDir.toString());
}
}
if (workingDir!=QVariant::Invalid && QDir(workingDir.toString()).exists())
{
setWorkingDir(workingDir.toString());
}
for (int i=0;i<10;i++)
for (int i=0;i<MAX_RECENT_FILES;i++)
{
QString entry = m_settings.value(QString().sprintf("recent/config%d",i)).toString();
if (!entry.isEmpty()) addRecentFile(entry);
if (!entry.isEmpty() && QFileInfo(entry).exists())
{
addRecentFile(entry);
}
}
}
......@@ -346,7 +371,7 @@ void MainWindow::addRecentFile(const QString &fileName)
if (i!=-1) m_recentFiles.removeAt(i);
// not found
if (m_recentFiles.count() < 10) // append
if (m_recentFiles.count() < MAX_RECENT_FILES) // append
{
m_recentFiles.prepend(fileName);
}
......@@ -362,6 +387,10 @@ void MainWindow::addRecentFile(const QString &fileName)
m_recentMenu->addAction(str);
m_settings.setValue(QString().sprintf("recent/config%d",i++),str);
}
for (;i<MAX_RECENT_FILES;i++)
{
m_settings.setValue(QString().sprintf("recent/config%d",i++),QString::fromAscii(""));
}
}
void MainWindow::openRecent(QAction *action)
......@@ -489,6 +518,7 @@ void MainWindow::showHtmlOutput()
{
QString indexFile = m_expert->getHtmlOutputIndex(m_workingDir->text());
QFileInfo fi(indexFile);
// TODO: the following doesn't seem to work with IE
#ifdef WIN32
QString indexUrl(QString::fromAscii("file:///"));
#else
......
......@@ -50,6 +50,7 @@ class MainWindow : public QMainWindow
void saveLog();
void showSettings();
void configChanged();
void clearRecent();
private:
MainWindow();
......
......@@ -20,7 +20,7 @@ doxygen_version_minor=6
doxygen_version_revision=3
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20100418
doxygen_version_mmn=20100507
bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
......@@ -33,7 +33,10 @@
\section linkurl Links to web pages and mail addresses
Doxygen will automatically replace any URLs and mail addresses found in the
documentation by links (in HTML).
documentation by links (in HTML). To manually specify link text, use the
HTML '<tt>a</tt>' tag:
\verbatim <a href="linkURL">link text</a> \endverbatim
which will be automatically translated to other output formats by Doxygen.
\section linkclass Links to classes.
......
......@@ -69,10 +69,10 @@ Written by Dimitri van Heesch\\[2ex]
\part{Reference Manual}
\chapter{Features}\label{features}\hypertarget{features}{}\input{features}
\chapter{Doxygen History}\label{history}\hypertarget{history}{}\input{history}
\chapter{Doxygen usage}\label{doxygen__usage}\hypertarget{doxygen__usage}{}\input{doxygen__usage}
\chapter{Doxytag usage}\label{doxytag__usage}\hypertarget{doxytag__usage}{}\input{doxytag__usage}
\chapter{Doxywizard usage}\label{doxywizard__usage}\hypertarget{doxywizard__usage}{}\input{doxywizard__usage}
\chapter{Installdox usage}\label{installdox__usage}\hypertarget{installdox__usage}{}\input{installdox__usage}
\chapter{Doxygen usage}\label{doxygen_usage}\hypertarget{doxygen_usage}{}\input{doxygen_usage}
\chapter{Doxytag usage}\label{doxytag_usage}\hypertarget{doxytag_usage}{}\input{doxytag_usage}
\chapter{Doxywizard usage}\label{doxywizard_usage}\hypertarget{doxywizard_usage}{}\input{doxywizard_usage}
\chapter{Installdox usage}\label{installdox_usage}\hypertarget{installdox_usage}{}\input{installdox_usage}
\chapter{Configuration}\label{config}\hypertarget{config}{}\input{config}
\chapter{Special Commands}\label{commands}\hypertarget{commands}{}\input{commands}
\chapter{HTML commands}\label{htmlcmds}\hypertarget{htmlcmds}{}\input{htmlcmds}
......
......@@ -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
configuration file (with default name and known as Doxyfile).
Currently (version 1.6.2), 38 languages
Currently (version 1.6.3), 38 languages
are supported (sorted alphabetically):
Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto,
......@@ -68,13 +68,13 @@ when the translator was updated.
<td>Brazilian Portuguese</td>
<td>Fabio "FJTC" Jun Takada Chino</td>
<td>jun-chino at uol dot com dot br</td>
<td>up-to-date</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>Catalan</td>
<td>Maximiliano Pin<br/>Albert Mora</td>
<td>max.pin at bitroit dot com<br/>amora at iua dot upf dot es</td>
<td>1.6.0</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>Chinese</td>
......@@ -92,13 +92,13 @@ when the translator was updated.
<td>Croatian</td>
<td>Boris Bralo</td>
<td>boris.bralo at zg dot htnet dot hr</td>
<td>1.6.0</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>Czech</td>
<td>Petr P&#x0159;ikryl</td>
<td>prikrylp at skil dot cz</td>
<td>up-to-date</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>Danish</td>
......@@ -122,7 +122,7 @@ when the translator was updated.
<td>Esperanto</td>
<td>Ander Martinez</td>
<td>dwarfnauko at gmail dot com</td>
<td>1.6.0</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>Finnish</td>
......@@ -134,13 +134,13 @@ when the translator was updated.
<td>French</td>
<td>Xavier Outhier</td>
<td>xouthier at yahoo dot fr</td>
<td>up-to-date</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>German</td>
<td>Jens Seidel</td>
<td>jensseidel at users dot sf dot net</td>
<td>1.6.0</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>Greek</td>
......@@ -182,7 +182,7 @@ when the translator was updated.
<td>Korean</td>
<td>Kim Taedong<br/>SooYoung Jung<br/>Richard Kim</td>
<td>fly1004 at gmail dot com<br/>jung5000 at gmail dot com<br/>ryk at dspwiz dot com</td>
<td>up-to-date</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>KoreanEn</td>
......@@ -218,7 +218,7 @@ when the translator was updated.
<td>Polish</td>
<td>Piotr Kaminski<br/>Grzegorz Kowal<br/>Krzysztof Kral</td>
<td>Piotr.Kaminski at ctm dot gdynia dot pl<br/>g_kowal at poczta dot onet dot pl<br/>krzysztof.kral at gmail dot com</td>
<td>up-to-date</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>Portuguese</td>
......@@ -266,7 +266,7 @@ when the translator was updated.
<td>Spanish</td>
<td>Bartomeu<br/>Francisco Oltra Thennet<br/>David Vaquero</td>
<td>bartomeu at loteria3cornella dot com<br/>foltra at puc dot cl<br/>david at grupoikusnet dot com</td>
<td>1.6.0</td>
<td>1.6.3</td>
</tr>
<tr bgcolor="#ffffff">
<td>Swedish</td>
......@@ -311,9 +311,9 @@ when the translator was updated.
\hline
Arabic & Moaz Reyad & {\tt\tiny moazreyad@yahoo.com} & 1.4.6 \\
\hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & 1.6.3 \\
\hline
Catalan & Maximiliano Pin & {\tt\tiny max.pin@bitroit.com} & 1.6.0 \\
Catalan & Maximiliano Pin & {\tt\tiny max.pin@bitroit.com} & 1.6.3 \\
~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\
\hline
Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & 1.6.0 \\
......@@ -322,9 +322,9 @@ when the translator was updated.
Chinese Traditional & Daniel YC Lin & {\tt\tiny dlin.tw@gmail.com} & 1.6.0 \\
~ & Gary Lee & {\tt\tiny garywlee@gmail.com} & ~ \\
\hline
Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & 1.6.0 \\
Croatian & Boris Bralo & {\tt\tiny boris.bralo@zg.htnet.hr} & 1.6.3 \\
\hline
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & 1.6.3 \\
\hline
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.5.4 \\
\hline
......@@ -332,13 +332,13 @@ when the translator was updated.
\hline
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline
Esperanto & Ander Martinez & {\tt\tiny dwarfnauko@gmail.com} & 1.6.0 \\
Esperanto & Ander Martinez & {\tt\tiny dwarfnauko@gmail.com} & 1.6.3 \\
\hline
Finnish & Antti Laine & {\tt\tiny antti.a.laine@tut.fi} & 1.6.0 \\
\hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & up-to-date \\
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} & 1.6.3 \\
\hline
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.6.0 \\
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.6.3 \\
\hline
Greek & Paul Gessos & {\tt\tiny nickreserved@yahoo.com} & 1.5.4 \\
\hline
......@@ -357,7 +357,7 @@ when the translator was updated.
\hline
JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
\hline
Korean & Kim Taedong & {\tt\tiny fly1004@gmail.com} & up-to-date \\
Korean & Kim Taedong & {\tt\tiny fly1004@gmail.com} & 1.6.3 \\
~ & SooYoung Jung & {\tt\tiny jung5000@gmail.com} & ~ \\
~ & Richard Kim & {\tt\tiny ryk@dspwiz.com} & ~ \\
\hline
......@@ -373,7 +373,7 @@ when the translator was updated.
\hline
Persian & Ali Nadalizadeh & {\tt\tiny nadalizadeh@gmail.com} & 1.6.0 \\
\hline
Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & up-to-date \\
Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & 1.6.3 \\
~ & Grzegorz Kowal & {\tt\tiny g\_kowal@poczta.onet.pl} & ~ \\
~ & Krzysztof Kral & {\tt\tiny krzysztof.kral@gmail.com} & ~ \\
\hline
......@@ -392,7 +392,7 @@ when the translator was updated.
\hline
Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz.ostroversnik@ostri.org} & 1.4.6 \\
\hline
Spanish & Bartomeu & {\tt\tiny bartomeu@loteria3cornella.com} & 1.6.0 \\
Spanish & Bartomeu & {\tt\tiny bartomeu@loteria3cornella.com} & 1.6.3 \\
~ & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & ~ \\
~ & David Vaquero & {\tt\tiny david@grupoikusnet.com} & ~ \\
\hline
......
This diff is collapsed.
# Doxyfile 1.6.1
# Doxyfile 1.6.3
#---------------------------------------------------------------------------
# Project related configuration options
......@@ -130,12 +130,17 @@ HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 70
HTML_COLORSTYLE_GAMMA = 60
HTML_TIMESTAMP = NO
HTML_ALIGN_MEMBERS = YES
HTML_DYNAMIC_SECTIONS = NO
GENERATE_DOCSET = YES
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
DOCSET_PUBLISHER_NAME = Publisher
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
......@@ -238,7 +243,7 @@ PERL_PATH = /usr/bin/perl
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
HAVE_DOT = YES
DOT_FONTNAME = FreeSans
DOT_FONTSIZE = 10
DOT_FONTPATH =
......@@ -248,7 +253,7 @@ GROUP_GRAPHS = YES
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO
CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
......@@ -261,4 +266,4 @@ MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
DOT_CLEANUP = NO
......@@ -198,6 +198,11 @@ int QCString::find( const char *str, int index, bool cs ) const
return d ? (int)(d - m_data) : -1;
}
int QCString::find( const QCString &str,int index,bool cs) const
{
return find(str.data(),index,cs);
}
int QCString::find( const QRegExp &rx, int index ) const
{
QString d = QString::fromLatin1( m_data );
......
......@@ -205,6 +205,7 @@ public:
int find( char c, int index=0, bool cs=TRUE ) const;
int find( const char *str, int index=0, bool cs=TRUE ) const;
int find( const QCString &str, int index=0, bool cs=TRUE ) const;
int find( const QRegExp &, int index=0 ) const;
int findRev( char c, int index=-1, bool cs=TRUE) const;
int findRev( const char *str, int index=-1, bool cs=TRUE) const;
......
......@@ -1038,8 +1038,8 @@ bool QDir::match( const QStringList &filters, const QString &fileName )
QStringList::ConstIterator sit = filters.begin();
bool matched = FALSE;
for ( ; sit != filters.end(); ++sit ) {
QRegExp regexp( *sit, FALSE, TRUE );
if ( regexp.match( fileName ) != -1 ) {
QRegExp regexp( (*sit).data(), FALSE, TRUE );
if ( regexp.match( fileName.data() ) != -1 ) {
matched = TRUE;
break;
}
......
......@@ -243,7 +243,7 @@ bool QDir::readDirEntries( const QString &nameFilter,
bool doModified = (filterSpec & Modified) != 0;
bool doSystem = (filterSpec & System) != 0;
QRegExp wc( nameFilter, FALSE, TRUE ); // wild card, case insensitive
QRegExp wc( nameFilter.data(), FALSE, TRUE ); // wild card, case insensitive
bool first = TRUE;
QString p = dPath.copy();
int plen = p.length();
......
......@@ -22,6 +22,7 @@
#define ROUND_SIZE(x) ((x)+BLOCK_SIZE-1)&~(BLOCK_SIZE-1)
#define DBG_STR(x) do { } while(0)
//#define DBG_STR(x) printf x
QGString::QGString() // make null string
: m_data(0), m_len(0), m_memSize(0)
......@@ -123,6 +124,40 @@ bool QGString::resize( uint newlen )
return TRUE;
}
bool QGString::enlarge( uint newlen )
{
if (newlen==0)
{
if (m_data) { free(m_data); m_data=0; }
m_memSize=0;
m_len=0;
return TRUE;
}
uint newMemSize = ROUND_SIZE(newlen+1);
if (newMemSize==m_memSize) return TRUE;
m_memSize = newMemSize;
if (m_data==0)
{
m_data = (char *)malloc(m_memSize);
}
else
{
m_data = (char *)realloc(m_data,m_memSize);
}
if (m_data==0)
{
return FALSE;
}
m_data[newlen-1]='\0';
if (m_len>newlen) m_len=newlen;
return TRUE;
}
void QGString::setLen( uint newlen )
{
m_len = newlen<=m_memSize ? newlen : m_memSize;
}
QGString &QGString::operator=( const QGString &s )
{
if (m_data) free(m_data);
......
......@@ -26,6 +26,8 @@ class QGString
~QGString() ;
bool resize( uint newlen );
bool enlarge( uint newlen );
void setLen( uint newlen );
QGString &operator=( const QGString &s );
QGString &operator=( const char *str );
......
......@@ -192,7 +192,7 @@ QRegExp::QRegExp()
\sa setWildcard()
*/
QRegExp::QRegExp( const QString &pattern, bool caseSensitive, bool wildcard )
QRegExp::QRegExp( const QCString &pattern, bool caseSensitive, bool wildcard )
{
rxstring = pattern;
rxdata = 0;
......@@ -247,7 +247,7 @@ QRegExp &QRegExp::operator=( const QRegExp &r )
The case sensitivity or wildcard options do not change.
*/
QRegExp &QRegExp::operator=( const QString &pattern )
QRegExp &QRegExp::operator=( const QCString &pattern )
{
rxstring = pattern;
compile();
......@@ -342,13 +342,13 @@ void QRegExp::setCaseSensitive( bool enable )
/*!
\fn QString QRegExp::pattern() const
\fn QCString QRegExp::pattern() const
Returns the pattern string of the regexp.
*/
/*!
\fn void QRegExp::setPattern(const QString & pattern)
\fn void QRegExp::setPattern(const QCString & pattern)
Sets the pattern string to \a pattern and returns a reference to this regexp.
The case sensitivity or wildcard options do not change.
*/
......@@ -364,7 +364,7 @@ static inline bool iswordchar( int x )
Match character class
*/
static bool matchcharclass( uint *rxd, QChar c )
static bool matchcharclass( uint *rxd, char c )
{
uint *d = rxd;
uint clcode = *d & MCD;
......@@ -372,15 +372,15 @@ static bool matchcharclass( uint *rxd, QChar c )
if ( clcode != CCL && clcode != CCN)
qWarning("QRegExp: Internal error, please report to qt-bugs@trolltech.com");
uint numFields = *d & MVL;
uint cval = (((uint)(c.row())) << 8) | ((uint)c.cell());
uint cval = (uint)c; //(((uint)(c.row())) << 8) | ((uint)c.cell());
bool found = FALSE;
for ( int i = 0; i < (int)numFields; i++ ) {
d++;
if ( *d == PWS && c.isSpace() ) {
if ( *d == PWS && isspace(c) ) {
found = TRUE;
break;
}
if ( *d == PDG && c.isDigit() ) {
if ( *d == PDG && isdigit(c) ) {
found = TRUE;
break;
}
......@@ -402,11 +402,11 @@ static bool matchcharclass( uint *rxd, QChar c )
Internal: Recursively match string.
*/
static int matchstring( uint *rxd, const QChar *str, uint strlength,
const QChar *bol, bool cs )
static int matchstring( uint *rxd, const char *str, uint strlength,
const char *bol, bool cs )
{
const QChar *p = str;
const QChar *start = p;
const char *p = str;
const char *start = p;
uint pl = strlength;
uint *d = rxd;
......@@ -415,9 +415,9 @@ static int matchstring( uint *rxd, const QChar *str, uint strlength,
if ( *d & CHR ) { // match char
if ( !pl )
return -1;
QChar c( *d );
if ( !cs && !c.row() ) { // case insensitive, #Only 8bit
if ( p->row() || tolower(p->cell()) != c.cell() )
char c = *d;
if ( !cs /*&& !c.row()*/ ) { // case insensitive, #Only 8bit
if ( tolower(*p) != c )
return -1;
p++;
pl--;
......@@ -440,13 +440,13 @@ static int matchstring( uint *rxd, const QChar *str, uint strlength,
}
else switch ( *d++ ) {
case PWS: // match whitespace
if ( !pl || !p->isSpace() )
if ( !pl || !isspace(*p) )
return -1;
p++;
pl--;
break;
case PDG: // match digits
if ( !pl || !p->isDigit() )
if ( !pl || !isdigit(*p) )
return -1;
p++;
pl--;
......@@ -475,11 +475,11 @@ static int matchstring( uint *rxd, const QChar *str, uint strlength,
break;
case CLO: // Kleene closure
{
const QChar *first_p = p;
const char *first_p = p;
if ( *d & CHR ) { // match char
QChar c( *d );
if ( !cs && !c.row() ) { // case insensitive, #only 8bit
while ( pl && !p->row() && tolower(p->cell())==c.cell() ) {
char c = *d;
if ( !cs /*&& !c.row()*/ ) { // case insensitive, #only 8bit
while ( pl /*&& !p->row()*/ && tolower(*p)==c ) {
p++;
pl--;
}
......@@ -500,14 +500,14 @@ static int matchstring( uint *rxd, const QChar *str, uint strlength,
d += (*d & MVL) + 1;
}
else if ( *d == PWS ) {
while ( pl && p->isSpace() ) {
while ( pl && isspace(*p) ) {
p++;
pl--;
}
d++;
}
else if ( *d == PDG ) {
while ( pl && p->isDigit() ) {
while ( pl && isdigit(*p) ) {
p++;
pl--;
}
......@@ -535,11 +535,11 @@ static int matchstring( uint *rxd, const QChar *str, uint strlength,
return -1;
case OPT: // optional closure
{
const QChar *first_p = p;
const char *first_p = p;
if ( *d & CHR ) { // match char
QChar c( *d );
if ( !cs && !c.row() ) { // case insensitive, #only 8bit
if ( pl && !p->row() && tolower(p->cell()) == c.cell() ) {
char c = *d;
if ( !cs /*&& !c.row()*/ ) { // case insensitive, #only 8bit
if ( pl && /*!p->row() &&*/ tolower(*p) == c ) {
p++;
pl--;
}
......@@ -560,14 +560,14 @@ static int matchstring( uint *rxd, const QChar *str, uint strlength,
d += (*d & MVL) + 1;
}
else if ( *d == PWS ) {
if ( pl && p->isSpace() ) {
if ( pl && isspace(*p) ) {
p++;
pl--;
}
d++;
}
else if ( *d == PDG ) {
if ( pl && p->isDigit() ) {
if ( pl && isdigit(*p) ) {
p++;
pl--;
}
......@@ -614,8 +614,8 @@ static int matchstring( uint *rxd, const QChar *str, uint strlength,
// class derived from QRegExp and calls this directly.
// Qt 3.0: Remove this?
const QChar *QRegExp::matchstr( uint *rxd, const QChar *str, uint strlength,
#if 0
const char *QRegExp::matchstr( uint *rxd, const QChar *str, uint strlength,
const QChar *bol ) const
{
int len = matchstring( rxd, str, strlength, bol, cs );
......@@ -623,6 +623,7 @@ const QChar *QRegExp::matchstr( uint *rxd, const QChar *str, uint strlength,
return 0;
return str + len;
}
#endif
/*!
Attempts to match in \e str, starting from position \e index.
......@@ -645,15 +646,15 @@ const QChar *QRegExp::matchstr( uint *rxd, const QChar *str, uint strlength,
\note In Qt 3.0, this function will be replaced by find().
*/
int QRegExp::match( const QString &str, int index, int *len,
int QRegExp::match( const QCString &str, int index, int *len,
bool indexIsStart ) const
{
if ( !isValid() || isEmpty() )
return -1;
if ( str.length() < (uint)index )
return -1;
const QChar *start = str.unicode();
const QChar *p = start + index;
const char *start = str.data();
const char *p = start + index;
uint pl = str.length() - index;
uint *d = rxdata;
int ep = -1;
......@@ -662,9 +663,9 @@ int QRegExp::match( const QString &str, int index, int *len,
ep = matchstring( d, p, pl, indexIsStart ? p : start, cs );
} else {
if ( *d & CHR ) {
QChar c( *d );
if ( !cs && !c.row() ) { // case sensitive, # only 8bit
while ( pl && ( p->row() || tolower(p->cell()) != c.cell() ) ) {
char c = *d;
if ( !cs /*&& !c.row()*/ ) { // case sensitive, # only 8bit
while ( pl && ( /*p->row() ||*/ tolower(*p) != c ) ) {
p++;
pl--;
}
......@@ -690,7 +691,7 @@ int QRegExp::match( const QString &str, int index, int *len,
return ep >= 0 ? (int)(p - start) : -1; // return index;
}
/*! \fn int QRegExp::find( const QString& str, int index )
/*! \fn int QRegExp::find( const QCString& str, int index )
Attempts to match in \e str, starting from position \e index.
Returns the position of the match, or -1 if there was no match.
......@@ -703,12 +704,12 @@ int QRegExp::match( const QString &str, int index, int *len,
// Ex: *.cpp ==> ^.*\.cpp$
//
static QString wc2rx( const QString &pattern )
static QCString wc2rx( const QCString &pattern )
{
int patlen = (int)pattern.length();
QString wcpattern = QString::fromLatin1("^");
QCString wcpattern("^");
QChar c;
char c;
for( int i = 0; i < patlen; i++ ) {
c = pattern[i];
switch ( (char)c ) {
......@@ -745,9 +746,9 @@ static QString wc2rx( const QString &pattern )
// Internal: Get char value and increment pointer.
//
static uint char_val( const QChar **str, uint *strlength ) // get char value
static uint char_val( const char **str, uint *strlength ) // get char value
{
const QChar *p = *str;
const char *p = *str;
uint pl = *strlength;
uint len = 1;
uint v = 0;
......@@ -812,12 +813,12 @@ static uint char_val( const QChar **str, uint *strlength ) // get char value
}
}
else { // not an octal number
v = (((uint)(p->row())) << 8) | ((uint)p->cell());
v = (uint)*p; //(((uint)(p->row())) << 8) | ((uint)p->cell());
}
}
}
} else {
v = (((uint)(p->row())) << 8) | ((uint)p->cell());
v = (uint)*p; //(((uint)(p->row())) << 8) | ((uint)p->cell());
}
*str += len;
*strlength -= len;
......@@ -830,9 +831,9 @@ static uint *dump( uint *p )
{
while ( *p != END ) {
if ( *p & CHR ) {
QChar uc = (QChar)*p;
uchar uc = (uchar)*p;
char c = (char)uc;
uint u = (((uint)(uc.row())) << 8) | ((uint)uc.cell());
uint u = (uint)uc; //(((uint)(uc.row())) << 8) | ((uint)uc.cell());
qDebug( "\tCHR\tU%04x (%c)", u, (c ? c : ' '));
p++;
}
......@@ -854,8 +855,8 @@ static uint *dump( uint *p )
else {
uint from = ( *p & MCD ) >> 16;
uint to = *p & MVL;
char fc = (char)QChar(from);
char tc = (char)QChar(to);
char fc = (char)from;
char tc = (char)to;
qDebug( "\t\tU%04x (%c) - U%04x (%c)", from,
(fc ? fc : ' '), to, (tc ? tc : ' ') );
}
......@@ -923,13 +924,13 @@ void QRegExp::compile()
error = PatOk; // assume pattern is ok
QString pattern;
QCString pattern;
if ( wc )
pattern = wc2rx(rxstring);
else
pattern = rxstring;
const QChar *start = pattern.unicode(); // pattern pointer
const QChar *p = start; // pattern pointer
const char *start = pattern.data(); // pattern pointer
const char *p = start; // pattern pointer
uint pl = pattern.length();
uint *d = rxarray; // data pointer
uint *prev_d = 0;
......
......@@ -39,7 +39,7 @@
#define QREGEXP_H
#ifndef QT_H
#include "qstring.h"
#include "qcstring.h"
#endif // QT_H
......@@ -47,11 +47,11 @@ class Q_EXPORT QRegExp
{
public:
QRegExp();
QRegExp( const QString &, bool caseSensitive=TRUE, bool wildcard=FALSE );
QRegExp( const QCString &, bool caseSensitive=TRUE, bool wildcard=FALSE );
QRegExp( const QRegExp & );
~QRegExp();
QRegExp &operator=( const QRegExp & );
QRegExp &operator=( const QString &pattern );
QRegExp &operator=( const QCString &pattern );
bool operator==( const QRegExp & ) const;
bool operator!=( const QRegExp &r ) const
......@@ -66,22 +66,22 @@ public:
bool wildcard() const { return wc; }
void setWildcard( bool );
QString pattern() const { return rxstring; }
QCString pattern() const { return rxstring; }
// ### in Qt 3.0, provide a real implementation
void setPattern( const QString& pattern )
void setPattern( const QCString& pattern )
{ operator=( pattern ); }
int match( const QString &str, int index=0, int *len=0,
int match( const QCString &str, int index=0, int *len=0,
bool indexIsStart = TRUE ) const;
int find( const QString& str, int index )
int find( const QCString& str, int index )
{ return match( str, index ); }
protected:
void compile();
const QChar *matchstr( uint *, const QChar *, uint, const QChar * ) const;
const char *matchstr( uint *, const char *, uint, const char * ) const;
private:
QString rxstring; // regular expression pattern
QCString rxstring; // regular expression pattern
uint *rxdata; // compiled regexp pattern
int error; // error status
bool cs; // case sensitive
......
......@@ -12657,7 +12657,7 @@ QString &QString::sprintf( const char* cformat, ... )
int len = 0;
int pos;
while ( 1 ) {
pos = escape->match( format, last, &len );
pos = escape->match( cformat, last, &len );
// Non-escaped text
if ( pos > (int)last )
result += format.mid(last,pos-last);
......@@ -12695,15 +12695,15 @@ QString &QString::sprintf( const char* cformat, ... )
// Yes, %-5s really means left adjust in sprintf
if ( wpos < 0 ) {
QRegExp num( QString::fromLatin1("[0-9]+") );
QRegExp dot( QString::fromLatin1("\\.") );
QRegExp num( "[0-9]+" );
QRegExp dot( "\\." );
int nlen;
int p = num.match( f, 0, &nlen );
int q = dot.match( f, 0 );
int p = num.match( f.data(), 0, &nlen );
int q = dot.match( f.data(), 0 );
if ( q < 0 || (p < q && p >= 0) )
width = f.mid( p, nlen ).toInt();
if ( q >= 0 ) {
p = num.match( f, q );
p = num.match( f.data(), q );
// "decimals" is used to specify string truncation
if ( p >= 0 )
decimals = f.mid( p, nlen ).toInt();
......@@ -13633,7 +13633,7 @@ int QString::find( const QRegExp &rx, int index ) const
{
if ( index < 0 )
index += length();
return rx.match( *this, index );
return rx.match( data(), index );
}
/*!
......@@ -13655,7 +13655,7 @@ int QString::findRev( const QRegExp &rx, int index ) const
if ( (uint)index > length() ) // bad index
return -1;
while( index >= 0 ) {
if ( rx.match( *this, index ) == index )
if ( rx.match( data(), index ) == index )
return index;
index--;
}
......@@ -13678,12 +13678,12 @@ int QString::findRev( const QRegExp &rx, int index ) const
int QString::contains( const QRegExp &rx ) const
{
if ( isEmpty() )
return rx.match( *this ) < 0 ? 0 : 1;
return rx.match( data() ) < 0 ? 0 : 1;
int count = 0;
int index = -1;
int len = length();
while ( index < len-1 ) { // count overlapping matches
index = rx.match( *this, index+1 );
index = rx.match( data(), index+1 );
if ( index < 0 )
break;
count++;
......@@ -13719,7 +13719,7 @@ QString &QString::replace( const QRegExp &rx, const QString &str )
int slen = str.length();
int len;
while ( index < (int)length() ) {
index = rx.match( *this, index, &len, FALSE );
index = rx.match( data(), index, &len, FALSE );
if ( index >= 0 ) {
replace( index, len, str );
index += slen;
......
......@@ -184,6 +184,11 @@ QStringList QStringList::split( const QString &sep, const QString &str, bool all
return lst;
}
QStringList QStringList::split( const QCString &sep, const QCString &str, bool allowEmptyEntries )
{
return split(QString(sep.data()),QString(str.data()),allowEmptyEntries);
}
/*!
Splits the string \a str using the regular expression \a sep as separator. Returns the
list of strings. If \a allowEmptyEntries is TRUE, also empty
......@@ -204,7 +209,7 @@ QStringList QStringList::split( const QRegExp &sep, const QString &str, bool all
int j = 0;
int len = 0;
int i = sep.match( str, j, &len );
int i = sep.match( str.data(), j, &len );
while ( i != -1 ) {
if ( str.mid( j, i - j ).length() > 0 )
......@@ -212,7 +217,7 @@ QStringList QStringList::split( const QRegExp &sep, const QString &str, bool all
else if ( allowEmptyEntries )
lst << QString::null;
j = i + len;
i = sep.match( str, j, &len );
i = sep.match( str.data(), j, &len );
}
int l = str.length() - 1;
......
......@@ -64,8 +64,9 @@ public:
void sort();
static QStringList split( const QString &sep, const QString &str, bool allowEmptyEntries = FALSE );
static QStringList split( const QChar &sep, const QString &str, bool allowEmptyEntries = FALSE );
static QStringList split( const QRegExp &sep, const QString &str, bool allowEmptyEntries = FALSE );
static QStringList split( const QCString &sep, const QCString &str, bool allowEmptyEntries = FALSE );
static QStringList split( const QChar &sep, const QString &str, bool allowEmptyEntries = FALSE );
static QStringList split( const QRegExp &sep, const QString &str, bool allowEmptyEntries = FALSE );
QString join( const QString &sep ) const;
QStringList grep( const QString &str, bool cs = TRUE ) const;
......
......@@ -208,6 +208,11 @@ int SCString::find( const char *str, int index, bool cs ) const
return d ? (int)(d - m_data) : -1;
}
int SCString::find( const QCString &str, int index, bool cs ) const
{
return find(str.data(),index,cs);
}
int SCString::find( const QRegExp &rx, int index ) const
{
QString d = QString::fromLatin1( m_data );
......
This diff is collapsed.
......@@ -304,6 +304,7 @@ class ClassDef : public Definition
void addListReferences();
void computeAnchors();
void mergeMembers();
void sortMemberLists();
void distributeMemberGroupDocumentation();
void writeDocumentation(OutputList &ol);
void writeDocumentationForInnerClasses(OutputList &ol);
......
......@@ -159,7 +159,7 @@ CommandMap htmlTagMap[] =
{ "div", HTML_DIV },
{ "c", XML_C },
// { "code", XML_CODE }, <= ambigious <code> is also a HTML tag
// { "code", XML_CODE }, <= ambiguous <code> is also a HTML tag
{ "description", XML_DESCRIPTION },
{ "example", XML_EXAMPLE },
{ "exception", XML_EXCEPTION },
......
......@@ -283,11 +283,13 @@ ClassDef *VariableContext::findVariable(const QCString &name)
{
if (name.isEmpty()) return 0;
ClassDef *result = 0;
QListIterator<Scope> sli(m_scopes);
//QListIterator<Scope> sli(m_scopes);
Scope *scope;
QCString key = name;
// search from inner to outer scope
for (sli.toLast();(scope=sli.current());--sli)
scope = m_scopes.last();
//for (sli.toLast();(scope=sli.current());--sli)
while (scope)
{
result = scope->find(key);
if (result)
......@@ -295,6 +297,7 @@ ClassDef *VariableContext::findVariable(const QCString &name)
DBG_CTX((stderr,"** findVariable(%s)=%p\n",name.data(),result));
return result;
}
scope = m_scopes.prev();
}
// nothing found -> also try the global scope
result=m_globalScope.find(name);
......@@ -835,7 +838,8 @@ static bool getLinkInScope(const QCString &c, // scope
const QCString &m, // member
const char *memberText, // exact text
CodeOutputInterface &ol,
const char *text
const char *text,
bool varOnly=FALSE
)
{
MemberDef *md;
......@@ -843,9 +847,9 @@ static bool getLinkInScope(const QCString &c, // scope
FileDef *fd;
NamespaceDef *nd;
GroupDef *gd;
//fprintf(stderr,"getLinkInScope: trying `%s'::`%s'\n",c.data(),m.data());
//fprintf(stderr,"getLinkInScope: trying `%s'::`%s' varOnly=%d\n",c.data(),m.data(),varOnly);
if (getDefs(c,m,"()",md,cd,fd,nd,gd,FALSE,g_sourceFileDef) &&
md->isLinkable())
md->isLinkable() && (!varOnly || md->isVariable()))
{
if (g_exampleBlock)
{
......@@ -894,18 +898,19 @@ static bool getLinkInScope(const QCString &c, // scope
static bool getLink(const char *className,
const char *memberName,
CodeOutputInterface &ol,
const char *text=0)
const char *text=0,
bool varOnly=FALSE)
{
//printf("getLink(%s,%s) g_curClassName=%s\n",className,memberName,g_curClassName.data());
QCString m=removeRedundantWhiteSpace(memberName);
QCString c=className;
if (!getLinkInScope(c,m,memberName,ol,text))
if (!getLinkInScope(c,m,memberName,ol,text,varOnly))
{
if (!g_curClassName.isEmpty())
{
if (!c.isEmpty()) c.prepend("::");
c.prepend(g_curClassName);
return getLinkInScope(c,m,memberName,ol,text);
return getLinkInScope(c,m,memberName,ol,text,varOnly);
}
return FALSE;
}
......@@ -913,7 +918,7 @@ static bool getLink(const char *className,
}
static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
bool typeOnly=FALSE)
bool typeOnly=FALSE,bool varOnly=FALSE)
{
int i=0;
if (*clName=='~') // correct for matching negated values i.s.o. destructors.
......@@ -953,7 +958,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
//fprintf(stderr,"is found as a type %s\n",cd?cd->name().data():"<null>");
if (cd==0 && md==0) // also see if it is variable or enum or enum value
{
if (getLink(g_classScope,clName,ol,clName))
if (getLink(g_classScope,clName,ol,clName,varOnly))
{
return;
}
......@@ -1031,7 +1036,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
md=0; // variable not accessible
}
}
if (md)
if (md && (!varOnly || md->isVariable()))
{
//fprintf(stderr,"is a global md=%p g_currentDefinition=%s linkable=%d\n",md,g_currentDefinition?g_currentDefinition->name().data():"<none>",md->isLinkable());
if (md->isLinkable())
......@@ -1890,7 +1895,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
{
if (ambig) // multiple input files match the name
{
//printf("===== yes %s is ambigious\n",yytext);
//printf("===== yes %s is ambiguous\n",yytext);
QCString name = convertToQCString(QDir::cleanDirPath(yytext));
if (!name.isEmpty() && g_sourceFileDef)
{
......@@ -2227,6 +2232,9 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
}
<UsingName>{ID}("::"{ID})* { addUsingDirective(yytext);
generateClassOrGlobalLink(*g_code,yytext);
DBG_CTX((stderr,"** scope stack push CLASSBLOCK\n"));
g_scopeStack.push(CLASSBLOCK);
pushScope(yytext);
BEGIN(Body);
}
<UsingName>\n { codifyLines(yytext); BEGIN(Body); }
......@@ -2372,7 +2380,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
}
<Body>{SCOPENAME}/{BN}*[;,)\]] { // "int var;" or "var, var2" or "debug(f) macro"
addType();
generateClassOrGlobalLink(*g_code,yytext/*,TRUE*/);
generateClassOrGlobalLink(*g_code,yytext,FALSE,TRUE);
g_name+=yytext;
}
<Body>{SCOPENAME}/{B}* { // p->func()
......
......@@ -67,6 +67,7 @@ static bool g_specialComment;
static QCString g_aliasString;
static int g_blockCount;
static bool g_lastEscaped;
static int g_lastBlockContext;
static bool g_pythonDocString;
......@@ -696,30 +697,41 @@ void replaceComment(int offset);
g_lastBlockContext=YY_START;
g_blockCount=1;
g_aliasString=yytext;
g_lastEscaped=0;
BEGIN( ReadAliasArgs );
}
<ReadAliasArgs>[^{}\n\*]+ {
<ReadAliasArgs>[^{}\n\\\*]+ {
g_aliasString+=yytext;
g_lastEscaped=FALSE;
}
<ReadAliasArgs>"\\" {
if (g_lastEscaped) g_lastEscaped=FALSE;
else g_lastEscaped=TRUE;
g_aliasString+=yytext;
}
<ReadAliasArgs>\n {
g_aliasString+=yytext;
g_lineNr++;
g_lastEscaped=FALSE;
}
<ReadAliasArgs>"{" {
g_aliasString+=yytext;
g_blockCount++;
if (!g_lastEscaped) g_blockCount++;
g_lastEscaped=FALSE;
}
<ReadAliasArgs>"}" {
g_aliasString+=yytext;
g_blockCount--;
if (!g_lastEscaped) g_blockCount--;
if (g_blockCount==0)
{
replaceAliases(g_aliasString);
BEGIN( g_lastBlockContext );
}
g_lastEscaped=FALSE;
}
<ReadAliasArgs>. {
g_aliasString+=yytext;
g_lastEscaped=FALSE;
}
<ReadLine>. {
copyToOutput(yytext,yyleng);
......
......@@ -722,7 +722,7 @@ which an include is specified. Set to NO to disable this.
If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
of all compounds will be generated. Enable this if the project
contains a lot of classes, structs, unions or interfaces.
' defval='0'/>
' defval='1'/>
<option type='int' id='COLS_IN_ALPHA_INDEX' docs='
If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
......@@ -832,6 +832,14 @@ should uniquely identify the documentation set bundle. This should be a
reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
will append .docset to the name.
' defval='org.doxygen.Project' depends='GENERATE_DOCSET'/>
<option type='string' id='DOCSET_PUBLISHER_ID' format='string' docs='
When GENERATE_DOCSET tag specifies a string that should uniquely identify
the documentation publisher. This should be a reverse domain-name style
string, e.g. com.mycompany.MyDocSet.documentation.
' defval='org.doxygen.Publisher' depends='GENERATE_DOCSET'/>
<option type='string' id='DOCSET_PUBLISHER_NAME' format='string' docs='
The GENERATE_DOCSET tag identifies the documentation publisher.
' defval='Publisher' depends='GENERATE_DOCSET'/>
<option type='bool' id='GENERATE_HTMLHELP' docs='
If the GENERATE_HTMLHELP tag is set to YES, additional index files
will be generated that can be used as input for tools like the
......
......@@ -1028,7 +1028,7 @@ void addConfigOptions(Config *cfg)
"If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index\n"
"of all compounds will be generated. Enable this if the project\n"
"contains a lot of classes, structs, unions or interfaces.",
FALSE
TRUE
);
//----
ci = cfg->addInt(
......@@ -1205,6 +1205,22 @@ void addConfigOptions(Config *cfg)
cs->setDefaultValue("org.doxygen.Project");
cs->addDependency("GENERATE_DOCSET");
//----
cs = cfg->addString(
"DOCSET_PUBLISHER_ID",
"When GENERATE_DOCSET tag specifies a string that should uniquely identify\n"
"the documentation publisher. This should be a reverse domain-name style\n"
"string, e.g. com.mycompany.MyDocSet.documentation."
);
cs->setDefaultValue("org.doxygen.Publisher");
cs->addDependency("GENERATE_DOCSET");
//----
cs = cfg->addString(
"DOCSET_PUBLISHER_NAME",
"The GENERATE_DOCSET tag identifies the documentation publisher."
);
cs->setDefaultValue("Publisher");
cs->addDependency("GENERATE_DOCSET");
//----
cb = cfg->addBool(
"GENERATE_HTMLHELP",
"If the GENERATE_HTMLHELP tag is set to YES, additional index files\n"
......
......@@ -597,8 +597,8 @@ private:
{
type = attributes.value(type_idx);
QRegExp reg_exp(QString("(a?[ybnqiuxdtsogv]|a[{]sv[}])"));
if (reg_exp.match(type))
QRegExp reg_exp(QCString("(a?[ybnqiuxdtsogv]|a[{]sv[}])"));
if (reg_exp.match(type.data()))
{ return type; }
DOC_ERROR(QString("Unnamed complex D-Bus type \"%1\" found.").arg(type));
......
......@@ -35,7 +35,7 @@
#define DEF_DB(x)
inline void writeDEFString(QTextStream &t,const char *s)
inline void writeDEFString(FTextStream &t,const char *s)
{
const char* p=s;
char c;
......@@ -51,7 +51,7 @@ inline void writeDEFString(QTextStream &t,const char *s)
}
void generateDEFForMember(MemberDef *md,
QTextStream &t,
FTextStream &t,
Definition *def,
const char* Prefix)
{
......@@ -312,7 +312,7 @@ void generateDEFForMember(MemberDef *md,
void generateDEFClassSection(ClassDef *cd,
QTextStream &t,
FTextStream &t,
MemberList *ml,
const char *kind)
{
......@@ -331,7 +331,7 @@ void generateDEFClassSection(ClassDef *cd,
}
}
void generateDEFForClass(ClassDef *cd,QTextStream &t)
void generateDEFForClass(ClassDef *cd,FTextStream &t)
{
// + brief description
// + detailed description
......@@ -474,7 +474,7 @@ void generateDEFForClass(ClassDef *cd,QTextStream &t)
}
void generateDEFSection(Definition *d,
QTextStream &t,
FTextStream &t,
MemberList *ml,
const char *kind)
{
......@@ -491,7 +491,7 @@ void generateDEFSection(Definition *d,
}
}
void generateDEFForNamespace(NamespaceDef *nd,QTextStream &t)
void generateDEFForNamespace(NamespaceDef *nd,FTextStream &t)
{
if (nd->isReference()) return; // skip external references
t << " namespace = {" << endl;
......@@ -517,7 +517,7 @@ void generateDEFForNamespace(NamespaceDef *nd,QTextStream &t)
t << " };" << endl;
}
void generateDEFForFile(FileDef *fd,QTextStream &t)
void generateDEFForFile(FileDef *fd,FTextStream &t)
{
if (fd->isReference()) return; // skip external references
......@@ -600,7 +600,7 @@ void generateDEF()
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
QTextStream t(&f);
FTextStream t(&f);
t << "AutoGen Definitions dummy;" << endl;
if (Doxygen::classSDict->count()+Doxygen::inputNameList->count()>0)
......
......@@ -21,7 +21,7 @@
#include <stdlib.h>
#include <qlist.h>
#include <qarray.h>
#include <qtextstream.h>
#include "ftextstream.h"
#include <qfile.h>
#include "diagram.h"
......@@ -142,7 +142,7 @@ static void writeBitmapBox(DiagramItem *di,Image *image,
}
}
static void writeVectorBox(QTextStream &t,DiagramItem *di,
static void writeVectorBox(FTextStream &t,DiagramItem *di,
float x,float y,bool children=FALSE)
{
if (di->virtualness()==Virtual) t << "dashed\n";
......@@ -151,7 +151,7 @@ static void writeVectorBox(QTextStream &t,DiagramItem *di,
if (di->virtualness()==Virtual) t << "solid\n";
}
static void writeMapArea(QTextStream &t,ClassDef *cd,QCString relPath,
static void writeMapArea(FTextStream &t,ClassDef *cd,QCString relPath,
int x,int y,int w,int h)
{
if (cd->isLinkable())
......@@ -161,7 +161,7 @@ static void writeMapArea(QTextStream &t,ClassDef *cd,QCString relPath,
t << "<area ";
if (!ref.isEmpty())
{
t << "doxygen=\"" << ref << ":";
t << "target=\"_blank\" doxygen=\"" << ref << ":";
if ((dest=Doxygen::tagDestinationDict[ref])) t << *dest << "/";
t << "\" ";
}
......@@ -485,7 +485,7 @@ void TreeDiagram::computeExtremes(uint *maxLabelLen,uint *maxXPos)
if (maxXPos) *maxXPos=mx;
}
void TreeDiagram::drawBoxes(QTextStream &t,Image *image,
void TreeDiagram::drawBoxes(FTextStream &t,Image *image,
bool doBase,bool bitmap,
uint baseRows,uint superRows,
uint cellWidth,uint cellHeight,
......@@ -616,7 +616,7 @@ void TreeDiagram::drawBoxes(QTextStream &t,Image *image,
}
}
void TreeDiagram::drawConnectors(QTextStream &t,Image *image,
void TreeDiagram::drawConnectors(FTextStream &t,Image *image,
bool doBase,bool bitmap,
uint baseRows,uint superRows,
uint cellWidth,uint cellHeight)
......@@ -968,7 +968,7 @@ ClassDiagram::~ClassDiagram()
delete super;
}
void ClassDiagram::writeFigure(QTextStream &output,const char *path,
void ClassDiagram::writeFigure(FTextStream &output,const char *path,
const char *fileName) const
{
uint baseRows=base->computeRows();
......@@ -1018,7 +1018,7 @@ void ClassDiagram::writeFigure(QTextStream &output,const char *path,
err("Could not open file %s for writing\n",convertToQCString(f1.name()).data());
exit(1);
}
QTextStream t(&f1);
FTextStream t(&f1);
//printf("writeEPS() rows=%d cols=%d\n",rows,cols);
......@@ -1262,7 +1262,7 @@ void ClassDiagram::writeFigure(QTextStream &output,const char *path,
}
void ClassDiagram::writeImage(QTextStream &t,const char *path,
void ClassDiagram::writeImage(FTextStream &t,const char *path,
const char *relPath,const char *fileName,
bool generateMap) const
{
......
......@@ -25,6 +25,7 @@ class TreeDiagram;
class ClassDiagram;
class DiagramItemList;
class Image;
class FTextStream;
class DiagramItem
{
......@@ -101,13 +102,13 @@ class TreeDiagram : public QList<DiagramRow>
//uint computeCols();
void moveChildren(DiagramItem *root,int dx);
void computeExtremes(uint *labelWidth,uint *xpos);
void drawBoxes(QTextStream &t,Image *image,
void drawBoxes(FTextStream &t,Image *image,
bool doBase,bool bitmap,
uint baseRows,uint superRows,
uint cellWidth,uint cellHeight,
QCString relPath="",
bool generateMap=TRUE);
void drawConnectors(QTextStream &t,Image *image,
void drawConnectors(FTextStream &t,Image *image,
bool doBase,bool bitmap,
uint baseRows,uint superRows,
uint cellWidth,uint cellheight);
......@@ -122,9 +123,9 @@ class ClassDiagram
public:
ClassDiagram(ClassDef *root);
~ClassDiagram();
void writeFigure(QTextStream &t,const char *path,
void writeFigure(FTextStream &t,const char *path,
const char *file) const;
void writeImage(QTextStream &t,const char *path,const char *relPath,
void writeImage(FTextStream &t,const char *path,const char *relPath,
const char *file,bool generateMap=TRUE) const;
private:
TreeDiagram *base;
......
......@@ -9,6 +9,7 @@
#include "message.h"
#include "dot.h"
#include "layout.h"
#include "ftextstream.h"
//----------------------------------------------------------------------
// method implementation
......@@ -662,7 +663,7 @@ DirDef *DirDef::mergeDirectoryInTree(const QCString &path)
return dir;
}
void DirDef::writeDepGraph(QTextStream &t)
void DirDef::writeDepGraph(FTextStream &t)
{
writeDotDirDepGraph(t,this);
}
......
......@@ -30,7 +30,7 @@ class QStrList;
class FileDef;
class OutputList;
class UsedDir;
class QTextStream;
class FTextStream;
class DirDef;
......@@ -69,7 +69,7 @@ class DirDef : public Definition
// generate output
void writeDocumentation(OutputList &ol);
void writeDepGraph(QTextStream &t);
void writeDepGraph(FTextStream &t);
static DirDef *mergeDirectoryInTree(const QCString &path);
bool visited;
......
This diff is collapsed.
This diff is collapsed.
......@@ -44,6 +44,10 @@ void DocSets::initialize()
if (bundleId.isEmpty()) bundleId="org.doxygen.Project";
QCString feedName = Config_getString("DOCSET_FEEDNAME");
if (feedName.isEmpty()) feedName="FeedName";
QCString publisherId = Config_getString("DOCSET_PUBLISHER_ID");
if (publisherId.isEmpty()) publisherId="PublisherId";
QCString publisherName = Config_getString("DOCSET_PUBLISHER_NAME");
if (publisherName.isEmpty()) publisherName="PublisherName";
// -- write Makefile
{
......@@ -54,8 +58,7 @@ void DocSets::initialize()
err("Could not open file %s for writing\n",mfName.data());
exit(1);
}
QTextStream ts(&makefile);
ts.setEncoding(QTextStream::UnicodeUTF8);
FTextStream ts(&makefile);
ts << "DOCSET_NAME=" << bundleId << ".docset\n"
"DOCSET_CONTENTS=$(DOCSET_NAME)/Contents\n"
......@@ -103,8 +106,7 @@ void DocSets::initialize()
err("Could not open file %s for writing\n",plName.data());
exit(1);
}
QTextStream ts(&plist);
ts.setEncoding(QTextStream::UnicodeUTF8);
FTextStream ts(&plist);
ts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"\n"
......@@ -117,6 +119,10 @@ void DocSets::initialize()
" <string>" << bundleId << ".docset</string>\n"
" <key>DocSetFeedName</key>\n"
" <string>" << feedName << "</string>\n"
" <key>DocSetPublisherIdentifier</key>\n"
" <string>" << publisherId << "</string>\n"
" <key>DocSetPublisherName</key>\n"
" <string>" << publisherName << "</string>\n"
"</dict>\n"
"</plist>\n";
}
......@@ -131,7 +137,6 @@ void DocSets::initialize()
}
QCString indexName=Config_getBool("GENERATE_TREEVIEW")?"main":"index";
m_nts.setDevice(m_nf);
m_nts.setEncoding(QTextStream::UnicodeUTF8);
m_nts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
m_nts << "<DocSetNodes version=\"1.0\">" << endl;
m_nts << " <TOC>" << endl;
......@@ -151,7 +156,6 @@ void DocSets::initialize()
exit(1);
}
m_tts.setDevice(m_tf);
m_tts.setEncoding(QTextStream::UnicodeUTF8);
m_tts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
m_tts << "<Tokens version=\"1.0\">" << endl;
}
......@@ -218,12 +222,11 @@ void DocSets::addContentsItem(bool isDir,
m_firstNode.at(m_dc-1)=FALSE;
m_nts << indent() << " <Node>" << endl;
m_nts << indent() << " <Name>" << convertToXML(name) << "</Name>" << endl;
m_nts << indent() << " <Path>" << file << Doxygen::htmlFileExtension;
m_nts << indent() << " <Path>" << file << Doxygen::htmlFileExtension << "</Path>" << endl;
if (anchor)
{
m_nts << "#" << anchor;
m_nts << indent() << " <Anchor>" << anchor << "</Anchor>" << endl;
}
m_nts << "</Path>" << endl;
}
}
......@@ -409,7 +412,7 @@ void DocSets::addIndexItem(Definition *context,MemberDef *md,
}
}
void DocSets::writeToken(QTextStream &t,
void DocSets::writeToken(FTextStream &t,
const Definition *d,
const QCString &type,
const QCString &lang,
......
......@@ -17,10 +17,9 @@
#define DOCSETS_H
#include "qtbc.h"
#include <qtextstream.h>
#include <qstrlist.h>
#include "sortdict.h"
#include "ftextstream.h"
#include "index.h"
class QFile;
......@@ -56,7 +55,7 @@ class DocSets : public IndexIntf
void addStyleSheetFile(const char *) {}
private:
void writeToken(QTextStream &t, const Definition *d,
void writeToken(FTextStream &t, const Definition *d,
const QCString &type, const QCString &lang,
const char *scope=0, const char *anchor=0,
const char *decl=0);
......@@ -75,8 +74,8 @@ class DocSets : public IndexIntf
QCString indent();
QFile *m_nf;
QFile *m_tf;
QTextStream m_nts;
QTextStream m_tts;
FTextStream m_nts;
FTextStream m_tts;
int m_dc;
int m_id;
QArray<bool> m_firstNode;
......
......@@ -19,7 +19,7 @@
#ifndef _DOCTOKENIZER_H
#define _DOCTOKENIZER_H
#include <qstring.h>
#include <qcstring.h>
#include <qlist.h>
#include "htmlattrib.h"
......@@ -68,10 +68,10 @@ struct TokenInfo
char unknownChar;
// command token
QString name;
QCString name;
// command text (RCS tag)
QString text;
QCString text;
// comment blocks
......@@ -80,14 +80,14 @@ struct TokenInfo
int indent;
// sections
QString sectionId;
QCString sectionId;
// simple section
QString simpleSectName;
QString simpleSectText;
QCString simpleSectName;
QCString simpleSectText;
// verbatim fragment
QString verb;
QCString verb;
// xrefitem
int id;
......@@ -98,7 +98,7 @@ struct TokenInfo
bool emptyTag;
// whitespace
QString chars;
QCString chars;
// url
bool isEMailAddr;
......
......@@ -42,7 +42,7 @@ static int g_commentState;
TokenInfo *g_token = 0;
static int g_inputPos = 0;
static const char *g_inputString;
static QString g_fileName;
static QCString g_fileName;
static bool g_insidePre;
// context for section finding phase
......@@ -256,7 +256,7 @@ static void handleHtmlTag()
}
}
static QString stripEmptyLines(const char *s)
static QCString stripEmptyLines(const char *s)
{
int result=0,p=0;
for (;;)
......@@ -382,14 +382,14 @@ REFWORD {LABELID}|{REFWORD2}
%%
<St_Para>\r /* skip carriage return */
<St_Para>^{LISTITEM} { /* list item */
QString text=yytext;
QCString text=yytext;
int dashPos = text.findRev('-');
g_token->isEnumList = text.at(dashPos+1)=='#';
g_token->indent = computeIndent(yytext,dashPos);
return TK_LISTITEM;
}
<St_Para>{BLANK}*\n{LISTITEM} { /* list item on next line */
QString text=yytext;
QCString text=yytext;
text=text.right(text.length()-text.find('\n')-1);
int dashPos = text.findRev('-');
g_token->isEnumList = text.at(dashPos+1)=='#';
......@@ -397,12 +397,12 @@ REFWORD {LABELID}|{REFWORD2}
return TK_LISTITEM;
}
<St_Para>^{ENDLIST} { /* end list */
int dotPos = QString(yytext).findRev('.');
int dotPos = QCString(yytext).findRev('.');
g_token->indent = computeIndent(yytext,dotPos);
return TK_ENDLIST;
}
<St_Para>{BLANK}*\n{ENDLIST} { /* end list on next line */
QString text=yytext;
QCString text=yytext;
text=text.right(text.length()-text.find('\n')-1);
int dotPos = text.findRev('.');
g_token->indent = computeIndent(text,dotPos);
......@@ -422,7 +422,7 @@ REFWORD {LABELID}|{REFWORD2}
<St_Para>{SPCMD3} {
g_token->name = "form";
bool ok;
g_token->id = QString(yytext).right(yyleng-6).toInt(&ok);
g_token->id = QCString(yytext).right(yyleng-6).toInt(&ok);
ASSERT(ok);
return TK_COMMAND;
}
......@@ -435,7 +435,7 @@ REFWORD {LABELID}|{REFWORD2}
}
<St_Para>{PARAMIO} { /* param [in,out] command */
g_token->name = "param";
QString s(yytext);
QCString s(yytext);
bool isIn = s.find("in")!=-1;
bool isOut = s.find("out")!=-1;
if (isIn)
......@@ -470,7 +470,7 @@ REFWORD {LABELID}|{REFWORD2}
return TK_URL;
}
<St_Para>"$"{ID}":"[^\n$]+"$" { /* RCS tag */
QString tagName(yytext+1);
QCString tagName(yytext+1);
int index=tagName.find(':');
g_token->name = tagName.left(index+1);
g_token->text = tagName.mid(index+2,tagName.length()-index-3);
......@@ -774,7 +774,7 @@ REFWORD {LABELID}|{REFWORD2}
BEGIN(St_XRefItem2);
}
<St_XRefItem2>[0-9]+"." {
QString numStr=yytext;
QCString numStr=yytext;
numStr=numStr.left(yyleng-1);
g_token->id=numStr.toInt();
return RetVal_OK;
......@@ -802,7 +802,7 @@ REFWORD {LABELID}|{REFWORD2}
return TK_WORD;
}
<St_File>"\""[^\n\"]+"\"" {
QString text=yytext;
QCString text=yytext;
g_token->name = text.mid(1,text.length()-2);
return TK_WORD;
}
......
This diff is collapsed.
......@@ -26,7 +26,7 @@
class ClassDef;
class FileDef;
class QTextStream;
class FTextStream;
class DotNodeList;
class ClassSDict;
class MemberDef;
......@@ -72,12 +72,12 @@ class DotNode
void removeChild(DotNode *n);
void removeParent(DotNode *n);
int findParent( DotNode *n );
void write(QTextStream &t,GraphType gt,GraphOutputFormat f,
void write(FTextStream &t,GraphType gt,GraphOutputFormat f,
bool topDown,bool toChildren,bool backArrows,bool reNumber);
int m_subgraphId;
void clearWriteFlag();
void writeXML(QTextStream &t,bool isClassGraph);
void writeDEF(QTextStream &t);
void writeXML(FTextStream &t,bool isClassGraph);
void writeDEF(FTextStream &t);
QCString label() const { return m_label; }
int number() const { return m_number; }
bool isVisible() const { return m_visible; }
......@@ -86,9 +86,9 @@ class DotNode
private:
void colorConnectedNodes(int curColor);
void writeBox(QTextStream &t,GraphType gt,GraphOutputFormat f,
void writeBox(FTextStream &t,GraphType gt,GraphOutputFormat f,
bool hasNonReachableChildren, bool reNumber=FALSE);
void writeArrow(QTextStream &t,GraphType gt,GraphOutputFormat f,DotNode *cn,
void writeArrow(FTextStream &t,GraphType gt,GraphOutputFormat f,DotNode *cn,
EdgeInfo *ei,bool topDown, bool pointBack=TRUE, bool reNumber=FALSE);
void setDistance(int distance);
const DotNode *findDocNode() const; // only works for acyclic graphs!
......@@ -139,7 +139,7 @@ class DotGfxHierarchyTable
public:
DotGfxHierarchyTable();
~DotGfxHierarchyTable();
void writeGraph(QTextStream &t,const char *path) const;
void writeGraph(FTextStream &t,const char *path) const;
private:
void addHierarchy(DotNode *n,ClassDef *cd,bool hide);
......@@ -159,11 +159,11 @@ class DotClassGraph
~DotClassGraph();
bool isTrivial() const;
bool isTooBig() const;
QCString writeGraph(QTextStream &t,GraphOutputFormat f,const char *path,
QCString writeGraph(FTextStream &t,GraphOutputFormat f,const char *path,
const char *relPath, bool TBRank=TRUE,bool imageMap=TRUE) const;
void writeXML(QTextStream &t);
void writeDEF(QTextStream &t);
void writeXML(FTextStream &t);
void writeDEF(FTextStream &t);
QCString diskName() const;
private:
......@@ -188,13 +188,13 @@ class DotInclDepGraph
public:
DotInclDepGraph(FileDef *fd,bool inverse);
~DotInclDepGraph();
QCString writeGraph(QTextStream &t, GraphOutputFormat f,const char *path,
QCString writeGraph(FTextStream &t, GraphOutputFormat f,const char *path,
const char *relPath,
bool writeImageMap=TRUE) const;
bool isTrivial() const;
bool isTooBig() const;
QCString diskName() const;
void writeXML(QTextStream &t);
void writeXML(FTextStream &t);
private:
void buildGraph(DotNode *n,FileDef *fd,int distance);
......@@ -215,7 +215,7 @@ class DotCallGraph
public:
DotCallGraph(MemberDef *md,bool inverse);
~DotCallGraph();
QCString writeGraph(QTextStream &t, GraphOutputFormat f,
QCString writeGraph(FTextStream &t, GraphOutputFormat f,
const char *path,const char *relPath,bool writeImageMap=TRUE) const;
void buildGraph(DotNode *n,MemberDef *md,int distance);
bool isTrivial() const;
......@@ -241,7 +241,7 @@ class DotDirDeps
DotDirDeps(DirDef *dir);
~DotDirDeps();
bool isTrivial() const;
QCString writeGraph(QTextStream &out,
QCString writeGraph(FTextStream &out,
GraphOutputFormat format,
const char *path,
const char *relPath,
......@@ -284,12 +284,12 @@ class DotGroupCollaboration
EdgeType eType;
QList<Link> links;
void write( QTextStream &t ) const;
void write( FTextStream &t ) const;
};
DotGroupCollaboration(GroupDef* gd);
~DotGroupCollaboration();
QCString writeGraph(QTextStream &t, GraphOutputFormat format,
QCString writeGraph(FTextStream &t, GraphOutputFormat format,
const char *path,const char *relPath,
bool writeImageMap=TRUE) const;
void buildGraph(GroupDef* gd);
......@@ -297,7 +297,7 @@ class DotGroupCollaboration
private :
void addCollaborationMember( Definition* def, QCString& url, EdgeType eType );
void addMemberList( class MemberList* ml );
void writeGraphHeader(QTextStream &t) const;
void writeGraphHeader(FTextStream &t) const;
Edge* addEdge( DotNode* _pNStart, DotNode* _pNEnd, EdgeType _eType,
const QCString& _label, const QCString& _url );
......@@ -338,9 +338,9 @@ void generateGraphLegend(const char *path);
void writeDotGraphFromFile(const char *inFile,const char *outDir,
const char *outFile,GraphOutputFormat format);
QString getDotImageMapFromFile(const QString& inFile, const QString& outDir,
const QCString& relPath,const QString &context);
QCString getDotImageMapFromFile(const QCString& inFile, const QCString& outDir,
const QCString& relPath,const QCString &context);
void writeDotDirDepGraph(QTextStream &t,DirDef *dd);
void writeDotDirDepGraph(FTextStream &t,DirDef *dd);
#endif
......@@ -680,7 +680,7 @@ static void buildFileList(EntryNav *rootNav)
"the second argument in the \\file statement ",
root->name.data()
);
if (ambig) // name is ambigious
if (ambig) // name is ambiguous
{
text+="matches the following input files:\n";
text+=showFileDefMatches(Doxygen::inputNameDict,root->name);
......@@ -736,7 +736,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
"the argument of the \\class, \\struct, \\union, or \\include command ",
includeFile.data()
);
if (ambig) // name is ambigious
if (ambig) // name is ambiguous
{
text+="matches the following input files:\n";
text+=showFileDefMatches(Doxygen::inputNameDict,root->includeFile);
......@@ -2072,7 +2072,7 @@ static MemberDef *addVariableToFile(
{
if (!root->type.isEmpty() && !root->name.isEmpty())
{
if (name.at(0)=='@') // dummy variable representing annonymous union
if (name.at(0)=='@') // dummy variable representing anonymous union
def=root->type;
else
def=root->type+" "+name+root->args;
......@@ -2479,8 +2479,8 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
{
MemberDef *md=0;
// if cd is an annonymous scope we insert the member
// into a non-annonymous scope as well. This is needed to
// if cd is an anonymous scope we insert the member
// into a non-anonymous scope as well. This is needed to
// be able to refer to it using \var or \fn
//int indentDepth=0;
......@@ -4411,7 +4411,7 @@ static void findInheritedTemplateInstances()
for (;(rootNav=edi.current());++edi)
{
ClassDef *cd;
// strip any annonymous scopes first
// strip any anonymous scopes first
QCString bName=stripAnonymousNamespaceScope(rootNav->name());
bName=stripTemplateSpecifiersFromScope(bName);
Debug::print(Debug::Classes,0," Inheritance: Class %s : \n",bName.data());
......@@ -4434,7 +4434,7 @@ static void findUsedTemplateInstances()
for (;(rootNav=edi.current());++edi)
{
ClassDef *cd;
// strip any annonymous scopes first
// strip any anonymous scopes first
QCString bName=stripAnonymousNamespaceScope(rootNav->name());
bName=stripTemplateSpecifiersFromScope(bName);
Debug::print(Debug::Classes,0," Usage: Class %s : \n",bName.data());
......@@ -4460,7 +4460,7 @@ static void computeClassRelations()
rootNav->loadEntry(g_storage);
Entry *root = rootNav->entry();
// strip any annonymous scopes first
// strip any anonymous scopes first
QCString bName=stripAnonymousNamespaceScope(rootNav->name());
bName=stripTemplateSpecifiersFromScope(bName);
Debug::print(Debug::Classes,0," Relations: Class %s : \n",bName.data());
......@@ -4500,7 +4500,7 @@ static void computeTemplateClassRelations()
QCString bName=stripAnonymousNamespaceScope(root->name);
bName=stripTemplateSpecifiersFromScope(bName);
ClassDef *cd=getClass(bName);
// strip any annonymous scopes first
// strip any anonymous scopes first
QDict<ClassDef> *templInstances = 0;
if (cd && (templInstances=cd->getTemplateInstances()))
{
......@@ -7219,6 +7219,48 @@ static void addSourceReferences()
}
}
//----------------------------------------------------------------------------
static void sortMemberLists()
{
// sort class member lists
ClassSDict::Iterator cli(*Doxygen::classSDict);
ClassDef *cd=0;
for (cli.toFirst();(cd=cli.current());++cli)
{
cd->sortMemberLists();
}
// sort namespace member lists
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
NamespaceDef *nd=0;
for (nli.toFirst();(nd=nli.current());++nli)
{
nd->sortMemberLists();
}
// sort file member lists
FileNameListIterator fnli(*Doxygen::inputNameList);
FileName *fn;
for (;(fn=fnli.current());++fnli)
{
FileNameIterator fni(*fn);
FileDef *fd;
for (;(fd=fni.current());++fni)
{
fd->sortMemberLists();
}
}
// sort group member lists
GroupSDict::Iterator gli(*Doxygen::groupSDict);
GroupDef *gd;
for (gli.toFirst();(gd=gli.current());++gli)
{
gd->sortMemberLists();
}
}
//----------------------------------------------------------------------------
// generate the documentation of all classes
......@@ -8053,7 +8095,7 @@ static void buildExampleList(EntryNav *rootNav)
{
PageDef *pd=new PageDef(root->fileName,root->startLine,
root->name,root->brief+root->doc+root->inbodyDocs,root->args);
pd->setFileName(convertNameToFile(pd->name()+"-example"));
pd->setFileName(convertNameToFile(pd->name()+"-example",FALSE,TRUE));
pd->addSectionsToDefinition(root->anchors);
//pi->addSections(root->anchors);
......@@ -9445,7 +9487,7 @@ void readConfiguration(int argc, char **argv)
/* Perlmod wants to know the path to the config file.*/
QFileInfo configFileInfo(configName);
setPerlModDoxyfile(configFileInfo.absFilePath());
setPerlModDoxyfile(configFileInfo.absFilePath().data());
}
......@@ -10126,6 +10168,9 @@ void parseInput()
addListReferences();
generateXRefPages();
msg("Sorting member lists...\n");
sortMemberLists();
if (Config_getBool("SHOW_DIRECTORIES") && Config_getBool("DIRECTORY_GRAPH"))
{
msg("Computing dependencies between directories...\n");
......@@ -10194,7 +10239,7 @@ void generateOutput()
if (generateEclipseHelp) Doxygen::indexList.addIndex(new EclipseHelp);
if (generateHtmlHelp) Doxygen::indexList.addIndex(new HtmlHelp);
if (generateQhp) Doxygen::indexList.addIndex(new Qhp);
if (generateTreeView) Doxygen::indexList.addIndex(new FTVHelp);
if (generateTreeView) Doxygen::indexList.addIndex(new FTVHelp(TRUE));
if (generateDocSet) Doxygen::indexList.addIndex(new DocSets);
Doxygen::indexList.initialize();
Doxygen::indexList.addImageFile("tab_r.gif");
......@@ -10398,6 +10443,7 @@ void generateOutput()
// FTVHelp::getInstance()->finalize();
//}
msg("finalizing index lists...\n");
Doxygen::indexList.finalize();
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
......@@ -10476,6 +10522,10 @@ void generateOutput()
portable_getSysElapsedTime()
);
}
else
{
msg("finished...\n");
}
/**************************************************************************
* Start cleaning up *
......
......@@ -153,6 +153,15 @@ div.ah {
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px
padding: .2em;
border: solid thin #333;
border-radius: .5em;
-webkit-border-radius: .5em;
-moz-border-radius: .5em;
-webkit-box-shadow: 2px 2px 3px #999;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
}
div.groupHeader {
......@@ -325,6 +334,11 @@ hr.footer {
/* @group Member Descriptions */
table.memberdecls {
border-spacing: 0px;
padding: 0px;
}
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
......@@ -592,19 +606,19 @@ table.doxtable th {
list-style-type:none;
float:left;
padding-left:10px;
padding-right: 15px;
background-image:url('bc_s.png');
background-repeat:no-repeat;
background-position:right;
color:##45;
}
.navpath a
{
height:32px;
display:block;
background-image:url('bc_s.png');
background-repeat:no-repeat;
background-position:right;
padding-right: 15px;
text-decoration: none;
outline: none;
color:##45;
}
.navpath a:hover
......
......@@ -153,6 +153,15 @@
" color: #ffffff;\n"
" margin-bottom: 3px;\n"
" margin-top: 3px\n"
" padding: .2em;\n"
" border: solid thin #333;\n"
" border-radius: .5em;\n"
" -webkit-border-radius: .5em;\n"
" -moz-border-radius: .5em;\n"
" -webkit-box-shadow: 2px 2px 3px #999;\n"
" -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n"
" background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));\n"
" background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);\n"
"}\n"
"\n"
"div.groupHeader {\n"
......@@ -325,6 +334,11 @@
"\n"
"/* @group Member Descriptions */\n"
"\n"
"table.memberdecls {\n"
" border-spacing: 0px;\n"
" padding: 0px;\n"
"}\n"
"\n"
".mdescLeft, .mdescRight,\n"
".memItemLeft, .memItemRight,\n"
".memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n"
......@@ -592,19 +606,19 @@
" list-style-type:none;\n"
" float:left;\n"
" padding-left:10px;\n"
" padding-right: 15px;\n"
" background-image:url('bc_s.png');\n"
" background-repeat:no-repeat;\n"
" background-position:right;\n"
" color:##45;\n"
"}\n"
"\n"
".navpath a\n"
"{\n"
" height:32px;\n"
" display:block;\n"
" background-image:url('bc_s.png');\n"
" background-repeat:no-repeat;\n"
" background-position:right;\n"
" padding-right: 15px;\n"
" text-decoration: none;\n"
" outline: none;\n"
" color:##45;\n"
"}\n"
"\n"
".navpath a:hover\n"
......
......@@ -76,7 +76,7 @@ void EclipseHelp::initialize()
// -- initialize its text stream
m_tocstream.setDevice(m_tocfile);
m_tocstream.setEncoding(QTextStream::UnicodeUTF8);
//m_tocstream.setEncoding(FTextStream::UnicodeUTF8);
// -- write the opening tag
QCString title = Config_getString("PROJECT_NAME");
......@@ -112,7 +112,7 @@ void EclipseHelp::finalize()
if (pluginFile.open(IO_WriteOnly))
{
QString docId = Config_getString("ECLIPSE_DOC_ID");
QTextStream t(&pluginFile);
FTextStream t(&pluginFile);
t << "<plugin name=\"" << docId << "\" id=\"" << docId << "\"" << endl;
t << " version=\"1.0.0\" provider-name=\"Doxygen\">" << endl;
t << " <extension point=\"org.eclipse.help.toc\">" << endl;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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