Commit 0fb3f32d authored by dimitri's avatar dimitri

Release-1.6.3-20100507

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