Commit 0ee700fc authored by dimitri's avatar dimitri

Release-1.5.1-20070107

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