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

Release-1.3.4-20031026

parent 2fe3e7d1
DOXYGEN Version 1.3.4-20031019 DOXYGEN Version 1.3.4-20031026
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 (19 October 2003) Dimitri van Heesch (26 October 2003)
...@@ -8,6 +8,7 @@ clean: FORCE ...@@ -8,6 +8,7 @@ clean: FORCE
cd qtools ; $(MAKE) clean cd qtools ; $(MAKE) clean
cd src ; $(MAKE) clean cd src ; $(MAKE) clean
cd libpng ; $(MAKE) clean cd libpng ; $(MAKE) clean
cd libmd5 ; $(MAKE) clean
cd addon/doxywizard ; $(MAKE) clean cd addon/doxywizard ; $(MAKE) clean
cd addon/doxmlparser/src ; $(MAKE) clean cd addon/doxmlparser/src ; $(MAKE) clean
cd addon/doxmlparser/test ; $(MAKE) clean cd addon/doxmlparser/test ; $(MAKE) clean
...@@ -18,6 +19,7 @@ clean: FORCE ...@@ -18,6 +19,7 @@ clean: FORCE
distclean: clean distclean: clean
cd src ; $(MAKE) distclean cd src ; $(MAKE) distclean
cd libpng ; $(MAKE) distclean cd libpng ; $(MAKE) distclean
cd libmd5 ; $(MAKE) distclean
cd addon/doxywizard ; $(MAKE) distclean cd addon/doxywizard ; $(MAKE) distclean
cd addon/doxmlparser/src ; $(MAKE) distclean cd addon/doxmlparser/src ; $(MAKE) distclean
cd addon/doxmlparser/test ; $(MAKE) distclean cd addon/doxmlparser/test ; $(MAKE) distclean
...@@ -30,9 +32,10 @@ distclean: clean ...@@ -30,9 +32,10 @@ distclean: clean
-rm -f src/Makefile.doxygen src/Makefile.libdoxygen -rm -f src/Makefile.doxygen src/Makefile.libdoxygen
-rm -f src/Makefile.doxytag src/Makefile.libdoxycfg -rm -f src/Makefile.doxytag src/Makefile.libdoxycfg
-rm -f libpng/Makefile.libpng -rm -f libpng/Makefile.libpng
-rm -f libmd5/Makefile.libmd5
-rm -f Makefile qtools/Makefile src/Makefile examples/Makefile doc/Makefile -rm -f Makefile qtools/Makefile src/Makefile examples/Makefile doc/Makefile
-rm -f .makeconfig .tmakeconfig -rm -f .makeconfig .tmakeconfig
-rm -f src/doxygen.pro src/libdoxygen.pro src/doxytag.pro qtools/qtools.pro src/libdoxycfg.pro libpng/libpng.pro -rm -f src/doxygen.pro src/libdoxygen.pro src/doxytag.pro qtools/qtools.pro src/libdoxycfg.pro libpng/libpng.pro libmd5/libmd5.pro
-rm -f src/version.cpp -rm -f src/version.cpp
-rm -r addon/doxywizard/Makefile -rm -r addon/doxywizard/Makefile
-rm -f addon/doxywizard/Makefile.doxywizard -rm -f addon/doxywizard/Makefile.doxywizard
...@@ -71,7 +74,7 @@ pdf: docs ...@@ -71,7 +74,7 @@ pdf: docs
cd latex ; $(MAKE) cd latex ; $(MAKE)
archive: clean archive: clean
tar zcvf dx`date +%y%m%d`.tgz Doxyfile libpng addon tmake doc wintools examples bin lib objects \ tar zcvf dx`date +%y%m%d`.tgz Doxyfile libpng libmd5 addon tmake doc wintools examples bin lib objects \
qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \ qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \
Makefile.win_make.in INSTALL make.bat LANGUAGE.HOWTO LICENSE PLATFORMS \ Makefile.win_make.in INSTALL make.bat LANGUAGE.HOWTO LICENSE PLATFORMS \
VERSION packages VERSION packages
......
all: src\version.cpp all: src\version.cpp
set TMAKEPATH=$(TMAKEPATH) & cd qtools & $(MAKE) set TMAKEPATH=$(TMAKEPATH) & cd qtools & $(MAKE)
set TMAKEPATH=$(TMAKEPATH) & cd libpng & $(MAKE) set TMAKEPATH=$(TMAKEPATH) & cd libpng & $(MAKE)
set TMAKEPATH=$(TMAKEPATH) & cd libmd5 & $(MAKE)
set TMAKEPATH=$(TMAKEPATH) & cd src & $(MAKE) set TMAKEPATH=$(TMAKEPATH) & cd src & $(MAKE)
clean: clean:
......
...@@ -6,6 +6,9 @@ all: src\version.cpp ...@@ -6,6 +6,9 @@ all: src\version.cpp
cd libpng cd libpng
$(MAKE) $(MAKE)
cd .. cd ..
cd libmd5
$(MAKE)
cd ..
cd src cd src
$(MAKE) $(MAKE)
......
DOXYGEN Version 1.3.4_20031019 DOXYGEN Version 1.3.4_20031026
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) (19 October 2003) Dimitri van Heesch (dimitri@stack.nl) (26 October 2003)
1.3.4-20031019 1.3.4-20031026
...@@ -427,7 +427,7 @@ TMAKE_CXXFLAGS += -DENGLISH_ONLY ...@@ -427,7 +427,7 @@ TMAKE_CXXFLAGS += -DENGLISH_ONLY
EOF EOF
fi fi
f_inmakefiles="Makefile.in qtools/Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in addon/doxywizard/Makefile.in addon/doxmlparser/src/Makefile.in addon/doxmlparser/test/Makefile.in addon/doxmlparser/examples/metrics/Makefile.in libpng/Makefile.in" f_inmakefiles="Makefile.in qtools/Makefile.in src/Makefile.in examples/Makefile.in doc/Makefile.in addon/doxywizard/Makefile.in addon/doxmlparser/src/Makefile.in addon/doxmlparser/test/Makefile.in addon/doxmlparser/examples/metrics/Makefile.in libpng/Makefile.in libmd5/Makefile.in"
for i in $f_inmakefiles ; do for i in $f_inmakefiles ; do
SRC=$i SRC=$i
...@@ -445,6 +445,7 @@ EOF ...@@ -445,6 +445,7 @@ EOF
echo "all: src/version.cpp " >> $DST echo "all: src/version.cpp " >> $DST
echo " \$(MAKE) -C qtools" >> $DST echo " \$(MAKE) -C qtools" >> $DST
echo " \$(MAKE) -C libpng" >> $DST echo " \$(MAKE) -C libpng" >> $DST
echo " \$(MAKE) -C libmd5" >> $DST
echo " \$(MAKE) -C src" >> $DST echo " \$(MAKE) -C src" >> $DST
if test $f_wizard = YES; then if test $f_wizard = YES; then
echo " \$(MAKE) -C addon/doxywizard" >> $DST echo " \$(MAKE) -C addon/doxywizard" >> $DST
...@@ -460,7 +461,7 @@ EOF ...@@ -460,7 +461,7 @@ EOF
echo " Created $DST from $SRC..." echo " Created $DST from $SRC..."
done done
f_inprofiles="qtools/qtools.pro.in src/libdoxygen.pro.in src/libdoxycfg.pro.in src/doxygen.pro.in src/doxytag.pro.in addon/doxywizard/doxywizard.pro.in addon/doxmlparser/src/doxmlparser.pro.in addon/doxmlparser/test/xmlparse.pro.in addon/doxmlparser/examples/metrics/metrics.pro.in libpng/libpng.pro.in" f_inprofiles="qtools/qtools.pro.in src/libdoxygen.pro.in src/libdoxycfg.pro.in src/doxygen.pro.in src/doxytag.pro.in addon/doxywizard/doxywizard.pro.in addon/doxmlparser/src/doxmlparser.pro.in addon/doxmlparser/test/xmlparse.pro.in addon/doxmlparser/examples/metrics/metrics.pro.in libpng/libpng.pro.in libmd5/libmd5.pro.in"
for i in $f_inprofiles ; do for i in $f_inprofiles ; do
SRC=$i SRC=$i
......
all: Makefile.libmd5
$(MAKE) -f Makefile.libmd5
clean: Makefile.libmd5
$(MAKE) -f Makefile.libmd5 clean
distclean: clean
$(RM) -f Makefile.libmd5 libmd5.pro Makefile
tmake:
$(ENV) $(PERL) $(TMAKE) libmd5.pro >Makefile.libmd5
Makefile.libmd5: libmd5.pro
$(ENV) $(PERL) $(TMAKE) libmd5.pro >Makefile.libmd5
install:
TEMPLATE = lib
CONFIG = warn_on staticlib $extraopts
HEADERS = md5.h md5_loc.h
SOURCES = md5.c
win32:INCLUDEPATH += .
win32-g++:TMAKE_CFLAGS += -D__CYGWIN__ -DALL_STATIC
DESTDIR = ../lib
TARGET = md5
OBJECTS_DIR = ../objects
This diff is collapsed.
/*
* Declaration of functions and data types used for MD5 sum computing
* library functions. Copyright (C) 1995, 1996 Free Software
* Foundation, Inc. NOTE: The canonical source of this file is
* maintained with the GNU C Library. Bugs can be reported to
* bug-glibc@prep.ai.mit.edu.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* $Id$
*/
/*
* NOTE: during quick performance tests on a sun ultra and an alpha
* 255 300, the md5 libraries performed upwards of 3mb/sec. That
* included disk i/o on bobcat and panther.
*/
#ifndef __MD5_H__
#define __MD5_H__
#ifdef __cplusplus
extern "C" {
#endif
/*
* Size of a standard MD5 signature in bytes. This definition is for
* external programs only. The MD5 routines themselves reference the
* signature as 4 unsigned 32-bit integers.
*/
#define MD5_SIZE 16
/*
* NOTE: the following is assumed to generate a 32-bit unsigned data
* type.
*/
typedef unsigned int md5_uint32;
#define MAX_MD5_UINT32 ((md5_uint32)4294967295U)
/*
* The MD5 algorithm works on blocks of characters of 64 bytes. This
* is an internal value only and is not necessary for external use.
*/
#define MD5_BLOCK_SIZE 64
/*
* Structure to save state of computation between the single steps.
*/
typedef struct
{
md5_uint32 md_A; /* accumulater 1 */
md5_uint32 md_B; /* accumulater 2 */
md5_uint32 md_C; /* accumulater 3 */
md5_uint32 md_D; /* accumulater 4 */
md5_uint32 md_total[2]; /* totaling storage */
md5_uint32 md_buf_len; /* length of the storage buffer */
char md_buffer[MD5_BLOCK_SIZE * 2]; /* character storage buffer */
} md5_t;
/*<<<<<<<<<< The below prototypes are auto-generated by fillproto */
/*
* md5_init
*
* DESCRIPTION:
*
* Initialize structure containing state of MD5 computation. (RFC 1321,
* 3.3: Step 3). This is for progressive MD5 calculations only. If
* you have the complete string available, md5_buffer should be used.
* md5_process should be called for each bunch of bytes and after the
* last process call, md5_finish should be called to get the
* signature.
*
* RETURNS:
*
* None.
*
* ARGUMENTS:
*
* md5_p - Pointer to md5 structure that we are initializing.
*/
extern
void md5_init(md5_t *md5_p);
/*
* md5_process
*
* DESCRIPTION:
*
* This function is used to progressively calculate a MD5 signature some
* number of bytes at a time. If you have the complete string
* available, md5_buffer should be used. The MD5 structure should
* have been initialized with md5_init and after the last process
* call, md5_finish should be called to get the results.
*
* RETURNS:
*
* None.
*
* ARGUMENTS:
*
* md5_p - Pointer to MD5 structure which we are progressively updating.
*
* buffer - A buffer of bytes whose MD5 signature we are calculating.
*
* buf_len - The length of the buffer.
*/
extern
void md5_process(md5_t *md5_p, const void *buffer,
const unsigned int buf_len);
/*
* md5_finish
*
* DESCRIPTION:
*
* Finish a progressing MD5 calculation and copy the resulting MD5
* signature into the result buffer which should be 16 bytes
* (MD5_SIZE). After this call, the MD5 structure is invalid.
*
* RETURNS:
*
* None.
*
* ARGUMENTS:
*
* md5_p - Pointer to MD5 structure which we are finishing.
*
* signature - A 16 byte buffer that will contain the MD5 signature.
*/
extern
void md5_finish(md5_t *md5_p, void *signature);
/*
* md5_buffer
*
* DESCRIPTION:
*
* This function is used to calculate a MD5 signature for a buffer of
* bytes. If you only have part of a buffer that you want to process
* then md5_init, md5_process, and md5_finish should be used.
*
* RETURNS:
*
* None.
*
* ARGUMENTS:
*
* buffer - A buffer of bytes whose MD5 signature we are calculating.
*
* buf_len - The length of the buffer.
*
* signature - A 16 byte buffer that will contain the MD5 signature.
*/
extern
void md5_buffer(const char *buffer, const unsigned int buf_len,
void *signature);
/*
* md5_sig_to_string
*
* DESCRIPTION:
*
* Convert a MD5 signature in a 16 byte buffer into a hexadecimal string
* representation.
*
* RETURNS:
*
* None.
*
* ARGUMENTS:
*
* signature - a 16 byte buffer that contains the MD5 signature.
*
* str - a string of charactes which should be at least 33 bytes long (2
* characters per MD5 byte and 1 for the \0).
*
* str_len - the length of the string.
*/
extern
void md5_sig_to_string(void *signature, char *str, const int str_len);
/*
* md5_sig_from_string
*
* DESCRIPTION:
*
* Convert a MD5 signature from a hexadecimal string representation into
* a 16 byte buffer.
*
* RETURNS:
*
* None.
*
* ARGUMENTS:
*
* signature - A 16 byte buffer that will contain the MD5 signature.
*
* str - A string of charactes which _must_ be at least 32 bytes long (2
* characters per MD5 byte).
*/
extern
void md5_sig_from_string(void *signature, const char *str);
/*<<<<<<<<<< This is end of the auto-generated output from fillproto. */
#ifdef __cplusplus
}
#endif
#endif /* ! __MD5_H__ */
/*
* Local defines for the md5 functions.
*
* $Id$
*/
/*
* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
* rights reserved.
*
* License to copy and use this software is granted provided that it is
* identified as the "RSA Data Security, Inc. MD5 Message-Digest
* Algorithm" in all material mentioning or referencing this software
* or this function.
*
* License is also granted to make and use derivative works provided that
* such works are identified as "derived from the RSA Data Security,
* Inc. MD5 Message-Digest Algorithm" in all material mentioning or
* referencing the derived work.
*
* RSA Data Security, Inc. makes no representations concerning either the
* merchantability of this software or the suitability of this
* software for any particular purpose. It is provided "as is" without
* express or implied warranty of any kind.
*
* These notices must be retained in any copies of any part of this
* documentation and/or software.
*/
#ifndef __MD5_LOC_H__
#define __MD5_LOC_H__
#define HEX_STRING "0123456789abcdef" /* to convert to hex */
#define BLOCK_SIZE_MASK (MD5_BLOCK_SIZE - 1)
/*
* Define my endian-ness. Could not do in a portable manner using the
* include files -- grumble.
*/
#if defined(__alpha) || defined(WIN32) || defined(__i386__)
/*
* little endian
*/
#define SWAP(n) (n)
#endif
#ifdef __sparc
/*
* big endian - big is better
*/
#define SWAP(n) \
(((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
#endif
/*
* These are the four functions used in the four steps of the MD5
* algorithm and defined in the RFC 1321. The first function is a
* little bit optimized (as found in Colin Plumbs public domain
* implementation).
*/
/* #define FF(b, c, d) ((b & c) | (~b & d)) */
#define FF(b, c, d) (d ^ (b & (c ^ d)))
#define FG(b, c, d) FF(d, b, c)
#define FH(b, c, d) (b ^ c ^ d)
#define FI(b, c, d) (c ^ (b | ~d))
/*
* It is unfortunate that C does not provide an operator for cyclic
* rotation. Hope the C compiler is smart enough. -- Modified to
* remove the w = at the front - Gray 2/97
*/
#define CYCLIC(w, s) ((w << s) | (w >> (32 - s)))
/*
* First Round: using the given function, the context and a constant
* the next context is computed. Because the algorithms processing
* unit is a 32-bit word and it is determined to work on words in
* little endian byte order we perhaps have to change the byte order
* before the computation. To reduce the work for the next steps we
* store the swapped words in the array CORRECT_WORDS. -- Modified to
* fix the handling of unaligned buffer spaces - Gray 7/97
*/
#define OP1(a, b, c, d, b_p, c_p, s, T) \
do { \
memcpy(c_p, b_p, sizeof(md5_uint32)); \
*c_p = SWAP(*c_p); \
a += FF (b, c, d) + *c_p + T; \
a = CYCLIC (a, s); \
a += b; \
b_p = (char *)b_p + sizeof(md5_uint32); \
c_p++; \
} while (0)
/*
* Second to Fourth Round: we have the possibly swapped words in
* CORRECT_WORDS. Redefine the macro to take an additional first
* argument specifying the function to use.
*/
#define OP234(FUNC, a, b, c, d, k, s, T) \
do { \
a += FUNC (b, c, d) + k + T; \
a = CYCLIC (a, s); \
a += b; \
} while (0)
#endif /* ! __MD5_LOC_H__ */
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.4_20031019 Version: 1.3.4_20031026
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <qdir.h> #include <qdir.h>
#include <qfile.h> #include <qfile.h>
#include <qtextstream.h> #include <qtextstream.h>
#include <md5.h>
//-------------------------------------------------------------------- //--------------------------------------------------------------------
...@@ -1382,7 +1383,86 @@ void writeDotGraph(DotNode *root, ...@@ -1382,7 +1383,86 @@ void writeDotGraph(DotNode *root,
} }
} }
static void findMaximalDotGraph(DotNode *root, /*! Computes a 16 byte md5 checksum for a given dot graph.
* The md5 checksum is returned as a 32 character ASCII string.
*/
QCString computeMd5Signature(DotNode *root,
DotNode::GraphType gt,
GraphOutputFormat format,
bool lrRank,
bool renderParents,
int distance,
bool backArrows
)
{
//printf("computeMd5Signature\n");
QString buf;
QTextStream md5stream(&buf,IO_WriteOnly);
if (lrRank)
{
md5stream << "rankdir=LR;" << endl;
}
root->clearWriteFlag();
root->write(md5stream,gt,format,gt!=DotNode::CallGraph,TRUE,distance,backArrows);
if (renderParents && root->m_parents)
{
QListIterator<DotNode> dnli(*root->m_parents);
DotNode *pn;
for (dnli.toFirst();(pn=dnli.current());++dnli)
{
if (pn->m_distance<=distance)
{
root->writeArrow(md5stream,
gt,
format,
pn,
pn->m_edgeInfo->at(pn->m_children->findRef(root)),
FALSE,
backArrows
);
}
pn->write(md5stream,gt,format,TRUE,FALSE,distance,backArrows);
}
}
char md5_sig[16];
QCString sigStr(33);
md5_buffer(buf.ascii(),buf.length(),md5_sig);
md5_sig_to_string(md5_sig,sigStr.data(),33);
//printf("md5: %s | file: %s\n",sigStr,baseName.data());
return sigStr;
}
/*! Checks if a file "baseName".md5 exists. If so the contents
* are compared with \a md5. If equal FALSE is returned. If the .md5
* file does not exist or its contents are not equal to \a md5,
* a new .md5 is generated with the \a md5 string as contents.
*/
static bool checkAndUpdateMd5Signature(const QCString &baseName,const QCString &md5)
{
QFile f(baseName+".md5");
if (f.open(IO_ReadOnly))
{
// read checksum
QCString md5stored(33);
int bytesRead=f.readBlock(md5stored.data(),32);
// compare checksum
if (bytesRead==32 && md5==md5stored)
{
// bail out if equal
return FALSE;
}
}
f.close();
// create checksum file
if (f.open(IO_WriteOnly))
{
f.writeBlock(md5.data(),32);
f.close();
}
return TRUE;
}
static bool findMaximalDotGraph(DotNode *root,
int maxDist, int maxDist,
const QCString &baseName, const QCString &baseName,
QDir &thisDir, QDir &thisDir,
...@@ -1402,6 +1482,10 @@ static void findMaximalDotGraph(DotNode *root, ...@@ -1402,6 +1482,10 @@ static void findMaximalDotGraph(DotNode *root,
int maxDotGraphHeight = Config_getInt("MAX_DOT_GRAPH_HEIGHT"); int maxDotGraphHeight = Config_getInt("MAX_DOT_GRAPH_HEIGHT");
int lastFit=minDistance; int lastFit=minDistance;
QCString md5 = computeMd5Signature(root,gt,format,lrRank,
renderParents,maxDistance,backArrows);
if (!checkAndUpdateMd5Signature(baseName,md5)) return FALSE;
// binary search for the maximal inheritance depth that fits in a reasonable // binary search for the maximal inheritance depth that fits in a reasonable
// sized image (dimensions: Config_getInt("MAX_DOT_GRAPH_WIDTH"), Config_getInt("MAX_DOT_GRAPH_HEIGHT")) // sized image (dimensions: Config_getInt("MAX_DOT_GRAPH_WIDTH"), Config_getInt("MAX_DOT_GRAPH_HEIGHT"))
while (minDistance<=maxDistance) while (minDistance<=maxDistance)
...@@ -1417,7 +1501,7 @@ static void findMaximalDotGraph(DotNode *root, ...@@ -1417,7 +1501,7 @@ static void findMaximalDotGraph(DotNode *root,
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{ {
err("Problems running dot. Check your installation!\n"); err("Problems running dot. Check your installation!\n");
return; return FALSE;
} }
// extract bounding box from the result // extract bounding box from the result
...@@ -1461,6 +1545,7 @@ static void findMaximalDotGraph(DotNode *root, ...@@ -1461,6 +1545,7 @@ static void findMaximalDotGraph(DotNode *root,
lastFit, lastFit,
backArrows backArrows
); );
return TRUE;
} }
QCString DotClassGraph::diskName() const QCString DotClassGraph::diskName() const
...@@ -1520,8 +1605,10 @@ QCString DotClassGraph::writeGraph(QTextStream &out, ...@@ -1520,8 +1605,10 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
} }
baseName = convertNameToFile(diskName()); baseName = convertNameToFile(diskName());
findMaximalDotGraph(m_startNode,QMIN(m_recDepth,m_maxDistance),baseName,
thisDir,m_graphType,format,!isTBRank,m_graphType==DotNode::Inheritance); if (findMaximalDotGraph(m_startNode,QMIN(m_recDepth,m_maxDistance),baseName,
thisDir,m_graphType,format,!isTBRank,m_graphType==DotNode::Inheritance))
{
if (format==BITMAP) // run dot to create a bitmap image if (format==BITMAP) // run dot to create a bitmap image
{ {
...@@ -1619,6 +1706,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out, ...@@ -1619,6 +1706,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
"\\end{figure}\n"; "\\end{figure}\n";
} }
if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot");
}
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return baseName; return baseName;
...@@ -1763,10 +1851,11 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1763,10 +1851,11 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
QCString mapName=m_startNode->m_label.copy(); QCString mapName=m_startNode->m_label.copy();
if (m_inverse) mapName+="dep"; if (m_inverse) mapName+="dep";
findMaximalDotGraph(m_startNode,QMIN(m_recDepth,m_maxDistance), if (findMaximalDotGraph(m_startNode,QMIN(m_recDepth,m_maxDistance),
baseName,thisDir,DotNode::Dependency,format, baseName,thisDir,DotNode::Dependency,format,
FALSE,FALSE,!m_inverse); FALSE,FALSE,!m_inverse)
)
{
if (format==BITMAP) if (format==BITMAP)
{ {
// run dot to create a bitmap image // run dot to create a bitmap image
...@@ -1858,6 +1947,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, ...@@ -1858,6 +1947,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
} }
if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot");
}
QDir::setCurrent(oldDir); QDir::setCurrent(oldDir);
return baseName; return baseName;
......
...@@ -99,14 +99,16 @@ class DotNode ...@@ -99,14 +99,16 @@ class DotNode
friend class DotNodeList; friend class DotNodeList;
friend class DotCallGraph; friend class DotCallGraph;
friend void writeDotGraph( friend void writeDotGraph(
DotNode *root, DotNode *root, GraphType gt,
GraphType gt, GraphOutputFormat f, const QCString &baseName,
bool lrRank, bool renderParents,
int distance, bool backArrows
);
friend QCString computeMd5Signature(
DotNode *root, GraphType gt,
GraphOutputFormat f, GraphOutputFormat f,
const QCString &baseName, bool lrRank, bool renderParents,
bool lrRank, int distance, bool backArrows
bool renderParents,
int distance,
bool backArrow
); );
}; };
......
...@@ -18,18 +18,18 @@ TEMPLATE = app.t ...@@ -18,18 +18,18 @@ TEMPLATE = app.t
CONFIG = console warn_on $extraopts CONFIG = console warn_on $extraopts
HEADERS = doxygen.h HEADERS = doxygen.h
SOURCES = main.cpp SOURCES = main.cpp
unix:LIBS += -L../lib -ldoxygen -ldoxycfg -lqtools -lpng unix:LIBS += -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5
win32:INCLUDEPATH += . win32:INCLUDEPATH += .
win32-mingw:LIBS += -L../lib -ldoxygen -ldoxycfg -lqtools -lpng win32-mingw:LIBS += -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5
win32-msvc:LIBS += qtools.lib png.lib doxygen.lib doxycfg.lib shell32.lib win32-msvc:LIBS += qtools.lib png.lib md5.lib doxygen.lib doxycfg.lib shell32.lib
win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib
win32-borland:LIBS += qtools.lib png.lib doxygen.lib doxycfg.lib shell32.lib win32-borland:LIBS += qtools.lib png.lib md5.lib doxygen.lib doxycfg.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
win32:TMAKE_CXXFLAGS += -DQT_NODLL win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5
win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti
INCLUDEPATH += ../qtools ../libpng . INCLUDEPATH += ../qtools ../libpng ../libmd5 .
win32-g++:INCLUDEPATH -= ../libpng #win32-g++:INCLUDEPATH -= ../libpng
DESTDIR = ../bin DESTDIR = ../bin
TARGET = doxygen TARGET = doxygen
unix:TARGETDEPS = ../lib/libdoxygen.a ../lib/libdoxycfg.a unix:TARGETDEPS = ../lib/libdoxygen.a ../lib/libdoxycfg.a
......
...@@ -1412,7 +1412,7 @@ void HtmlGenerator::writeSearchPage() ...@@ -1412,7 +1412,7 @@ void HtmlGenerator::writeSearchPage()
writeDefaultQuickLinks(t,TRUE,HLI_Search); writeDefaultQuickLinks(t,TRUE,HLI_Search);
} }
t << "<?php \n\n"; t << "\n<?php\n\n";
t << "function search_results()\n"; t << "function search_results()\n";
t << "{\n"; t << "{\n";
t << " return \"" << theTranslator->trSearchResultsTitle() << "\";\n"; t << " return \"" << theTranslator->trSearchResultsTitle() << "\";\n";
......
...@@ -1011,11 +1011,11 @@ void writeFileIndex(OutputList &ol) ...@@ -1011,11 +1011,11 @@ void writeFileIndex(OutputList &ol)
ol.endBold(); ol.endBold();
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp->addContentsItem(FALSE,fd->name(),0); htmlHelp->addContentsItem(FALSE,fullName,0);
} }
if (hasFtvHelp) if (hasFtvHelp)
{ {
ftvHelp->addContentsItem(FALSE,0,0,0,fd->name()); ftvHelp->addContentsItem(FALSE,0,0,0,fullName);
} }
} }
if (src) if (src)
......
...@@ -249,12 +249,12 @@ void LatexDocVisitor::visit(DocVerbatim *s) ...@@ -249,12 +249,12 @@ void LatexDocVisitor::visit(DocVerbatim *s)
case DocVerbatim::Code: case DocVerbatim::Code:
m_t << "\n\n\\footnotesize\\begin{verbatim}"; m_t << "\n\n\\footnotesize\\begin{verbatim}";
parseCode(m_ci,s->context(),s->text().latin1(),s->isExample(),s->exampleFile()); parseCode(m_ci,s->context(),s->text().latin1(),s->isExample(),s->exampleFile());
m_t << "\\end{verbatim}\\normalsize" << endl; m_t << "\\end{verbatim}\n\\normalsize" << endl;
break; break;
case DocVerbatim::Verbatim: case DocVerbatim::Verbatim:
m_t << "\n\n\\footnotesize\\begin{verbatim}"; m_t << "\n\n\\footnotesize\\begin{verbatim}";
m_t << s->text(); m_t << s->text();
m_t << "\\end{verbatim}\\normalsize" << endl; m_t << "\\end{verbatim}\n\\normalsize" << endl;
break; break;
case DocVerbatim::HtmlOnly: case DocVerbatim::HtmlOnly:
case DocVerbatim::XmlOnly: case DocVerbatim::XmlOnly:
...@@ -310,7 +310,7 @@ void LatexDocVisitor::visit(DocInclude *inc) ...@@ -310,7 +310,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
case DocInclude::Include: case DocInclude::Include:
m_t << "\n\n\\footnotesize\\begin{verbatim}"; m_t << "\n\n\\footnotesize\\begin{verbatim}";
parseCode(m_ci,inc->context(),inc->text().latin1(),inc->isExample(),inc->exampleFile()); parseCode(m_ci,inc->context(),inc->text().latin1(),inc->isExample(),inc->exampleFile());
m_t << "\\end{verbatim}\\normalsize" << endl; m_t << "\\end{verbatim}\n\\normalsize" << endl;
break; break;
case DocInclude::DontInclude: case DocInclude::DontInclude:
break; break;
...@@ -319,7 +319,7 @@ void LatexDocVisitor::visit(DocInclude *inc) ...@@ -319,7 +319,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
case DocInclude::VerbInclude: case DocInclude::VerbInclude:
m_t << "\n\n\\footnotesize\\begin{verbatim}"; m_t << "\n\n\\footnotesize\\begin{verbatim}";
m_t << inc->text(); m_t << inc->text();
m_t << "\\end{verbatim}\\normalsize" << endl; m_t << "\\end{verbatim}\n\\normalsize" << endl;
break; break;
} }
} }
...@@ -344,7 +344,7 @@ void LatexDocVisitor::visit(DocIncOperator *op) ...@@ -344,7 +344,7 @@ void LatexDocVisitor::visit(DocIncOperator *op)
if (op->isLast()) if (op->isLast())
{ {
popEnabled(); popEnabled();
if (!m_hide) m_t << "\\end{verbatim}\\normalsize" << endl; if (!m_hide) m_t << "\\end{verbatim}\n\\normalsize" << endl;
} }
else else
{ {
......
...@@ -186,6 +186,7 @@ win32-msvc:TMAKE_CXXFLAGS += -Zm200 ...@@ -186,6 +186,7 @@ win32-msvc:TMAKE_CXXFLAGS += -Zm200
win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti
INCLUDEPATH += ../qtools INCLUDEPATH += ../qtools
INCLUDEPATH += ../libpng INCLUDEPATH += ../libpng
INCLUDEPATH += ../libmd5
win32:INCLUDEPATH += . win32:INCLUDEPATH += .
win32-g++:INCLUDEPATH = ../qtools /usr/include/libpng12 win32-g++:INCLUDEPATH = ../qtools /usr/include/libpng12
DESTDIR = ../lib DESTDIR = ../lib
......
...@@ -436,6 +436,7 @@ void ManDocVisitor::visitPre(DocSimpleList *) ...@@ -436,6 +436,7 @@ void ManDocVisitor::visitPre(DocSimpleList *)
{ {
if (m_hide) return; if (m_hide) return;
m_indent+=2; m_indent+=2;
m_t << ".PD 0" << endl;
} }
void ManDocVisitor::visitPost(DocSimpleList *) void ManDocVisitor::visitPost(DocSimpleList *)
...@@ -482,6 +483,7 @@ void ManDocVisitor::visitPre(DocHtmlList *) ...@@ -482,6 +483,7 @@ void ManDocVisitor::visitPre(DocHtmlList *)
{ {
if (m_hide) return; if (m_hide) return;
m_indent+=2; m_indent+=2;
m_t << ".PD 0" << endl;
} }
void ManDocVisitor::visitPost(DocHtmlList *) void ManDocVisitor::visitPost(DocHtmlList *)
......
...@@ -1221,8 +1221,9 @@ void RTFDocVisitor::writeDotFile(const QString &fileName) ...@@ -1221,8 +1221,9 @@ void RTFDocVisitor::writeDotFile(const QString &fileName)
m_t << "{" << endl; m_t << "{" << endl;
m_t << rtf_Style_Reset << endl; m_t << rtf_Style_Reset << endl;
m_t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; m_t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
m_t << outDir << "\\" << baseName; m_t << baseName << "." << Config_getEnum("DOT_IMAGE_FORMAT");
m_t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; m_t << " \\\\d \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
m_t << "}" << endl; m_t << "}" << endl;
} }
This diff is collapsed.
...@@ -193,6 +193,10 @@ function filter_results($docs,&$requiredWords,&$forbiddenWords) ...@@ -193,6 +193,10 @@ function filter_results($docs,&$requiredWords,&$forbiddenWords)
function compare_rank($a,$b) function compare_rank($a,$b)
{ {
if ($a["rank"] == $b["rank"])
{
return 0;
}
return ($a["rank"]>$b["rank"]) ? -1 : 1; return ($a["rank"]>$b["rank"]) ? -1 : 1;
} }
......
...@@ -193,6 +193,10 @@ ...@@ -193,6 +193,10 @@
"\n" "\n"
"function compare_rank($a,$b)\n" "function compare_rank($a,$b)\n"
"{\n" "{\n"
" if ($a[\"rank\"] == $b[\"rank\"]) \n"
" {\n"
" return 0;\n"
" }\n"
" return ($a[\"rank\"]>$b[\"rank\"]) ? -1 : 1; \n" " return ($a[\"rank\"]>$b[\"rank\"]) ? -1 : 1; \n"
"}\n" "}\n"
"\n" "\n"
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#ifndef TRANSLATOR_KR_H #ifndef TRANSLATOR_KR_H
#define TRANSLATOR_KR_H #define TRANSLATOR_KR_H
class TranslatorKorean : public TranslatorAdapter_1_3 class TranslatorKorean : public Translator
{ {
public: public:
......
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