Commit 0ee700fc authored by dimitri's avatar dimitri

Release-1.5.1-20070107

parent be3407fc
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
......@@ -79,6 +79,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_directory_graph DIRECTORY_GRAPH
\refitem cfg_disable_index DISABLE_INDEX
\refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC
\refitem cfg_dot_graph_max_nodes DOT_GRAPH_MAX_NODES
\refitem cfg_dot_image_format DOT_IMAGE_FORMAT
\refitem cfg_dot_multi_targets DOT_MULTI_TARGETS
\refitem cfg_dot_path DOT_PATH
......@@ -160,9 +161,6 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_man_extension MAN_EXTENSION
\refitem cfg_man_links MAN_LINKS
\refitem cfg_man_output MAN_OUTPUT
\refitem cfg_max_dot_graph_depth MAX_DOT_GRAPH_DEPTH
\refitem cfg_max_dot_graph_height MAX_DOT_GRAPH_HEIGHT
\refitem cfg_max_dot_graph_width MAX_DOT_GRAPH_WIDTH
\refitem cfg_max_initializer_lines MAX_INITIALIZER_LINES
\refitem cfg_multiline_cpp_is_brief MULTILINE_CPP_IS_BRIEF
\refitem cfg_optimize_output_for_c OPTIMIZE_OUTPUT_FOR_C
......@@ -1728,6 +1726,15 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
in a graphical way. The dependency relations are determined by the \#include
relations between the files in the directories.
\anchor cfg_dot_graph_max_nodes
<dt>\c DOT_GRAPH_MAX_NODES <dd>
\addindex DOT_GRAPH_MAX_NODES
The \c MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
nodes that will be shown in the graph. If the number of nodes in a graph
becomes larger than this value, doxygen will truncate the graph, which is
visualized by representing a node as a red box. Note that doxygen will always
show the root nodes and its direct children regardless of this setting.
\anchor cfg_dot_image_format
<dt>\c DOT_IMAGE_FORMAT <dd>
\addindex DOT_IMAGE_FORMAT
......@@ -1748,39 +1755,6 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
contain dot files that are included in the documentation (see the
\\dotfile command).
\anchor cfg_max_dot_graph_height
<dt>\c MAX_DOT_GRAPH_HEIGHT <dd>
\addindex MAX_DOT_GRAPH_HEIGHT
The \c MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
(in pixels) of the graphs generated by dot. If a graph becomes larger than
this value, doxygen will try to truncate the graph, so that it fits within
the specified constraint. Beware that most browsers cannot cope with very
large images.
\anchor cfg_max_dot_graph_depth
<dt>\c MAX_DOT_GRAPH_DEPTH <dd>
\addindex MAX_DOT_GRAPH_DEPTH
The \c MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
graphs generated by dot. A depth value of 3 means that only nodes reachable
from the root by following a path via at most 3 edges will be shown. Nodes that
lay further from the root node will be omitted. Note that setting this option to
1 or 2 may greatly reduce the computation time needed for large code bases. Also
note that a graph may be further truncated if the graph's image dimensions are
not sufficient to fit the graph (see
\ref cfg_max_dot_graph_width "MAX_DOT_GRAPH_WIDTH" and
\ref cfg_max_dot_graph_height "MAX_DOT_GRAPH_HEIGHT").
If 0 is used for the depth value (the default), the graph is
not depth-constraint.
\anchor cfg_max_dot_graph_width
<dt>\c MAX_DOT_GRAPH_WIDTH <dd>
\addindex MAX_DOT_GRAPH_WIDTH
The \c MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
(in pixels) of the graphs generated by dot. If a graph becomes larger than
this value, doxygen will try to truncate the graph, so that it fits within
the specified constraint. Beware that most browsers cannot cope with very
large images.
\anchor cfg_dot_transparent
<dt>\c DOT_TRANSPARENT <dd>
\addindex DOT_TRANSPARENT
......
......@@ -58,10 +58,6 @@ must be implemented to become up-to-date:
TranslatorSlovak 1.2.18 22 methods to implement
TranslatorFinnish obsolete 96 methods to implement
Note: The adapter classes TranslatorAdapter_1_2_11,
TranslatorAdapter_1_2_13, TranslatorAdapter_1_2_16,
TranslatorAdapter_1_2_17 are not used and can be removed.
----------------------------------------------------------------------
The following translator classes derive directly from the
TranslatorEnglish. The class identifier has the suffix 'En' that says
......
......@@ -13,6 +13,7 @@
*
*/
#include <stdio.h>
#include "qgstring.h"
#include <assert.h>
......@@ -20,25 +21,31 @@
#define BLOCK_SIZE 64
#define ROUND_SIZE(x) ((x)+BLOCK_SIZE-1)&~(BLOCK_SIZE-1)
#define DBG_STR(x) do { } while(0)
QGString::QGString() // make null string
: m_data(0), m_len(0), m_memSize(0)
{
DBG_STR(("%p: QGString::QGString() %d:%s\n",this,m_len,m_data?m_data:"<none>"));
}
QGString::QGString(uint size)
{
m_memSize = ROUND_SIZE(size);
if (m_memSize==0)
if (size==0)
{
m_data=0;
m_len=0;
}
else
{
m_memSize = ROUND_SIZE(size+1);
m_data = (char*)malloc(m_memSize);
m_data[0]='\0';
m_len=0;
memset(m_data,' ',size);
m_data[size]='\0';
m_len=size;
}
DBG_STR(("%p: QGString::QGString(uint size=%d) %d:%s\n",
this,size,m_len,m_data?m_data:"<none>"));
}
QGString::QGString( const QGString &s )
......@@ -56,6 +63,7 @@ QGString::QGString( const QGString &s )
m_memSize = s.m_memSize;
qstrcpy(m_data,s.m_data);
}
DBG_STR(("%p: QGString::QGString(const QGString &) %d:%s\n",this,m_len,m_data?m_data:"<none>"));
}
QGString::QGString( const char *str )
......@@ -74,12 +82,14 @@ QGString::QGString( const char *str )
m_data = (char *)malloc(m_memSize);
qstrcpy(m_data,str);
}
DBG_STR(("%p: QGString::QGString(const char *) %d:%s\n",this,m_len,m_data?m_data:"<none>"));
}
QGString::~QGString()
{
free(m_data);
m_data=0;
DBG_STR(("%p: QGString::~QGString() %d:%s\n",this,m_len,m_data?m_data:"<none>"));
}
bool QGString::resize( uint newlen )
......@@ -89,6 +99,7 @@ bool QGString::resize( uint newlen )
{
if (m_data) { free(m_data); m_data=0; }
m_memSize=0;
DBG_STR(("%p: 1.QGString::resize() %d:%s\n",this,m_len,m_data?m_data:"<none>"));
return TRUE;
}
m_memSize = ROUND_SIZE(newlen+1);
......@@ -101,9 +112,14 @@ bool QGString::resize( uint newlen )
{
m_data = (char *)realloc(m_data,m_memSize);
}
if (m_data==0) return FALSE;
if (m_data==0)
{
DBG_STR(("%p: 2.QGString::resize() %d:%s\n",this,m_len,m_data?m_data:"<none>"));
return FALSE;
}
m_data[newlen-1]='\0';
m_len = qstrlen(m_data);
DBG_STR(("%p: 3.QGString::resize() %d:%s\n",this,m_len,m_data?m_data:"<none>"));
return TRUE;
}
......@@ -123,6 +139,8 @@ QGString &QGString::operator=( const QGString &s )
m_data = (char*)malloc(m_memSize);
qstrcpy(m_data,s.m_data);
}
DBG_STR(("%p: QGString::operator=(const QGString &%p) %d:%s\n",
this,&s,m_len,m_data?m_data:"<none>"));
return *this;
}
......@@ -143,6 +161,7 @@ QGString &QGString::operator=( const char *str )
m_data = (char*)malloc(m_memSize);
qstrcpy(m_data,str);
}
DBG_STR(("%p: QGString::operator=(const char *) %d:%s\n",this,m_len,m_data?m_data:"<none>"));
return *this;
}
......@@ -160,6 +179,8 @@ QGString &QGString::operator+=( const QGString &s )
m_data = newData;
memcpy( m_data + len1, s, len2 + 1 );
}
m_len = len1+len2;
DBG_STR(("%p: QGString::operator+=(const QGString &) %d:%s\n",this,m_len,m_data?m_data:"<none>"));
return *this;
}
......@@ -178,6 +199,7 @@ QGString &QGString::operator+=( const char *str )
memcpy( m_data + len1, str, len2 + 1 );
}
m_len+=len2;
DBG_STR(("%p: QGString::operator+=(const char *) %d:%s\n",this,m_len,m_data?m_data:"<none>"));
return *this;
}
......@@ -195,6 +217,7 @@ QGString &QGString::operator+=( char c )
m_data[len+1] = '\0';
}
m_len++;
DBG_STR(("%p: QGString::operator+=(char s) %d:%s\n",this,m_len,m_data?m_data:"<none>"));
return *this;
}
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -563,7 +563,6 @@ void ClassDef::internalInsertMember(MemberDef *md,
{
MemberList *ml = createMemberList(MemberList::constructors);
ml->append(md);
md->setSectionList(this,ml);
}
else
{
......@@ -1260,7 +1259,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (Config_getBool("HAVE_DOT") && Config_getBool("CLASS_GRAPH"))
// write class diagram using dot
{
DotClassGraph inheritanceGraph(this,DotNode::Inheritance,Config_getInt("MAX_DOT_GRAPH_DEPTH"));
DotClassGraph inheritanceGraph(this,DotNode::Inheritance);
if (!inheritanceGraph.isTrivial())
{
ol.pushGeneratorState();
......@@ -1295,7 +1294,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (Config_getBool("HAVE_DOT") && Config_getBool("COLLABORATION_GRAPH"))
{
DotClassGraph usageImplGraph(this,DotNode::Collaboration,Config_getInt("MAX_DOT_GRAPH_DEPTH"));
DotClassGraph usageImplGraph(this,DotNode::Collaboration);
if (!usageImplGraph.isTrivial())
{
ol.pushGeneratorState();
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
......@@ -552,7 +552,8 @@ static void codifyLines(char *text)
*/
static void writeMultiLineCodeLink(CodeOutputInterface &ol,
const char *ref,const char *file,
const char *anchor,const char *text)
const char *anchor,const char *text,
const char *tooltip)
{
bool done=FALSE;
char *p=(char *)text;
......@@ -566,7 +567,7 @@ static void writeMultiLineCodeLink(CodeOutputInterface &ol,
g_yyLineNr++;
*(p-1)='\0';
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
endCodeLine();
if (g_yyLineNr<g_inputLines)
{
......@@ -576,7 +577,7 @@ static void writeMultiLineCodeLink(CodeOutputInterface &ol,
else
{
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
done=TRUE;
}
}
......@@ -834,7 +835,8 @@ static bool getLinkInScope(const QCString &c, // scope
writeMultiLineCodeLink(ol,md->getReference(),
md->getOutputFileBase(),
md->anchor(),
text ? text : memberText);
text ? text : memberText,
md->briefDescriptionAsTooltip());
addToSearchIndex(text ? text : memberText);
return TRUE;
}
......@@ -942,7 +944,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
}
ol.linkableSymbol(g_yyLineNr,cd->name(),cd,
g_currentMemberDef ? g_currentMemberDef : g_currentDefinition);
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,clName);
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,clName,cd->briefDescriptionAsTooltip());
addToSearchIndex(className);
if (md)
{
......@@ -985,7 +987,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
{
ol.linkableSymbol(g_yyLineNr,md->name(),md,
g_currentMemberDef ? g_currentMemberDef : g_currentDefinition);
writeMultiLineCodeLink(ol,md->getReference(),md->getOutputFileBase(),md->anchor(),clName);
writeMultiLineCodeLink(ol,md->getReference(),md->getOutputFileBase(),md->anchor(),clName,md->briefDescriptionAsTooltip());
addToSearchIndex(clName);
if (g_currentMemberDef)
{
......@@ -1057,7 +1059,7 @@ static bool generateClassMemberLink(CodeOutputInterface &ol,ClassDef *mcd,const
ol.linkableSymbol(g_yyLineNr,xmd->name(),xmd,
g_currentMemberDef ? g_currentMemberDef : g_currentDefinition);
writeMultiLineCodeLink(ol,xmd->getReference(),
xmd->getOutputFileBase(),xmd->anchor(),memName);
xmd->getOutputFileBase(),xmd->anchor(),memName,xmd->briefDescriptionAsTooltip());
addToSearchIndex(memName);
return TRUE;
}
......@@ -1352,7 +1354,8 @@ static void writeObjCMethodCall(ObjCCallCtx *ctx)
ctx->method->getReference(),
ctx->method->getOutputFileBase(),
ctx->method->anchor(),
pName->data());
pName->data(),
ctx->method->briefDescriptionAsTooltip());
if (g_currentMemberDef)
{
addDocCrossReference(g_currentMemberDef,ctx->method);
......@@ -1439,7 +1442,8 @@ static void writeObjCMethodCall(ObjCCallCtx *ctx)
ctx->objectVar->getReference(),
ctx->objectVar->getOutputFileBase(),
ctx->objectVar->anchor(),
pObject->data());
pObject->data(),
ctx->objectVar->briefDescriptionAsTooltip());
if (g_currentMemberDef)
{
addDocCrossReference(g_currentMemberDef,ctx->objectVar);
......@@ -1457,7 +1461,8 @@ static void writeObjCMethodCall(ObjCCallCtx *ctx)
cd->getReference(),
cd->getOutputFileBase(),
0,
pObject->data());
pObject->data(),
cd->briefDescriptionAsTooltip());
}
else // object still needs to be resolved
{
......@@ -1472,7 +1477,8 @@ static void writeObjCMethodCall(ObjCCallCtx *ctx)
cd->getReference(),
cd->getOutputFileBase(),
0,
pObject->data());
pObject->data(),
cd->briefDescriptionAsTooltip());
}
else
{
......@@ -1822,7 +1828,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
if (found)
{
//printf(" include file %s found=%d\n",fd->absFilePath().data(),found);
g_code->writeCodeLink(fd->getReference(),fd->getOutputFileBase(),0,yytext);
g_code->writeCodeLink(fd->getReference(),fd->getOutputFileBase(),0,yytext,fd->briefDescriptionAsTooltip());
}
else
{
......
/*****************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/*****************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
......@@ -605,7 +605,6 @@ static inline void setOutput(OutputContext ctx)
newXRefItemKey==xrefItemKey); // with the same key if \xrefitem
//printf("refKind=%d newXRefKind=%d xrefAppendToPrev=%d xrefAppendFlag=%d\n",
// xrefKind,newXRefKind,xrefAppendToPrev,xrefAppendFlag);
xrefItemKey = newXRefItemKey;
//printf("setOutput(inContext=%d ctx=%d)\n",inContext,ctx);
if (inContext==OutputXRef) // end of XRef section => add the item
......@@ -655,6 +654,7 @@ static inline void setOutput(OutputContext ctx)
break;
}
}
xrefItemKey = newXRefItemKey;
int oldContext = inContext;
inContext = ctx;
......@@ -1319,7 +1319,7 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
xrefKind = XRef_Item;
BEGIN( Comment );
}
<XRefItemParam2>{LC} { // line continuation
<XRefItemParam2,XRefItemParam3>{LC} { // line continuation
yyLineNr++;
addOutput('\n');
}
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -1145,7 +1145,7 @@ void Config::check()
#undef PUTENV
#undef SEP
#if defined(_WIN32) && (__BORLANDC__ < 0x0550)
#if defined(_WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ < 0x0550))
#define PUTENV _putenv
#define SEP ";"
#else
......@@ -1167,11 +1167,13 @@ void Config::check()
PUTENV(buf);
}
#if 0
int &depth = Config_getInt("MAX_DOT_GRAPH_DEPTH");
if (depth==0)
{
depth=1000;
}
#endif
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA") && Config_getBool("INLINE_INFO"))
{
......@@ -2751,38 +2753,18 @@ void Config::create()
cl->setWidgetType(ConfigList::Dir);
cl->addDependency("HAVE_DOT");
ci = addInt(
"MAX_DOT_GRAPH_WIDTH",
"The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width \n"
"(in pixels) of the graphs generated by dot. If a graph becomes larger than \n"
"this value, doxygen will try to truncate the graph, so that it fits within \n"
"the specified constraint. Beware that most browsers cannot cope with very \n"
"large images. \n",
100,30000, 1024
);
ci->addDependency("HAVE_DOT");
ci = addInt(
"MAX_DOT_GRAPH_HEIGHT",
"The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height \n"
"(in pixels) of the graphs generated by dot. If a graph becomes larger than \n"
"this value, doxygen will try to truncate the graph, so that it fits within \n"
"the specified constraint. Beware that most browsers cannot cope with very \n"
"large images. \n",
100,30000,1024
);
ci = addInt(
"MAX_DOT_GRAPH_DEPTH",
"The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \n"
"graphs generated by dot. A depth value of 3 means that only nodes reachable \n"
"from the root by following a path via at most 3 edges will be shown. Nodes \n"
"that lay further from the root node will be omitted. Note that setting this \n"
"option to 1 or 2 may greatly reduce the computation time needed for large \n"
"code bases. Also note that a graph may be further truncated if the graph's \n"
"image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH \n"
"and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), \n"
"the graph is not depth-constrained. \n",
0,1000,0
"DOT_GRAPH_MAX_NODES",
"The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \n"
"nodes that will be shown in the graph. If the number of nodes in a graph \n"
"becomes larger than this value, doxygen will truncate the graph, which is \n"
"visualized by representing a node as a red box. Note that doxygen will always \n"
"show the root nodes and its direct children regardless of this setting. \n",
0,10000, 50
);
ci->addDependency("HAVE_DOT");
addObsolete("MAX_DOT_GRAPH_WIDTH");
addObsolete("MAX_DOT_GRAPH_HEIGHT");
addObsolete("MAX_DOT_GRAPH_DEPTH");
cb = addBool(
"DOT_TRANSPARENT",
"Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \n"
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -457,16 +457,14 @@ void generateDEFForClass(ClassDef *cd,QTextStream &t)
t << " cp-documentation = <<_EnD_oF_dEf_TeXt_" << endl
<< cd->documentation() << endl << "_EnD_oF_dEf_TeXt_;" << endl;
DotClassGraph inheritanceGraph(cd,DotNode::Inheritance,
Config_getInt("MAX_DOT_GRAPH_DEPTH"));
DotClassGraph inheritanceGraph(cd,DotNode::Inheritance);
if (!inheritanceGraph.isTrivial())
{
t << " cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_" << endl;
inheritanceGraph.writeDEF(t);
t << endl << "_EnD_oF_dEf_TeXt_;" << endl;
}
DotClassGraph collaborationGraph(cd,DotNode::Collaboration,
Config_getInt("MAX_DOT_GRAPH_DEPTH"));
DotClassGraph collaborationGraph(cd,DotNode::Collaboration);
if (!collaborationGraph.isTrivial())
{
t << " cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_" << endl;
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -51,8 +51,7 @@ class DefinitionImpl
DefinitionImpl();
~DefinitionImpl();
void init(const char *df,int dl,
const char *n,const char *b,
const char *d);
const char *n);
SectionDict *sectionDict; // dictionary of all sections, not accessible
......@@ -61,9 +60,9 @@ class DefinitionImpl
QList<ListItemInfo> *xrefListItems;
GroupList *partOfGroups;
DocInfo *details; // not exported
DocInfo *brief; // not exported
BodyInfo *body; // not exported
DocInfo *details; // not exported
BriefInfo *brief; // not exported
BodyInfo *body; // not exported
QCString localName; // local (unqualified) name of the definition
// in the future m_name should become m_localName
......@@ -101,8 +100,7 @@ DefinitionImpl::~DefinitionImpl()
}
void DefinitionImpl::init(const char *df,int dl,
const char *n,const char *b,
const char *d)
const char *n)
{
defFileName = df;
int lastDot = defFileName.findRev('.');
......@@ -123,25 +121,8 @@ void DefinitionImpl::init(const char *df,int dl,
}
//printf("m_localName=%s\n",m_localName.data());
if (b)
{
brief = new DocInfo;
brief->doc = b;
}
else
{
brief = 0;
}
if (d)
{
details = new DocInfo;
details->doc = d;
}
else
{
details = 0;
}
brief = 0;
details = 0;
body = 0;
sourceRefByDict=0;
sourceRefsDict=0;
......@@ -238,9 +219,11 @@ Definition::Definition(const char *df,int dl,
{
m_name = name;
m_impl = new DefinitionImpl;
m_impl->init(df,dl,name,b,d);
m_impl->init(df,dl,name);
m_isSymbol = isSymbol;
if (isSymbol) addToMap(name,this);
_setBriefDescription(b,df,dl);
_setDocumentation(d,df,dl,TRUE);
}
Definition::~Definition()
......@@ -307,10 +290,9 @@ void Definition::writeDocAnchorsToTagFile()
}
}
void Definition::setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace)
void Definition::_setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace)
{
if (d==0) return;
makeResident();
//printf("Definition::setDocumentation(%s,%s,%d,%d)\n",d,docFile,docLine,stripWhiteSpace);
QCString doc = d;
if (stripWhiteSpace)
......@@ -331,21 +313,26 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine,
m_impl->details->line = docLine;
}
void Definition::setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace)
{
if (d==0) return;
makeResident();
_setDocumentation(d,docFile,docLine,stripWhiteSpace);
}
#define uni_isupper(c) (QChar(c).category()==QChar::Letter_Uppercase)
void Definition::setBriefDescription(const char *b,const char *briefFile,int briefLine)
{
void Definition::_setBriefDescription(const char *b,const char *briefFile,int briefLine)
{
if (b==0) return;
static QCString outputLanguage = Config_getEnum("OUTPUT_LANGUAGE");
static bool needsDot = outputLanguage!="Japanese" &&
outputLanguage!="Chinese" &&
outputLanguage!="Korean";
makeResident();
//fprintf(stderr,"Definition::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
if (m_impl->brief==0)
{
m_impl->brief = new DocInfo;
m_impl->brief = new BriefInfo;
}
m_impl->brief->doc=QCString(b).stripWhiteSpace();
int bl=m_impl->brief->doc.length();
......@@ -361,6 +348,14 @@ void Definition::setBriefDescription(const char *b,const char *briefFile,int bri
}
m_impl->brief->file = briefFile;
m_impl->brief->line = briefLine;
m_impl->brief->tooltip = parseCommentAsText(m_impl->brief->doc,briefFile,briefLine);
}
void Definition::setBriefDescription(const char *b,const char *briefFile,int briefLine)
{
if (b==0) return;
makeResident();
_setBriefDescription(b,briefFile,briefLine);
}
/*! Reads a fragment of code from file \a fileName starting at
......@@ -1040,6 +1035,12 @@ QCString Definition::briefDescription() const
return m_impl->brief ? m_impl->brief->doc : QCString("");
}
QCString Definition::briefDescriptionAsTooltip() const
{
makeResident();
return m_impl->brief ? m_impl->brief->tooltip : QCString("");
}
int Definition::briefLine() const
{
makeResident();
......@@ -1180,7 +1181,7 @@ void Definition::flushToDisk() const
marshalItemInfoList (Doxygen::symbolStorage,m_impl->xrefListItems);
marshalGroupList (Doxygen::symbolStorage,m_impl->partOfGroups);
marshalDocInfo (Doxygen::symbolStorage,m_impl->details);
marshalDocInfo (Doxygen::symbolStorage,m_impl->brief);
marshalBriefInfo (Doxygen::symbolStorage,m_impl->brief);
marshalBodyInfo (Doxygen::symbolStorage,m_impl->body);
marshalQCString (Doxygen::symbolStorage,m_impl->localName);
marshalQCString (Doxygen::symbolStorage,m_impl->qualifiedName);
......@@ -1209,7 +1210,7 @@ void Definition::loadFromDisk() const
m_impl->xrefListItems = unmarshalItemInfoList (Doxygen::symbolStorage);
m_impl->partOfGroups = unmarshalGroupList (Doxygen::symbolStorage);
m_impl->details = unmarshalDocInfo (Doxygen::symbolStorage);
m_impl->brief = unmarshalDocInfo (Doxygen::symbolStorage);
m_impl->brief = unmarshalBriefInfo (Doxygen::symbolStorage);
m_impl->body = unmarshalBodyInfo (Doxygen::symbolStorage);
m_impl->localName = unmarshalQCString (Doxygen::symbolStorage);
m_impl->qualifiedName = unmarshalQCString (Doxygen::symbolStorage);
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -37,12 +37,14 @@ struct SectionInfo;
class Definition;
class DefinitionImpl;
#if 0
struct ReachableDefinition
{
ReachableDefinition(Definition *d,int dist) : def(d), distance(dist) {}
Definition *def;
int distance;
};
#endif
struct DocInfo
{
......@@ -51,6 +53,14 @@ struct DocInfo
QCString file;
};
struct BriefInfo
{
QCString doc;
QCString tooltip;
int line;
QCString file;
};
struct BodyInfo
{
int startLine; // line number of the start of the definition
......@@ -135,9 +145,14 @@ class Definition : public DefinitionIntf, public LockableObj
*/
QCString docFile() const;
/*! Returns the brief description of this definition */
/*! Returns the brief description of this definition. This can include commands. */
QCString briefDescription() const;
/*! Returns a plain text version of the brief description suitable for use
* as a tool tip.
*/
QCString briefDescriptionAsTooltip() const;
/*! Returns the line number at which the brief description was found. */
int briefLine() const;
......@@ -182,6 +197,7 @@ class Definition : public DefinitionIntf, public LockableObj
/*! Returns TRUE iff the name may appear in the output */
virtual bool isVisible() const;
/*! Returns TRUE iff this item is supposed to be hidden from the output. */
bool isHidden() const;
/*! If this definition was imported via a tag file, this function
......@@ -293,6 +309,8 @@ class Definition : public DefinitionIntf, public LockableObj
int _getXRefListId(const char *listName) const;
void _writeSourceRefList(OutputList &ol,const char *scopeName,
const QCString &text,MemberSDict *members,bool);
void _setBriefDescription(const char *b,const char *briefFile,int briefLine);
void _setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace);
DefinitionImpl *m_impl; // internal structure holding all private data
QCString m_name;
bool m_isSymbol;
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -902,7 +902,8 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
DocLinkedWord(parent,name,
member->getReference(),
member->getOutputFileBase(),
member->anchor()
member->anchor(),
member->briefDescriptionAsTooltip()
)
);
}
......@@ -920,7 +921,8 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
DocLinkedWord(parent,name,
compound->getReference(),
compound->getOutputFileBase(),
""
"",
compound->briefDescriptionAsTooltip()
)
);
}
......@@ -932,7 +934,8 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
DocLinkedWord(parent,g_token->name,
compound->getReference(),
compound->getSourceFileBase(),
""
"",
compound->briefDescriptionAsTooltip()
)
);
}
......@@ -957,7 +960,9 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
DocLinkedWord(parent,name,
cd->getReference(),
cd->getOutputFileBase(),
""));
"",
cd->briefDescriptionAsTooltip()
));
}
else // normal non-linkable word
{
......@@ -1448,9 +1453,10 @@ DocWord::DocWord(DocNode *parent,const QString &word) :
DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word,
const QString &ref,const QString &file,
const QString &anchor) :
const QString &anchor,const QString &tooltip) :
m_parent(parent), m_word(word), m_ref(ref),
m_file(file), m_relPath(g_relPath), m_anchor(anchor)
m_file(file), m_relPath(g_relPath), m_anchor(anchor),
m_tooltip(tooltip)
{
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if (!g_searchUrl.isEmpty())
......@@ -2835,6 +2841,7 @@ int DocHtmlRow::parse()
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: expected <td> or <th> tag but "
"found <%s> instead!",g_token->name.data());
doctokenizerYYpushBackHtmlTag(g_token->name);
goto endrow;
}
}
......@@ -3161,6 +3168,7 @@ int DocHtmlDescList::parse()
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: expected <dt> tag but "
"found <%s> instead!",g_token->name.data());
doctokenizerYYpushBackHtmlTag(g_token->name);
goto enddesclist;
}
}
......@@ -3294,6 +3302,7 @@ int DocHtmlList::parse()
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: expected <li> tag but "
"found <%s> instead!",g_token->name.data());
doctokenizerYYpushBackHtmlTag(g_token->name);
goto endlist;
}
}
......@@ -3354,6 +3363,7 @@ int DocHtmlList::parseXml()
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: expected <item> tag but "
"found <%s> instead!",g_token->name.data());
doctokenizerYYpushBackHtmlTag(g_token->name);
goto endlist;
}
}
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -206,7 +206,7 @@ class DocLinkedWord : public DocNode
public:
DocLinkedWord(DocNode *parent,const QString &word,
const QString &ref,const QString &file,
const QString &anchor);
const QString &anchor,const QString &tooltip);
QString word() const { return m_word; }
Kind kind() const { return Kind_LinkedWord; }
DocNode *parent() const { return m_parent; }
......@@ -214,6 +214,7 @@ class DocLinkedWord : public DocNode
QString relPath() const { return m_relPath; }
QString ref() const { return m_ref; }
QString anchor() const { return m_anchor; }
QString tooltip() const { return m_tooltip; }
void accept(DocVisitor *v) { v->visit(this); }
private:
......@@ -223,6 +224,7 @@ class DocLinkedWord : public DocNode
QString m_file;
QString m_relPath;
QString m_anchor;
QString m_tooltip;
};
/*! @brief Node representing an URL (or email address) */
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -143,5 +143,6 @@ void doctokenizerYYsetStateInternalRef();
void doctokenizerYYsetStateText();
void doctokenizerYYsetStateSkipTitle();
void doctokenizerYYsetInsidePre(bool b);
void doctokenizerYYpushBackHtmlTag(const char *tag);
#endif
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -1060,6 +1060,18 @@ void doctokenizerYYsetInsidePre(bool b)
g_insidePre = b;
}
void doctokenizerYYpushBackHtmlTag(const char *tag)
{
QCString tagName = tag;
int i,l = tagName.length();
unput('>');
for (i=l-1;i>=0;i--)
{
unput(tag[i]);
}
unput('<');
}
#if !defined(YY_FLEX_SUBMINOR_VERSION)
extern "C" { // some bogus code to keep the compiler happy
void doctokenizerYYdummy() { yy_flex_realloc(0,0); }
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -25,7 +25,8 @@ const int DocVisitor_Latex = 1;
const int DocVisitor_XML = 2;
const int DocVisitor_RTF = 3;
const int DocVisitor_Man = 4;
const int DocVisitor_Other = 5;
const int DocVisitor_Text = 5;
const int DocVisitor_Other = 6;
// forward declarations
class DocWord;
......
This diff is collapsed.
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -37,6 +37,7 @@ class DotGroupCollaboration;
enum GraphOutputFormat { BITMAP , EPS };
/** @brief Attributes of an edge of a dot graph */
struct EdgeInfo
{
enum Colors { Blue=0, Green=1, Red=2, Purple=3, Grey=4, Orange=5 };
......@@ -50,11 +51,14 @@ struct EdgeInfo
int m_labColor;
};
/** @brief A node in a dot graph */
class DotNode
{
public:
enum GraphType { Dependency, Inheritance, Collaboration, Hierarchy, CallGraph };
DotNode(int n,const char *lab,const char *url,int distance = 0,bool rootNode=FALSE,ClassDef *cd=0);
enum TruncState { Unknown, Truncated, Untruncated };
DotNode(int n,const char *lab,const char *tip,const char *url,
bool rootNode=FALSE,ClassDef *cd=0);
~DotNode();
void addChild(DotNode *n,
int edgeColor=EdgeInfo::Purple,
......@@ -63,20 +67,21 @@ class DotNode
const char *edgeURL=0,
int edgeLabCol=-1
);
void setDistance(int distance);
void addParent(DotNode *n);
void deleteNode(DotNodeList &deletedList,SDict<DotNode> *skipNodes=0);
void removeChild(DotNode *n);
void removeParent(DotNode *n);
int findParent( DotNode *n );
void write(QTextStream &t,GraphType gt,GraphOutputFormat f,
bool topDown,bool toChildren,int maxDistance,bool backArrows,bool reNumber);
bool topDown,bool toChildren,bool backArrows,bool reNumber);
int m_subgraphId;
void clearWriteFlag();
void writeXML(QTextStream &t,bool isClassGraph);
void writeDEF(QTextStream &t);
QCString label() const { return m_label; }
int number() const { return m_number; }
bool isVisible() const { return m_visible; }
TruncState isTruncated() const { return m_truncated; }
private:
void colorConnectedNodes(int curColor);
......@@ -85,8 +90,11 @@ class DotNode
void writeArrow(QTextStream &t,GraphType gt,GraphOutputFormat f,DotNode *cn,
EdgeInfo *ei,bool topDown, bool pointBack=TRUE, bool reNumber=FALSE);
const DotNode *findDocNode() const; // only works for acyclic graphs!
void markAsVisible(bool b=TRUE) { m_visible=b; }
void markAsTruncated(bool b=TRUE) { m_truncated=b ? Truncated : Untruncated; }
int m_number;
QCString m_label; //!< label text
QCString m_tooltip; //!< node's tooltip
QCString m_url; //!< url of the node (format: remote$local)
QList<DotNode> *m_parents; //!< list of parent nodes (incoming arrows)
QList<DotNode> *m_children; //!< list of child nodes (outgoing arrows)
......@@ -94,9 +102,10 @@ class DotNode
bool m_deleted; //!< used to mark a node as deleted
bool m_written; //!< used to mark a node as written
bool m_hasDoc; //!< used to mark a node as documented
int m_distance; //!< distance to the root node
bool m_isRoot; //!< indicates if this is a root node
ClassDef * m_classDef; //!< class representing this node (can be 0)
bool m_visible; //!< is the node visible in the output
TruncState m_truncated; //!< does the node have non-visible children/parents
friend class DotGfxHierarchyTable;
friend class DotClassGraph;
......@@ -105,27 +114,23 @@ class DotNode
friend class DotCallGraph;
friend class DotGroupCollaboration;
friend void writeDotGraph(
DotNode *root, GraphType gt,
GraphOutputFormat f, const QCString &baseName,
bool lrRank, bool renderParents,
int distance, bool backArrows, bool reNumber
);
friend QCString computeMd5Signature(
DotNode *root, GraphType gt,
GraphOutputFormat f,
bool lrRank, bool renderParents,
int distance, bool backArrows
bool backArrows,
QCString &graphStr
);
};
inline
int DotNode::findParent( DotNode *n )
inline int DotNode::findParent( DotNode *n )
{
if( !m_parents )
return -1;
return m_parents->find(n);
}
/** @brief Represents a graphical class hierarchy */
class DotGfxHierarchyTable
{
public:
......@@ -143,11 +148,11 @@ class DotGfxHierarchyTable
DotNodeList *m_rootSubgraphs;
};
/** @brief Representation of a class inheritance or dependency graph */
class DotClassGraph
{
public:
//enum GraphType { Interface, Implementation, Inheritance };
DotClassGraph(ClassDef *cd,DotNode::GraphType t,int maxRecusionDepth);
DotClassGraph(ClassDef *cd,DotNode::GraphType t);
~DotClassGraph();
bool isTrivial() const;
QCString writeGraph(QTextStream &t,GraphOutputFormat f,const char *path,
......@@ -158,23 +163,25 @@ class DotClassGraph
QCString diskName() const;
private:
void buildGraph(ClassDef *cd,DotNode *n,int level,bool base);
void buildGraph(ClassDef *cd,DotNode *n,bool base);
void determineVisibleNodes(QList<DotNode> &queue,int &maxNodes,bool includeParents);
void determineTruncatedNodes(QList<DotNode> &queue,bool includeParents);
void addClass(ClassDef *cd,DotNode *n,int prot,const char *label,
int level,const char *usedName,const char *templSpec,
const char *usedName,const char *templSpec,
bool base);
DotNode * m_startNode;
QDict<DotNode> * m_usedNodes;
static int m_curNodeNumber;
DotNode::GraphType m_graphType;
int m_recDepth;
QCString m_diskName;
int m_maxDistance;
};
/** @brief Representation of an include dependency graph */
class DotInclDepGraph
{
public:
DotInclDepGraph(FileDef *fd,int maxRecusionDepth,bool inverse);
DotInclDepGraph(FileDef *fd,bool inverse);
~DotInclDepGraph();
QCString writeGraph(QTextStream &t, GraphOutputFormat f,const char *path,
const char *relPath,
......@@ -184,25 +191,30 @@ class DotInclDepGraph
void writeXML(QTextStream &t);
private:
void buildGraph(DotNode *n,FileDef *fd,int distance);
void buildGraph(DotNode *n,FileDef *fd);
void determineVisibleNodes(QList<DotNode> &queue,int &maxNodes);
void determineTruncatedNodes(QList<DotNode> &queue);
DotNode *m_startNode;
QDict<DotNode> *m_usedNodes;
static int m_curNodeNumber;
QCString m_diskName;
int m_maxDistance;
bool m_inverse;
int m_recDepth;
};
/** @brief Representation of an call graph */
class DotCallGraph
{
public:
DotCallGraph(MemberDef *md,int maxRecursionDepth, bool inverse);
DotCallGraph(MemberDef *md,bool inverse);
~DotCallGraph();
QCString writeGraph(QTextStream &t, GraphOutputFormat f,
const char *path,const char *relPath,bool writeImageMap=TRUE);
void buildGraph(DotNode *n,MemberDef *md,int distance);
void buildGraph(DotNode *n,MemberDef *md);
bool isTrivial() const;
void determineVisibleNodes(QList<DotNode> &queue, int &maxNodes);
void determineTruncatedNodes(QList<DotNode> &queue);
private:
DotNode *m_startNode;
......@@ -215,6 +227,7 @@ class DotCallGraph
Definition * m_scope;
};
/** @brief Representation of an directory dependency graph */
class DotDirDeps
{
public:
......@@ -230,6 +243,7 @@ class DotDirDeps
DirDef *m_dir;
};
/** @brief Representation of a group collaboration graph */
class DotGroupCollaboration
{
public :
......@@ -271,7 +285,7 @@ class DotGroupCollaboration
QCString writeGraph(QTextStream &t, GraphOutputFormat format,
const char *path,const char *relPath,
bool writeImageMap=TRUE);
void buildGraph(GroupDef* gd,int distance);
void buildGraph(GroupDef* gd);
bool isTrivial() const;
private :
void addCollaborationMember( Definition* def, QCString& url, EdgeType eType );
......@@ -308,8 +322,9 @@ class DotRunner
};
/** Generated a graphs legend page */
void generateGraphLegend(const char *path);
void writeDotGraphFromFile(const char *inFile,const char *outDir,
const char *outFile,GraphOutputFormat format);
QString getDotImageMapFromFile(const QString& inFile, const QString& outDir,
......
This diff is collapsed.
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -43,9 +43,9 @@ class DevNullCodeDocInterface : public CodeOutputInterface
{
public:
virtual void codify(const char *) {}
virtual void writeCodeLink(const char *ref,const char *file,
const char *anchor,const char *name)
{ ref=ref; file=file; anchor=anchor; name=name; }
virtual void writeCodeLink(const char *,const char *,
const char *,const char *,
const char *) {}
virtual void writeLineNumber(const char *,const char *,
const char *,int) {}
virtual void startCodeLine() {}
......@@ -324,9 +324,10 @@ void FileDef::writeDocumentation(OutputList &ol)
bool isIDLorJava = FALSE;
if (fd)
{
isIDLorJava = fd->name().right(4)==".idl" ||
isIDLorJava = fd->name().right(4)==".idl" || // M$ or Corba IDL
fd->name().right(5)==".pidl" ||
fd->name().right(5)==".java";
fd->name().right(5)==".java" || // Sun's Java
fd->name().right(4)==".jsl"; // M$ J#
}
ol.startTypewriter();
if (isIDLorJava) // IDL/Java include
......@@ -393,7 +394,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("HAVE_DOT") && Config_getBool("INCLUDE_GRAPH"))
{
//printf("Graph for file %s\n",name().data());
DotInclDepGraph incDepGraph(this,Config_getInt("MAX_DOT_GRAPH_DEPTH"),FALSE);
DotInclDepGraph incDepGraph(this,FALSE);
if (!incDepGraph.isTrivial())
{
ol.startTextBlock();
......@@ -411,7 +412,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("HAVE_DOT") && Config_getBool("INCLUDED_BY_GRAPH"))
{
//printf("Graph for file %s\n",name().data());
DotInclDepGraph incDepGraph(this,Config_getInt("MAX_DOT_GRAPH_DEPTH"),TRUE);
DotInclDepGraph incDepGraph(this,TRUE);
if (!incDepGraph.isTrivial())
{
ol.startTextBlock();
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
i
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -69,7 +69,7 @@ void HtmlDocVisitor::visit(DocWord *w)
void HtmlDocVisitor::visit(DocLinkedWord *w)
{
if (m_hide) return;
startLink(w->ref(),w->file(),w->relPath(),w->anchor());
startLink(w->ref(),w->file(),w->relPath(),w->anchor(),w->tooltip());
filter(w->word());
endLink();
}
......@@ -228,9 +228,10 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
static int dotindex = 1;
QCString fileName(4096);
fileName.sprintf("%s%d",
fileName.sprintf("%s%d%s",
(Config_getString("HTML_OUTPUT")+"/inline_dotgraph_").data(),
dotindex++
dotindex++,
".dot"
);
QFile file(fileName);
if (!file.open(IO_WriteOnly))
......@@ -244,7 +245,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
writeDotFile(fileName,s->relPath());
m_t << "</div>" << endl;
file.remove();
if (Config_getBool("DOT_CLEANUP")) file.remove();
}
break;
}
......@@ -1062,7 +1063,8 @@ void HtmlDocVisitor::filterQuotedCdataAttr(const char* str)
}
void HtmlDocVisitor::startLink(const QString &ref,const QString &file,
const QString &relPath,const QString &anchor)
const QString &relPath,const QString &anchor,
const QString &tooltip)
{
QCString *dest;
if (!ref.isEmpty()) // link to entity imported via tag file
......@@ -1087,7 +1089,9 @@ void HtmlDocVisitor::startLink(const QString &ref,const QString &file,
}
if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
if (!anchor.isEmpty()) m_t << "#" << anchor;
m_t << "\">";
m_t << "\"";
if (!tooltip.isEmpty()) m_t << " title=\"" << tooltip << "\"";
m_t << ">";
}
void HtmlDocVisitor::endLink()
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -132,7 +132,8 @@ class HtmlDocVisitor : public DocVisitor
void filter(const char *str);
void filterQuotedCdataAttr(const char* str);
void startLink(const QString &ref,const QString &file,
const QString &relPath,const QString &anchor);
const QString &relPath,const QString &anchor,
const QString &tooltip = QString::null);
void endLink();
void writeDotFile(const QString &fileName,const QString &relPath);
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -586,7 +586,7 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
void HtmlGenerator::writeFooterFile(QFile &file)
{
QTextStream t(&file);
t << "<hr size=\"1\"><address style=\"align: right;\"><small>\n";
t << "<hr size=\"1\"><address style=\"text-align: right;\"><small>\n";
t << theTranslator->trGeneratedAt( "$datetime", "$projectname" );
t << "&nbsp;<a href=\"http://www.doxygen.org/index.html\">"
<< "<img src=\"doxygen.png\" alt=\"doxygen\" "
......@@ -642,7 +642,7 @@ static void writePageFooter(QTextStream &t,const QCString &lastTitle,
{
if (g_footer.isEmpty())
{
t << "<hr size=\"1\"><address style=\"align: right;\"><small>";
t << "<hr size=\"1\"><address style=\"text-align: right;\"><small>";
t << theTranslator->trGeneratedAt(
dateToString(TRUE),
Config_getString("PROJECT_NAME")
......@@ -841,7 +841,8 @@ void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
}
void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
const char *anchor, const char *name)
const char *anchor, const char *name,
const char *tooltip)
{
QCString *dest;
if (ref)
......@@ -866,7 +867,9 @@ void HtmlGenerator::writeCodeLink(const char *ref,const char *f,
}
if (f) t << f << Doxygen::htmlFileExtension;
if (anchor) t << "#" << anchor;
t << "\">";
t << "\"";
if (tooltip) t << " title=\"" << tooltip << "\"";
t << ">";
docify(name);
t << "</a>";
col+=strlen(name);
......@@ -1508,7 +1511,7 @@ void HtmlGenerator::writeLineNumber(const char *ref,const char *file,
if (file)
{
startCodeAnchor(lineAnchor);
writeCodeLink(ref,file,anchor,lineNumber);
writeCodeLink(ref,file,anchor,lineNumber,0);
endCodeAnchor();
}
else
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -79,7 +79,8 @@ class HtmlGenerator : public OutputGenerator
void writeObjectLink(const char *ref,const char *file,
const char *anchor,const char *name);
void writeCodeLink(const char *ref,const char *file,
const char *anchor,const char *name);
const char *anchor,const char *name,
const char *tooltip);
void startTextLink(const char *file,const char *anchor);
void endTextLink();
void startHtmlLink(const char *url);
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......@@ -261,7 +261,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
Doxygen::parserManager->getParser(m_langExt)
->parseCode(m_ci,s->context(),s->text().latin1(),
s->isExample(),s->exampleFile());
m_t << "\\end{verbatim}\\end{Code}\n" << endl;
m_t << "\\end{verbatim}\n\\end{Code}\n" << endl;
break;
case DocVerbatim::Verbatim:
m_t << "\n\n\\footnotesize\\begin{verbatim}";
......@@ -281,9 +281,10 @@ void LatexDocVisitor::visit(DocVerbatim *s)
static int dotindex = 1;
QCString fileName(4096);
fileName.sprintf("%s%d",
fileName.sprintf("%s%d%s",
(Config_getString("LATEX_OUTPUT")+"/inline_dotgraph_").data(),
dotindex++
dotindex++,
".dot"
);
QFile file(fileName);
if (!file.open(IO_WriteOnly))
......@@ -298,7 +299,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
endDotFile(FALSE);
m_t << "\\end{center}\n";
file.remove();
if (Config_getBool("DOT_CLEANUP")) file.remove();
}
break;
}
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -1022,7 +1022,8 @@ void LatexGenerator::endPageRef(const char *clname, const char *anchor)
}
void LatexGenerator::writeCodeLink(const char *,const char *,
const char *,const char *name)
const char *,const char *name,
const char *)
{
t << name;
col+=strlen(name);
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......@@ -77,7 +77,8 @@ class LatexGenerator : public OutputGenerator
void writeObjectLink(const char *ref,const char *file,
const char *anchor,const char *name);
void writeCodeLink(const char *ref, const char *file,
const char *anchor,const char *name);
const char *anchor,const char *name,
const char *tooltip);
void startTextLink(const char *,const char *);
void endTextLink();
void startHtmlLink(const char *url);
......@@ -117,7 +118,7 @@ class LatexGenerator : public OutputGenerator
void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ }
void writeAnchor(const char *fileName,const char *name);
void startCodeFragment() { t << endl << endl << "\\begin{Code}\\begin{verbatim}"; }
void endCodeFragment() { t << "\\end{verbatim}\\end{Code}" << endl; }
void endCodeFragment() { t << "\\end{verbatim}\n\\end{Code}" << endl; }
void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; }
void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......@@ -93,6 +93,7 @@ HEADERS = bufstr.h \
sortdict.h \
store.h \
tagreader.h \
textdocvisitor.h \
translator.h \
translator_adapter.h \
translator_br.h \
......@@ -195,6 +196,7 @@ SOURCES = ce_lex.cpp \
searchindex.cpp \
store.cpp \
tagreader.cpp \
textdocvisitor.cpp \
translator.cpp \
util.cpp \
version.cpp \
......
#
# $Id$
#
#
# Copyright (C) 1997-2006 by Dimitri van Heesch.
#
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
*
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2006 by Dimitri van Heesch.
......
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.
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