Commit c3a03d5c authored by dimitri's avatar dimitri

Release-1.8.0

parent 709a80a7
...@@ -121,7 +121,20 @@ EXCLUDE = src/code.cpp \ ...@@ -121,7 +121,20 @@ EXCLUDE = src/code.cpp \
src/doxygen_php.h \ src/doxygen_php.h \
src/compound_xsd.h \ src/compound_xsd.h \
src/layout_default.h \ src/layout_default.h \
src/bib2xhtml.h src/bib2xhtml.h \
src/doxygen_bst.h \
src/header_html.h \
src/index_xsd.h \
src/jquery_js.h \
src/jquery_fx_js.h \
src/jquery_ui_js.h \
src/navtree_css.h \
src/navtree_hs.h \
src/search_css.h \
src/search_functions_php.h \
src/search_opensearch_php.h \
src/search_js.h \
src/sizzle_js.h
EXCLUDE_SYMLINKS = NO EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS = EXCLUDE_SYMBOLS =
......
DOXYGEN Version 1.7.6.1-20120220 DOXYGEN Version 1.8.0
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (20 February 2012) Dimitri van Heesch (25 February 2012)
DOXYGEN Version 1.7.6.1_20120220 DOXYGEN Version 1.8.0
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -26,4 +26,4 @@ forum. ...@@ -26,4 +26,4 @@ forum.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (20 February 2012) Dimitri van Heesch (dimitri@stack.nl) (25 February 2012)
...@@ -16,11 +16,11 @@ ...@@ -16,11 +16,11 @@
# shell script to configure doxygen # shell script to configure doxygen
doxygen_version_major=1 doxygen_version_major=1
doxygen_version_minor=7 doxygen_version_minor=8
doxygen_version_revision=6.1 doxygen_version_revision=0
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20120220 doxygen_version_mmn=NO
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
...@@ -539,8 +539,8 @@ Structural indicators ...@@ -539,8 +539,8 @@ Structural indicators
this command in a comment block of a define or variable, the this command in a comment block of a define or variable, the
initializer is always hidden. The maximum number of initialization lines initializer is always hidden. The maximum number of initialization lines
can be changed by means of the configuration parameter can be changed by means of the configuration parameter
\ref cfg_max_initializer_lines "MAX_INITIALIZER_LINES", the default value is \ref cfg_max_initializer_lines "MAX_INITIALIZER_LINES", the default
30. value is 30.
\sa section \ref cmdshowinitializer "\\showinitializer". \sa section \ref cmdshowinitializer "\\showinitializer".
......
...@@ -169,10 +169,8 @@ Examples: ...@@ -169,10 +169,8 @@ Examples:
__double underscores__ __double underscores__
Note that unlike standard Markdown, doxygen will not touch internal underscores or See section \ref mddox_emph_spans for more info how doxygen handles
stars, so the following will appear as-is: emphasis spans slightly different than standard Markdown.
a_nice_identifier
\subsection md_codespan code spans \subsection md_codespan code spans
...@@ -505,6 +503,24 @@ For Item1 the indentation is 4 (when treating the list marker as whitespace), ...@@ -505,6 +503,24 @@ For Item1 the indentation is 4 (when treating the list marker as whitespace),
so the next paragraph "More text..." starts at the same indentation level so the next paragraph "More text..." starts at the same indentation level
and is therefore not seen as a code block. and is therefore not seen as a code block.
\subsection mddox_emph_spans Emphasis limits
Unlike standard Markdown, doxygen will not touch internal underscores or
stars, so the following will appear as-is:
a_nice_identifier
Futhermore, a `*` or `_` only starts an emphasis if
- it is followed by an alphanumberical character, and
- it is preceded by a space, newline, or one the following characters `<{([,:;`
An emphasis ends if
- it is not following by an alphanumerical character, and
- it is not preceded by a space, newline, or one the following characters `({[<=+-\@`
Lastly, the span of the emphasis is limited to a single paragraph.
\subsection mddox_code_spans Code Spans Limits \subsection mddox_code_spans Code Spans Limits
Note that unlike standard Markdown, doxygen leaves the following untouched. Note that unlike standard Markdown, doxygen leaves the following untouched.
......
...@@ -82,12 +82,12 @@ QString QDir::canonicalPath() const ...@@ -82,12 +82,12 @@ QString QDir::canonicalPath() const
char cur[PATH_MAX]; char cur[PATH_MAX];
char tmp[PATH_MAX]; char tmp[PATH_MAX];
GETCWD( cur, PATH_MAX ); (void)GETCWD( cur, PATH_MAX );
if ( CHDIR(QFile::encodeName(dPath)) >= 0 ) { if ( CHDIR(QFile::encodeName(dPath)) >= 0 ) {
GETCWD( tmp, PATH_MAX ); (void)GETCWD( tmp, PATH_MAX );
r = QFile::decodeName(tmp); r = QFile::decodeName(tmp);
} }
CHDIR( cur ); (void)CHDIR( cur );
slashify( r ); slashify( r );
return r; return r;
......
...@@ -1515,7 +1515,7 @@ bool QXmlDefaultHandler::unparsedEntityDecl( const QString&, const QString&, ...@@ -1515,7 +1515,7 @@ bool QXmlDefaultHandler::unparsedEntityDecl( const QString&, const QString&,
provided in the XML document. provided in the XML document.
*/ */
bool QXmlDefaultHandler::resolveEntity( const QString&, const QString&, bool QXmlDefaultHandler::resolveEntity( const QString&, const QString&,
QXmlInputSource* ret ) QXmlInputSource* &ret )
{ {
ret = 0; ret = 0;
return TRUE; return TRUE;
......
...@@ -440,7 +440,7 @@ class QM_EXPORT QXmlEntityResolver ...@@ -440,7 +440,7 @@ class QM_EXPORT QXmlEntityResolver
{ {
public: public:
virtual ~QXmlEntityResolver() {} virtual ~QXmlEntityResolver() {}
virtual bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* ret ) = 0; virtual bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* &ret ) = 0;
virtual QString errorString() = 0; virtual QString errorString() = 0;
}; };
...@@ -494,7 +494,7 @@ public: ...@@ -494,7 +494,7 @@ public:
bool notationDecl( const QString& name, const QString& publicId, const QString& systemId ); bool notationDecl( const QString& name, const QString& publicId, const QString& systemId );
bool unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName ); bool unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName );
bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* ret ); bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* &ret );
bool startDTD( const QString& name, const QString& publicId, const QString& systemId ); bool startDTD( const QString& name, const QString& publicId, const QString& systemId );
bool endDTD(); bool endDTD();
......
...@@ -82,21 +82,22 @@ static void replaceCommentMarker(const char *s,int len) ...@@ -82,21 +82,22 @@ static void replaceCommentMarker(const char *s,int len)
{ {
const char *p=s; const char *p=s;
char c; char c;
// copy blanks // copy leading blanks
while ((c=*p) && (c==' ' || c=='\t' || c=='\n')) while ((c=*p) && (c==' ' || c=='\t' || c=='\n'))
{ {
ADDCHAR(c); ADDCHAR(c);
g_lineNr += c=='\n'; g_lineNr += c=='\n';
p++; p++;
} }
// replace start of comment marker by spaces // replace start of comment marker by blanks and the last character by a *
int blanks=0;
while ((c=*p) && (c=='/' || c=='!' || c=='#')) while ((c=*p) && (c=='/' || c=='!' || c=='#'))
{ {
ADDCHAR(' '); blanks++;
p++; p++;
if (*p=='<') // comment-after-item marker if (*p=='<') // comment-after-item marker
{ {
ADDCHAR(' '); blanks++;
p++; p++;
} }
if (c=='!') // end after first ! if (c=='!') // end after first !
...@@ -104,6 +105,15 @@ static void replaceCommentMarker(const char *s,int len) ...@@ -104,6 +105,15 @@ static void replaceCommentMarker(const char *s,int len)
break; break;
} }
} }
if (blanks>0)
{
while (blanks>1)
{
ADDCHAR(' ');
blanks--;
}
ADDCHAR('*');
}
// copy comment line to output // copy comment line to output
ADDARRAY(p,len-(p-s)); ADDARRAY(p,len-(p-s));
} }
......
...@@ -454,7 +454,7 @@ static QCString configStringRecode( ...@@ -454,7 +454,7 @@ static QCString configStringRecode(
QCString outputEncoding = toEncoding; QCString outputEncoding = toEncoding;
if (inputEncoding.isEmpty() || outputEncoding.isEmpty() || inputEncoding==outputEncoding) return str; if (inputEncoding.isEmpty() || outputEncoding.isEmpty() || inputEncoding==outputEncoding) return str;
int inputSize=str.length(); int inputSize=str.length();
size_t outputSize=inputSize*4+1; int outputSize=inputSize*4+1;
QCString output(outputSize); QCString output(outputSize);
void *cd = portable_iconv_open(outputEncoding,inputEncoding); void *cd = portable_iconv_open(outputEncoding,inputEncoding);
if (cd==(void *)(-1)) if (cd==(void *)(-1))
...@@ -463,13 +463,13 @@ static QCString configStringRecode( ...@@ -463,13 +463,13 @@ static QCString configStringRecode(
inputEncoding.data(),outputEncoding.data()); inputEncoding.data(),outputEncoding.data());
exit(1); exit(1);
} }
size_t iLeft=inputSize; size_t iLeft=(size_t)inputSize;
size_t oLeft=outputSize; size_t oLeft=(size_t)outputSize;
const char *inputPtr = str.data(); const char *inputPtr = str.data();
char *outputPtr = output.data(); char *outputPtr = output.data();
if (!portable_iconv(cd, &inputPtr, &iLeft, &outputPtr, &oLeft)) if (!portable_iconv(cd, &inputPtr, &iLeft, &outputPtr, &oLeft))
{ {
outputSize-=oLeft; outputSize-=(int)oLeft;
output.resize(outputSize+1); output.resize(outputSize+1);
output.at(outputSize)='\0'; output.at(outputSize)='\0';
//printf("iconv: input size=%d output size=%d\n[%s]\n",size,newSize,srcBuf.data()); //printf("iconv: input size=%d output size=%d\n[%s]\n",size,newSize,srcBuf.data());
......
...@@ -2275,7 +2275,7 @@ void DocInternalRef::parse() ...@@ -2275,7 +2275,7 @@ void DocInternalRef::parse()
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) : DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) :
m_refToSection(FALSE), m_refToAnchor(FALSE) m_refToSection(FALSE), m_refToAnchor(FALSE), m_isSubPage(FALSE)
{ {
m_parent = parent; m_parent = parent;
Definition *compound = 0; Definition *compound = 0;
...@@ -2286,14 +2286,20 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) : ...@@ -2286,14 +2286,20 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) :
SectionInfo *sec = Doxygen::sectionDict[target]; SectionInfo *sec = Doxygen::sectionDict[target];
if (sec) // ref to section or anchor if (sec) // ref to section or anchor
{ {
PageDef *pd = 0;
if (sec->type==SectionInfo::Page)
{
pd = Doxygen::pageSDict->find(target);
}
m_text = sec->title; m_text = sec->title;
if (m_text.isEmpty()) m_text = sec->label; if (m_text.isEmpty()) m_text = sec->label;
m_ref = sec->ref; m_ref = sec->ref;
m_file = stripKnownExtensions(sec->fileName); m_file = stripKnownExtensions(sec->fileName);
if (sec->type!=SectionInfo::Page) m_anchor = sec->label;
m_refToAnchor = sec->type==SectionInfo::Anchor; m_refToAnchor = sec->type==SectionInfo::Anchor;
m_refToSection = sec->type!=SectionInfo::Anchor; m_refToSection = sec->type!=SectionInfo::Anchor;
m_isSubPage = pd && pd->hasParentPage();
if (sec->type!=SectionInfo::Page || m_isSubPage) m_anchor = sec->label;
//printf("m_text=%s,m_ref=%s,m_file=%s,m_refToAnchor=%d type=%d\n", //printf("m_text=%s,m_ref=%s,m_file=%s,m_refToAnchor=%d type=%d\n",
// m_text.data(),m_ref.data(),m_file.data(),m_refToAnchor,sec->type); // m_text.data(),m_ref.data(),m_file.data(),m_refToAnchor,sec->type);
return; return;
......
...@@ -721,11 +721,13 @@ class DocRef : public CompAccept<DocRef>, public DocNode ...@@ -721,11 +721,13 @@ class DocRef : public CompAccept<DocRef>, public DocNode
bool hasLinkText() const { return !m_children.isEmpty(); } bool hasLinkText() const { return !m_children.isEmpty(); }
bool refToAnchor() const { return m_refToAnchor; } bool refToAnchor() const { return m_refToAnchor; }
bool refToSection() const { return m_refToSection; } bool refToSection() const { return m_refToSection; }
bool isSubPage() const { return m_isSubPage; }
void accept(DocVisitor *v) { CompAccept<DocRef>::accept(this,v); } void accept(DocVisitor *v) { CompAccept<DocRef>::accept(this,v); }
private: private:
bool m_refToSection; bool m_refToSection;
bool m_refToAnchor; bool m_refToAnchor;
bool m_isSubPage;
QCString m_file; QCString m_file;
QCString m_relPath; QCString m_relPath;
QCString m_ref; QCString m_ref;
......
...@@ -525,7 +525,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} ...@@ -525,7 +525,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
<St_Para>{SPCMD3} { <St_Para>{SPCMD3} {
g_token->name = "form"; g_token->name = "form";
bool ok; bool ok;
g_token->id = QCString(yytext).right(yyleng-6).toInt(&ok); g_token->id = QCString(yytext).right((int)yyleng-6).toInt(&ok);
ASSERT(ok); ASSERT(ok);
return TK_COMMAND; return TK_COMMAND;
} }
...@@ -633,7 +633,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} ...@@ -633,7 +633,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
<St_Para>{LNKWORD1}{FUNCARG}{CVSPEC}[^a-z_A-Z0-9] { <St_Para>{LNKWORD1}{FUNCARG}{CVSPEC}[^a-z_A-Z0-9] {
g_token->name = yytext; g_token->name = yytext;
g_token->name = g_token->name.left(g_token->name.length()-1); g_token->name = g_token->name.left(g_token->name.length()-1);
unput(yytext[yyleng-1]); unput(yytext[(int)yyleng-1]);
return TK_LNKWORD; return TK_LNKWORD;
} }
/********* patterns for normal words ******************/ /********* patterns for normal words ******************/
...@@ -684,7 +684,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} ...@@ -684,7 +684,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
} }
else // found end of a paragraph else // found end of a paragraph
{ {
g_token->indent=computeIndent(yytext,yyleng-1); g_token->indent=computeIndent(yytext,(int)yyleng-1);
int i; int i;
// put back the indentation (needed for list items) // put back the indentation (needed for list items)
for (i=0;i<g_token->indent;i++) for (i=0;i<g_token->indent;i++)
...@@ -946,7 +946,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} ...@@ -946,7 +946,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
} }
<St_XRefItem2>[0-9]+"." { <St_XRefItem2>[0-9]+"." {
QCString numStr=yytext; QCString numStr=yytext;
numStr=numStr.left(yyleng-1); numStr=numStr.left((int)yyleng-1);
g_token->id=numStr.toInt(); g_token->id=numStr.toInt();
return RetVal_OK; return RetVal_OK;
} }
...@@ -956,7 +956,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} ...@@ -956,7 +956,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
} }
<St_Param>"\""[^\n\"]+"\"" { <St_Param>"\""[^\n\"]+"\"" {
g_token->name = yytext+1; g_token->name = yytext+1;
g_token->name = g_token->name.left(yyleng-2); g_token->name = g_token->name.left((int)yyleng-2);
return TK_WORD; return TK_WORD;
} }
<St_Param>({PHPTYPE}{BLANK}*"|"{BLANK}*)*{PHPTYPE}{WS}+("&")?"$"{LABELID} { <St_Param>({PHPTYPE}{BLANK}*"|"{BLANK}*)*{PHPTYPE}{WS}+("&")?"$"{LABELID} {
......
...@@ -250,7 +250,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, ...@@ -250,7 +250,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath,
{ {
// search for href="...", store ... part in link // search for href="...", store ... part in link
QCString href = "href"; QCString href = "href";
bool isXLink=FALSE; //bool isXLink=FALSE;
int len = 6; int len = 6;
int indexS = buf.find("href=\""), indexE; int indexS = buf.find("href=\""), indexE;
if (indexS>5 && buf.find("xlink:href=\"")!=-1) // XLink href (for SVG) if (indexS>5 && buf.find("xlink:href=\"")!=-1) // XLink href (for SVG)
...@@ -258,7 +258,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, ...@@ -258,7 +258,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath,
indexS-=6; indexS-=6;
len+=6; len+=6;
href.prepend("xlink:"); href.prepend("xlink:");
isXLink=TRUE; //isXLink=TRUE;
} }
if (indexS>=0 && (indexE=buf.find('"',indexS+len))!=-1) if (indexS>=0 && (indexE=buf.find('"',indexS+len))!=-1)
{ {
...@@ -1601,13 +1601,16 @@ void DotNode::writeBox(FTextStream &t, ...@@ -1601,13 +1601,16 @@ void DotNode::writeBox(FTextStream &t,
// add names shown as relation to a dictionary, so we don't show // add names shown as relation to a dictionary, so we don't show
// them as attributes as well // them as attributes as well
QDict<void> arrowNames(17); QDict<void> arrowNames(17);
QListIterator<EdgeInfo> li(*m_edgeInfo); if (m_edgeInfo)
EdgeInfo *ei;
for (li.toFirst();(ei=li.current());++li)
{ {
if (!ei->m_label.isEmpty()) QListIterator<EdgeInfo> li(*m_edgeInfo);
EdgeInfo *ei;
for (li.toFirst();(ei=li.current());++li)
{ {
arrowNames.insert(ei->m_label,(void*)0x8); if (!ei->m_label.isEmpty())
{
arrowNames.insert(ei->m_label,(void*)0x8);
}
} }
} }
......
...@@ -2729,7 +2729,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) ...@@ -2729,7 +2729,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
//int indentDepth=0; //int indentDepth=0;
int si=scope.find('@'); int si=scope.find('@');
//int anonyScopes = 0; //int anonyScopes = 0;
bool added=FALSE; //bool added=FALSE;
static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS"); static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS");
if (si!=-1 && !inlineSimpleStructs) // anonymous scope or type if (si!=-1 && !inlineSimpleStructs) // anonymous scope or type
...@@ -2754,7 +2754,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) ...@@ -2754,7 +2754,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
root->protection, root->protection,
isMemberOf ? Foreign : isRelated ? Related : Member isMemberOf ? Foreign : isRelated ? Related : Member
); );
added=TRUE; //added=TRUE;
} }
else // anonymous scope inside namespace or file => put variable in the global scope else // anonymous scope inside namespace or file => put variable in the global scope
{ {
...@@ -2762,7 +2762,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) ...@@ -2762,7 +2762,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1)
{ {
md=addVariableToFile(rootNav,mtype,pScope,name,TRUE,0); md=addVariableToFile(rootNav,mtype,pScope,name,TRUE,0);
} }
added=TRUE; //added=TRUE;
} }
} }
} }
...@@ -9319,8 +9319,6 @@ static const char *getArg(int argc,char **argv,int &optind) ...@@ -9319,8 +9319,6 @@ static const char *getArg(int argc,char **argv,int &optind)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
extern void commentScanTest();
void initDoxygen() void initDoxygen()
{ {
const char *lang = portable_getenv("LC_ALL"); const char *lang = portable_getenv("LC_ALL");
......
...@@ -31,7 +31,7 @@ class FileDef; ...@@ -31,7 +31,7 @@ class FileDef;
class FileStorage; class FileStorage;
class StorageIntf; class StorageIntf;
class ArgumentList; class ArgumentList;
class ListItemInfo; struct ListItemInfo;
/*! \brief This class stores information about an inheritance relation /*! \brief This class stores information about an inheritance relation
*/ */
......
...@@ -652,6 +652,7 @@ ARGS_L2 "("({ARGS_L0}|[^()]|{ARGS_L1a}|{ARGS_L1})*")" ...@@ -652,6 +652,7 @@ ARGS_L2 "("({ARGS_L0}|[^()]|{ARGS_L1a}|{ARGS_L1})*")"
ARGS {BS}({ARGS_L0}|{ARGS_L1}|{ARGS_L2}) ARGS {BS}({ARGS_L0}|{ARGS_L1}|{ARGS_L2})
NUM_TYPE (complex|integer|logical|real) NUM_TYPE (complex|integer|logical|real)
LOG_OPER (\.and\.|\.eq\.|\.eqv\.|\.ge\.|\.gt\.|\.le\.|\.lt\.|\.ne\.|\.neqv\.|\.or\.|\.not\.)
KIND {ARGS} KIND {ARGS}
CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS})) CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS}))
TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS_}COMPLEX|DOUBLE{BS_}PRECISION|{CHAR}|TYPE{ARGS}) TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS_}COMPLEX|DOUBLE{BS_}PRECISION|{CHAR}|TYPE{ARGS})
...@@ -979,6 +980,9 @@ IGNORE (CALL) ...@@ -979,6 +980,9 @@ IGNORE (CALL)
<*>. { <*>. {
g_code->codify(yytext); g_code->codify(yytext);
} }
<*>{LOG_OPER} { // Fortran logical comparison keywords
g_code->codify(yytext);
}
%% %%
/*@ ---------------------------------------------------------------------------- /*@ ----------------------------------------------------------------------------
......
...@@ -249,6 +249,7 @@ ARGS {BS}({ARGS_L0}|{ARGS_L1}|{ARGS_L2}) ...@@ -249,6 +249,7 @@ ARGS {BS}({ARGS_L0}|{ARGS_L1}|{ARGS_L2})
NOARGS {BS}"\n" NOARGS {BS}"\n"
NUM_TYPE (complex|integer|logical|real) NUM_TYPE (complex|integer|logical|real)
LOG_OPER (\.and\.|\.eq\.|\.eqv\.|\.ge\.|\.gt\.|\.le\.|\.lt\.|\.ne\.|\.neqv\.|\.or\.|\.not\.)
KIND {ARGS} KIND {ARGS}
CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS})) CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS}))
TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS_}COMPLEX|DOUBLE{BS_}PRECISION|{CHAR}|TYPE{ARGS}|CLASS{ARGS}|PROCEDURE{ARGS}?) TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS_}COMPLEX|DOUBLE{BS_}PRECISION|{CHAR}|TYPE{ARGS}|CLASS{ARGS}|PROCEDURE{ARGS}?)
...@@ -1102,7 +1103,9 @@ private { ...@@ -1102,7 +1103,9 @@ private {
popBuffer(); popBuffer();
} }
} }
<*>. { <*>{LOG_OPER} { // Fortran logical comparison keywords
}
<*>. {
//debugStr+=yytext; //debugStr+=yytext;
//printf("I:%c\n", *yytext); //printf("I:%c\n", *yytext);
} // ignore remaining text } // ignore remaining text
...@@ -2070,16 +2073,16 @@ static void subrHandleCommentBlock(const QCString &doc,bool brief) ...@@ -2070,16 +2073,16 @@ static void subrHandleCommentBlock(const QCString &doc,bool brief)
current = subrCurrent.first(); // temporarily switch to the entry of the subroutine / function current = subrCurrent.first(); // temporarily switch to the entry of the subroutine / function
if (docBlock.stripWhiteSpace().find("\\param") == 0) if (docBlock.stripWhiteSpace().find("\\param") == 0)
{ {
handleCommentBlock(doc,brief); handleCommentBlock("\n\n"+doc,brief);
} }
else if (docBlock.stripWhiteSpace().find("@param") == 0) else if (docBlock.stripWhiteSpace().find("@param") == 0)
{ {
handleCommentBlock(doc,brief); handleCommentBlock("\n\n"+doc,brief);
} }
else else
{ {
int dir1 = modifiers[current_root][argName.lower()].direction; int dir1 = modifiers[current_root][argName.lower()].direction;
handleCommentBlock(QCString("@param ") + directionParam[dir1] + " " + handleCommentBlock(QCString("\n\n@param ") + directionParam[dir1] + " " +
argName + " " + doc,brief); argName + " " + doc,brief);
} }
current=tmp_entry; current=tmp_entry;
...@@ -2122,8 +2125,9 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) ...@@ -2122,8 +2125,9 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
{ {
isFixedForm = recognizeFixedForm(fileBuf); isFixedForm = recognizeFixedForm(fileBuf);
if (isFixedForm) { if (isFixedForm)
printf("Prepassing fixed form of %s\n", fileName); {
msg("Prepassing fixed form of %s\n", fileName);
//printf("---strlen=%d\n", strlen(fileBuf)); //printf("---strlen=%d\n", strlen(fileBuf));
//clock_t start=clock(); //clock_t start=clock();
......
...@@ -1374,7 +1374,9 @@ void HtmlDocVisitor::visitPre(DocRef *ref) ...@@ -1374,7 +1374,9 @@ void HtmlDocVisitor::visitPre(DocRef *ref)
if (m_hide) return; if (m_hide) return;
if (!ref->file().isEmpty()) if (!ref->file().isEmpty())
{ {
startLink(ref->ref(),ref->file(),ref->relPath(),ref->anchor()); // when ref->isSubPage()==TRUE we use ref->file() for HTML and
// ref->anchor() for LaTeX/RTF
startLink(ref->ref(),ref->file(),ref->relPath(),ref->isSubPage() ? 0 : ref->anchor());
} }
if (!ref->hasLinkText()) filter(ref->targetTitle()); if (!ref->hasLinkText()) filter(ref->targetTitle());
} }
......
...@@ -29,7 +29,8 @@ d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3) ...@@ -29,7 +29,8 @@ d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3)
0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158; 0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;
if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c, if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,
a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery); a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
;/* ;
/*
* jQuery UI Effects Highlight 1.8.16 * jQuery UI Effects Highlight 1.8.16
* *
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
......
...@@ -29,7 +29,8 @@ ...@@ -29,7 +29,8 @@
"0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;\n" "0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;\n"
"if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,\n" "if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,\n"
"a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);\n" "a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);\n"
";/*\n" ";\n"
"/*\n"
" * jQuery UI Effects Highlight 1.8.16\n" " * jQuery UI Effects Highlight 1.8.16\n"
" *\n" " *\n"
" * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n" " * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n"
......
...@@ -1126,14 +1126,30 @@ void LatexDocVisitor::visitPost(DocLink *lnk) ...@@ -1126,14 +1126,30 @@ void LatexDocVisitor::visitPost(DocLink *lnk)
void LatexDocVisitor::visitPre(DocRef *ref) void LatexDocVisitor::visitPre(DocRef *ref)
{ {
if (m_hide) return; if (m_hide) return;
if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor()); // when ref->isSubPage()==TRUE we use ref->file() for HTML and
// ref->anchor() for LaTeX/RTF
if (ref->isSubPage())
{
startLink(ref->ref(),0,ref->anchor());
}
else
{
if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor());
}
if (!ref->hasLinkText()) filter(ref->targetTitle()); if (!ref->hasLinkText()) filter(ref->targetTitle());
} }
void LatexDocVisitor::visitPost(DocRef *ref) void LatexDocVisitor::visitPost(DocRef *ref)
{ {
if (m_hide) return; if (m_hide) return;
if (!ref->file().isEmpty()) endLink(ref->ref(),ref->file(),ref->anchor()); if (ref->isSubPage())
{
endLink(ref->ref(),0,ref->anchor());
}
else
{
if (!ref->file().isEmpty()) endLink(ref->ref(),ref->file(),ref->anchor());
}
} }
void LatexDocVisitor::visitPre(DocSecRefItem *) void LatexDocVisitor::visitPre(DocSecRefItem *)
......
...@@ -942,7 +942,7 @@ static int processSpecialCommand(GrowBuf &out, const char *data, int offset, int ...@@ -942,7 +942,7 @@ static int processSpecialCommand(GrowBuf &out, const char *data, int offset, int
static void processInline(GrowBuf &out,const char *data,int size) static void processInline(GrowBuf &out,const char *data,int size)
{ {
int i=0, end=0; int i=0, end=0;
action_t action; action_t action = 0;
while (i<size) while (i<size)
{ {
while (end<size && ((action=g_actions[(uchar)data[end]])==0)) end++; while (end<size && ((action=g_actions[(uchar)data[end]])==0)) end++;
......
...@@ -125,10 +125,13 @@ function newNode(o, po, text, link, childrenData, lastNode) ...@@ -125,10 +125,13 @@ function newNode(o, po, text, link, childrenData, lastNode)
var targetPage = stripPath(link.split('#')[0]); var targetPage = stripPath(link.split('#')[0]);
a.href = srcPage!=targetPage ? url : '#'; a.href = srcPage!=targetPage ? url : '#';
a.onclick = function(){ a.onclick = function(){
$('.item').removeClass('selected'); if (!$(a).parent().parent().hasClass('selected'))
$('.item').removeAttr('id'); {
$(a).parent().parent().addClass('selected'); $('.item').removeClass('selected');
$(a).parent().parent().attr('id','selected'); $('.item').removeAttr('id');
$(a).parent().parent().addClass('selected');
$(a).parent().parent().attr('id','selected');
}
var pos, anchor = $(aname), docContent = $('#doc-content'); var pos, anchor = $(aname), docContent = $('#doc-content');
if (anchor.parent().attr('class')=='memItemLeft') { if (anchor.parent().attr('class')=='memItemLeft') {
pos = anchor.parent().position().top; pos = anchor.parent().position().top;
...@@ -229,7 +232,7 @@ function highlightAnchor() ...@@ -229,7 +232,7 @@ function highlightAnchor()
function showNode(o, node, index) function showNode(o, node, index)
{ {
if (node.childrenData && !node.expanded) { if (node.childrenData /*&& !node.expanded*/) {
if (typeof(node.childrenData)==='string') { if (typeof(node.childrenData)==='string') {
var varName = node.childrenData; var varName = node.childrenData;
getScript(node.relpath+varName,function(){ getScript(node.relpath+varName,function(){
...@@ -276,6 +279,7 @@ function showNode(o, node, index) ...@@ -276,6 +279,7 @@ function showNode(o, node, index)
$(n.itemDiv).addClass('selected'); $(n.itemDiv).addClass('selected');
$(n.itemDiv).attr('id','selected'); $(n.itemDiv).attr('id','selected');
} }
showRoot();
} }
} }
} }
...@@ -293,6 +297,20 @@ function getNode(o, po) ...@@ -293,6 +297,20 @@ function getNode(o, po)
} }
} }
function navTo(o,root,hash,relpath)
{
getScript(relpath+"navtreeindex",function(){
var navTreeIndex = eval('NAVTREEINDEX');
if (navTreeIndex) {
var nti = navTreeIndex[root+hash];
o.breadcrumbs = nti ? nti : navTreeIndex[root];
if (o.breadcrumbs==null) o.breadcrumbs = navTreeIndex["index.html"];
o.breadcrumbs.unshift(0);
showNode(o, o.node, 0);
}
},true);
}
function initNavTree(toroot,relpath) function initNavTree(toroot,relpath)
{ {
var o = new Object(); var o = new Object();
...@@ -313,35 +331,22 @@ function initNavTree(toroot,relpath) ...@@ -313,35 +331,22 @@ function initNavTree(toroot,relpath)
o.node.plus_img.width = 16; o.node.plus_img.width = 16;
o.node.plus_img.height = 22; o.node.plus_img.height = 22;
getScript(relpath+"navtreeindex",function(){ navTo(o,toroot,window.location.hash,relpath);
var navTreeIndex = eval('NAVTREEINDEX');
if (navTreeIndex) {
var nti = navTreeIndex[toroot+window.location.hash];
o.breadcrumbs = nti ? nti : navTreeIndex[toroot];
if (o.breadcrumbs==null) o.breadcrumbs = navTreeIndex["index.html"];
o.breadcrumbs.unshift(0);
showNode(o, o.node, 0);
}
},true);
$(window).bind('hashchange', function(){ $(window).bind('hashchange', function(){
if (window.location.hash && window.location.hash.length>1){ if (window.location.hash && window.location.hash.length>1){
highlightAnchor();
var a; var a;
if ($(location).attr('hash')){ if ($(location).attr('hash')){
var link=stripPath($(location).attr('pathname'))+':'+ var clslink=stripPath($(location).attr('pathname'))+':'+
$(location).attr('hash').substring(1); $(location).attr('hash').substring(1);
a=$('.item a[class$=\""'+link+'"\"]'); a=$('.item a[class$=\""'+clslink+'"\"]');
} }
if (a && a.length){ if (a==null || !$(a).parent().parent().hasClass('selected')){
$('.item').removeClass('selected'); $('.item').removeClass('selected');
$('.item').removeAttr('id'); $('.item').removeAttr('id');
a.parent().parent().addClass('selected');
a.parent().parent().attr('id','selected');
var anchor = $($(location).attr('hash'));
var targetDiv = anchor.next();
showRoot();
} }
var link=stripPath($(location).attr('pathname'));
navTo(o,link,$(location).attr('hash'),relpath);
} }
}) })
......
...@@ -125,10 +125,13 @@ ...@@ -125,10 +125,13 @@
" var targetPage = stripPath(link.split('#')[0]);\n" " var targetPage = stripPath(link.split('#')[0]);\n"
" a.href = srcPage!=targetPage ? url : '#';\n" " a.href = srcPage!=targetPage ? url : '#';\n"
" a.onclick = function(){\n" " a.onclick = function(){\n"
" $('.item').removeClass('selected');\n" " if (!$(a).parent().parent().hasClass('selected'))\n"
" $('.item').removeAttr('id');\n" " {\n"
" $(a).parent().parent().addClass('selected');\n" " $('.item').removeClass('selected');\n"
" $(a).parent().parent().attr('id','selected');\n" " $('.item').removeAttr('id');\n"
" $(a).parent().parent().addClass('selected');\n"
" $(a).parent().parent().attr('id','selected');\n"
" }\n"
" var pos, anchor = $(aname), docContent = $('#doc-content');\n" " var pos, anchor = $(aname), docContent = $('#doc-content');\n"
" if (anchor.parent().attr('class')=='memItemLeft') {\n" " if (anchor.parent().attr('class')=='memItemLeft') {\n"
" pos = anchor.parent().position().top;\n" " pos = anchor.parent().position().top;\n"
...@@ -229,7 +232,7 @@ ...@@ -229,7 +232,7 @@
"\n" "\n"
"function showNode(o, node, index)\n" "function showNode(o, node, index)\n"
"{\n" "{\n"
" if (node.childrenData && !node.expanded) {\n" " if (node.childrenData /*&& !node.expanded*/) {\n"
" if (typeof(node.childrenData)==='string') {\n" " if (typeof(node.childrenData)==='string') {\n"
" var varName = node.childrenData;\n" " var varName = node.childrenData;\n"
" getScript(node.relpath+varName,function(){\n" " getScript(node.relpath+varName,function(){\n"
...@@ -276,6 +279,7 @@ ...@@ -276,6 +279,7 @@
" $(n.itemDiv).addClass('selected');\n" " $(n.itemDiv).addClass('selected');\n"
" $(n.itemDiv).attr('id','selected');\n" " $(n.itemDiv).attr('id','selected');\n"
" }\n" " }\n"
" showRoot();\n"
" }\n" " }\n"
" }\n" " }\n"
" }\n" " }\n"
...@@ -293,6 +297,20 @@ ...@@ -293,6 +297,20 @@
" }\n" " }\n"
"}\n" "}\n"
"\n" "\n"
"function navTo(o,root,hash,relpath)\n"
"{\n"
" getScript(relpath+\"navtreeindex\",function(){\n"
" var navTreeIndex = eval('NAVTREEINDEX');\n"
" if (navTreeIndex) {\n"
" var nti = navTreeIndex[root+hash];\n"
" o.breadcrumbs = nti ? nti : navTreeIndex[root];\n"
" if (o.breadcrumbs==null) o.breadcrumbs = navTreeIndex[\"index.html\"];\n"
" o.breadcrumbs.unshift(0);\n"
" showNode(o, o.node, 0);\n"
" }\n"
" },true);\n"
"}\n"
"\n"
"function initNavTree(toroot,relpath)\n" "function initNavTree(toroot,relpath)\n"
"{\n" "{\n"
" var o = new Object();\n" " var o = new Object();\n"
...@@ -313,35 +331,22 @@ ...@@ -313,35 +331,22 @@
" o.node.plus_img.width = 16;\n" " o.node.plus_img.width = 16;\n"
" o.node.plus_img.height = 22;\n" " o.node.plus_img.height = 22;\n"
"\n" "\n"
" getScript(relpath+\"navtreeindex\",function(){\n" " navTo(o,toroot,window.location.hash,relpath);\n"
" var navTreeIndex = eval('NAVTREEINDEX');\n"
" if (navTreeIndex) {\n"
" var nti = navTreeIndex[toroot+window.location.hash];\n"
" o.breadcrumbs = nti ? nti : navTreeIndex[toroot];\n"
" if (o.breadcrumbs==null) o.breadcrumbs = navTreeIndex[\"index.html\"];\n"
" o.breadcrumbs.unshift(0);\n"
" showNode(o, o.node, 0);\n"
" }\n"
" },true);\n"
"\n" "\n"
" $(window).bind('hashchange', function(){\n" " $(window).bind('hashchange', function(){\n"
" if (window.location.hash && window.location.hash.length>1){\n" " if (window.location.hash && window.location.hash.length>1){\n"
" highlightAnchor();\n"
" var a;\n" " var a;\n"
" if ($(location).attr('hash')){\n" " if ($(location).attr('hash')){\n"
" var link=stripPath($(location).attr('pathname'))+':'+\n" " var clslink=stripPath($(location).attr('pathname'))+':'+\n"
" $(location).attr('hash').substring(1);\n" " $(location).attr('hash').substring(1);\n"
" a=$('.item a[class$=\\\"\"'+link+'\"\\\"]');\n" " a=$('.item a[class$=\\\"\"'+clslink+'\"\\\"]');\n"
" }\n" " }\n"
" if (a && a.length){\n" " if (a==null || !$(a).parent().parent().hasClass('selected')){\n"
" $('.item').removeClass('selected');\n" " $('.item').removeClass('selected');\n"
" $('.item').removeAttr('id');\n" " $('.item').removeAttr('id');\n"
" a.parent().parent().addClass('selected');\n"
" a.parent().parent().attr('id','selected');\n"
" var anchor = $($(location).attr('hash'));\n"
" var targetDiv = anchor.next();\n"
" showRoot();\n"
" }\n" " }\n"
" var link=stripPath($(location).attr('pathname'));\n"
" navTo(o,link,$(location).attr('hash'),relpath);\n"
" }\n" " }\n"
" })\n" " })\n"
"\n" "\n"
......
...@@ -78,8 +78,6 @@ void PageDef::writeDocumentation(OutputList &ol) ...@@ -78,8 +78,6 @@ void PageDef::writeDocumentation(OutputList &ol)
//printf("PageDef::writeDocumentation: %s\n",getOutputFileBase().data()); //printf("PageDef::writeDocumentation: %s\n",getOutputFileBase().data());
startFile(ol,getOutputFileBase(),pageName,title(),HLI_Pages,!generateTreeView);
ol.pushGeneratorState(); ol.pushGeneratorState();
//1.{ //1.{
...@@ -95,6 +93,8 @@ void PageDef::writeDocumentation(OutputList &ol) ...@@ -95,6 +93,8 @@ void PageDef::writeDocumentation(OutputList &ol)
ol.enable(OutputGenerator::Html); ol.enable(OutputGenerator::Html);
} }
startFile(ol,getOutputFileBase(),pageName,title(),HLI_Pages,!generateTreeView);
if (!generateTreeView) if (!generateTreeView)
{ {
if (getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX")) if (getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX"))
...@@ -147,9 +147,6 @@ void PageDef::writeDocumentation(OutputList &ol) ...@@ -147,9 +147,6 @@ void PageDef::writeDocumentation(OutputList &ol)
writePageDocumentation(ol); writePageDocumentation(ol);
ol.popGeneratorState();
//1.}
if (generateTreeView && getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX")) if (generateTreeView && getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX"))
{ {
ol.endContents(); ol.endContents();
...@@ -160,6 +157,9 @@ void PageDef::writeDocumentation(OutputList &ol) ...@@ -160,6 +157,9 @@ void PageDef::writeDocumentation(OutputList &ol)
endFile(ol); endFile(ol);
} }
ol.popGeneratorState();
//1.}
if (!Config_getString("GENERATE_TAGFILE").isEmpty()) if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{ {
bool found=FALSE; bool found=FALSE;
......
...@@ -2206,11 +2206,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2206,11 +2206,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN(SkipString); BEGIN(SkipString);
} }
<SkipLine>. <SkipLine>.
<SkipLine,SkipCommand,SkipCPPBlock,SkipString>"//"[^\n]* { <SkipString>"//"/[^\n]* {
}
<SkipLine,SkipCommand,SkipCPPBlock>"//"[^\n]* {
g_lastCPPContext=YY_START; g_lastCPPContext=YY_START;
BEGIN(RemoveCPPComment); BEGIN(RemoveCPPComment);
} }
<SkipLine,SkipCommand,SkipCPPBlock,SkipString>"/*"/[^\n]* { <SkipString>"/*"/[^\n]* {
}
<SkipLine,SkipCommand,SkipCPPBlock>"/*"/[^\n]* {
g_lastCContext=YY_START; g_lastCContext=YY_START;
BEGIN(RemoveCComment); BEGIN(RemoveCComment);
} }
......
...@@ -576,7 +576,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, ...@@ -576,7 +576,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
ClassDef *cd=0,*lcd=0; /** Class def that we may find */ ClassDef *cd=0,*lcd=0; /** Class def that we may find */
MemberDef *md=0; /** Member def that we may find */ MemberDef *md=0; /** Member def that we may find */
bool isLocal=FALSE; //bool isLocal=FALSE;
if ((lcd=g_theVarContext.findVariable(className))==0) // not a local variable if ((lcd=g_theVarContext.findVariable(className))==0) // not a local variable
{ {
...@@ -611,7 +611,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, ...@@ -611,7 +611,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
{ {
g_theCallContext.setClass(lcd); g_theCallContext.setClass(lcd);
} }
isLocal=TRUE; //isLocal=TRUE;
//fprintf(stderr,"is a local variable cd=%p!\n",cd); //fprintf(stderr,"is a local variable cd=%p!\n",cd);
} }
...@@ -1426,19 +1426,14 @@ static void adjustScopesAndSuites(unsigned indentLength) ...@@ -1426,19 +1426,14 @@ static void adjustScopesAndSuites(unsigned indentLength)
} }
} }
void parsePythonCode(CodeOutputInterface &od,const char *className, void parsePythonCode(CodeOutputInterface &od,const char * /*className*/,
const QCString &s,bool exBlock, const char *exName, const QCString &s,bool exBlock, const char *exName,
FileDef *fd,int startLine,int endLine,bool inlineFragment, FileDef *fd,int startLine,int endLine,bool /*inlineFragment*/,
MemberDef *,bool) MemberDef *,bool)
{ {
//printf("***parseCode()\n"); //printf("***parseCode()\n");
//--- some code to eliminate warnings---
className = "";
exBlock = FALSE;
exName = "";
inlineFragment = "";
//-------------------------------------- //--------------------------------------
if (s.isEmpty()) return; if (s.isEmpty()) return;
g_code = &od; g_code = &od;
......
...@@ -1185,7 +1185,16 @@ void RTFDocVisitor::visitPre(DocRef *ref) ...@@ -1185,7 +1185,16 @@ void RTFDocVisitor::visitPre(DocRef *ref)
{ {
if (m_hide) return; if (m_hide) return;
DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocRef)}\n"); DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocRef)}\n");
if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor()); // when ref->isSubPage()==TRUE we use ref->file() for HTML and
// ref->anchor() for LaTeX/RTF
if (ref->isSubPage())
{
startLink(ref->ref(),0,ref->anchor());
}
else
{
if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor());
}
if (!ref->hasLinkText()) filter(ref->targetTitle()); if (!ref->hasLinkText()) filter(ref->targetTitle());
} }
...@@ -1448,11 +1457,11 @@ void RTFDocVisitor::visitPost(DocParamList *pl) ...@@ -1448,11 +1457,11 @@ void RTFDocVisitor::visitPost(DocParamList *pl)
DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocParamList)}\n"); DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocParamList)}\n");
DocParamSect::Type parentType = DocParamSect::Unknown; DocParamSect::Type parentType = DocParamSect::Unknown;
DocParamSect *sect = 0; //DocParamSect *sect = 0;
if (pl->parent() && pl->parent()->kind()==DocNode::Kind_ParamSect) if (pl->parent() && pl->parent()->kind()==DocNode::Kind_ParamSect)
{ {
parentType = ((DocParamSect*)pl->parent())->type(); parentType = ((DocParamSect*)pl->parent())->type();
sect=(DocParamSect*)pl->parent(); //sect=(DocParamSect*)pl->parent();
} }
bool useTable = parentType==DocParamSect::Param || bool useTable = parentType==DocParamSect::Param ||
parentType==DocParamSect::RetVal || parentType==DocParamSect::RetVal ||
...@@ -1652,9 +1661,12 @@ void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCS ...@@ -1652,9 +1661,12 @@ void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCS
{ {
refName+=file; refName+=file;
} }
if (anchor) if (!file.isEmpty() && anchor)
{ {
refName+='_'; refName+='_';
}
if (anchor)
{
refName+=anchor; refName+=anchor;
} }
......
...@@ -1713,7 +1713,7 @@ void RTFGenerator::docify(const char *str) ...@@ -1713,7 +1713,7 @@ void RTFGenerator::docify(const char *str)
{ {
const unsigned char *p=(const unsigned char *)str; const unsigned char *p=(const unsigned char *)str;
unsigned char c; unsigned char c;
unsigned char pc='\0'; //unsigned char pc='\0';
while (*p) while (*p)
{ {
//static bool MultiByte = FALSE; //static bool MultiByte = FALSE;
...@@ -1746,7 +1746,7 @@ void RTFGenerator::docify(const char *str) ...@@ -1746,7 +1746,7 @@ void RTFGenerator::docify(const char *str)
t << (char)c; t << (char)c;
} }
} }
pc = c; //pc = c;
m_omitParagraph = FALSE; m_omitParagraph = FALSE;
} }
} }
......
...@@ -402,7 +402,7 @@ void Store::dumpBlock(portable_off_t s,portable_off_t e) ...@@ -402,7 +402,7 @@ void Store::dumpBlock(portable_off_t s,portable_off_t e)
portable_fseek(m_file,s,SEEK_SET); portable_fseek(m_file,s,SEEK_SET);
int size = (int)(e-s); int size = (int)(e-s);
uchar *buf = new uchar[size]; uchar *buf = new uchar[size];
fread(buf,size,1,m_file); (void)fread(buf,size,1,m_file);
int i,j; int i,j;
for (i=0;i<size;i+=16) for (i=0;i<size;i+=16)
{ {
......
...@@ -304,13 +304,13 @@ function handlePrint(evt) ...@@ -304,13 +304,13 @@ function handlePrint(evt)
'xmlns:svg="http://www.w3.org/2000/svg" '+ 'xmlns:svg="http://www.w3.org/2000/svg" '+
'xmlns:xlink="http://www.w3.org/1999/xlink">'); 'xmlns:xlink="http://www.w3.org/1999/xlink">');
d.write('<head><title>Print SVG</title></head>'); d.write('<head><title>Print SVG</title></head>');
d.write('<body style="margin: 0px; padding: 0px;" onload="window.print(); window.close();">'); d.write('<body style="margin: 0px; padding: 0px;" onload="window.print();">');
d.write('<div id="svg" style="width:'+windowWidth+'px; height:'+windowHeight+'px;">'+xs+'</div>'); d.write('<div id="svg" style="width:'+windowWidth+'px; height:'+windowHeight+'px;">'+xs+'</div>');
d.write('</body>'); d.write('</body>');
d.write('</html>'); d.write('</html>');
d.close(); d.close();
} catch(e) { } catch(e) {
alert('Print function not supported by this browser!'); alert('Failed to open popup window needed for printing!\n'+e.message);
} }
} }
......
...@@ -304,13 +304,13 @@ ...@@ -304,13 +304,13 @@
" 'xmlns:svg=\"http://www.w3.org/2000/svg\" '+\n" " 'xmlns:svg=\"http://www.w3.org/2000/svg\" '+\n"
" 'xmlns:xlink=\"http://www.w3.org/1999/xlink\">');\n" " 'xmlns:xlink=\"http://www.w3.org/1999/xlink\">');\n"
" d.write('<head><title>Print SVG</title></head>');\n" " d.write('<head><title>Print SVG</title></head>');\n"
" d.write('<body style=\"margin: 0px; padding: 0px;\" onload=\"window.print(); window.close();\">');\n" " d.write('<body style=\"margin: 0px; padding: 0px;\" onload=\"window.print();\">');\n"
" d.write('<div id=\"svg\" style=\"width:'+windowWidth+'px; height:'+windowHeight+'px;\">'+xs+'</div>');\n" " d.write('<div id=\"svg\" style=\"width:'+windowWidth+'px; height:'+windowHeight+'px;\">'+xs+'</div>');\n"
" d.write('</body>');\n" " d.write('</body>');\n"
" d.write('</html>');\n" " d.write('</html>');\n"
" d.close();\n" " d.close();\n"
" } catch(e) {\n" " } catch(e) {\n"
" alert('Print function not supported by this browser!');\n" " alert('Failed to open popup window needed for printing!\\n'+e.message);\n"
" }\n" " }\n"
"}\n" "}\n"
"\n" "\n"
......
...@@ -618,12 +618,12 @@ static void codifyMapLines(char *text) ...@@ -618,12 +618,12 @@ static void codifyMapLines(char *text)
int wordCounter=0; int wordCounter=0;
QCString ctemp; QCString ctemp;
//printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text); //printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text);
char *p=text,*sp=p; char *p=text; //,*sp=p;
char c; char c;
bool done=FALSE; bool done=FALSE;
while (!done) while (!done)
{ {
sp=p; //sp=p;
while ((c=*p++) && c!='\n' && c!=':' && c != ' ' && c != '(' && c!='\0' && c!='\t') while ((c=*p++) && c!='\n' && c!=':' && c != ' ' && c != '(' && c!='\0' && c!='\t')
{ {
if (c!=0x9) if (c!=0x9)
......
...@@ -403,17 +403,17 @@ void VhdlDocGen::findAllPackages(const QCString& className,QDict<QCString>& qdic ...@@ -403,17 +403,17 @@ void VhdlDocGen::findAllPackages(const QCString& className,QDict<QCString>& qdic
MemberDef* VhdlDocGen::findFunction(const QList<Argument> &ql, MemberDef* VhdlDocGen::findFunction(const QList<Argument> &ql,
const QCString& funcname, const QCString& funcname,
const QCString& package, bool type) const QCString& package, bool /*type*/)
{ {
MemberDef* mdef=0; MemberDef* mdef=0;
int funcType; //int funcType;
ClassDef *cdef=getClass(package.data()); ClassDef *cdef=getClass(package.data());
if (cdef==0) return 0; if (cdef==0) return 0;
if (type) //if (type)
funcType=VhdlDocGen::PROCEDURE; // funcType=VhdlDocGen::PROCEDURE;
else //else
funcType=VhdlDocGen::FUNCTION; // funcType=VhdlDocGen::FUNCTION;
MemberList *mem=cdef->getMemberList(MemberList::pubMethods); MemberList *mem=cdef->getMemberList(MemberList::pubMethods);
...@@ -1194,7 +1194,7 @@ void VhdlDocGen::writeFuncProcDocu( ...@@ -1194,7 +1194,7 @@ void VhdlDocGen::writeFuncProcDocu(
bool /*type*/) bool /*type*/)
{ {
if (al==0) return; if (al==0) return;
bool sem=FALSE; //bool sem=FALSE;
ol.enableAll(); ol.enableAll();
ArgumentListIterator ali(*al); ArgumentListIterator ali(*al);
...@@ -1263,7 +1263,7 @@ void VhdlDocGen::writeFuncProcDocu( ...@@ -1263,7 +1263,7 @@ void VhdlDocGen::writeFuncProcDocu(
} }
ol.endParameterName(FALSE,FALSE,FALSE); ol.endParameterName(FALSE,FALSE,FALSE);
sem=TRUE; //sem=TRUE;
first=FALSE; first=FALSE;
} }
//ol.endParameterList(); //ol.endParameterList();
......
...@@ -35,7 +35,7 @@ class FileStorage; ...@@ -35,7 +35,7 @@ class FileStorage;
class EntryNav; class EntryNav;
class ClassDef; class ClassDef;
class MemberDef; class MemberDef;
class Argument; struct Argument;
// wrapper class for the vhdl parser // wrapper class for the vhdl parser
class MyParserVhdl class MyParserVhdl
......
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