summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2017-09-16 13:57:29 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2017-09-16 13:57:29 (GMT)
commit62ccfaaf6a486b055e28fe6e7eadc023e663c696 (patch)
tree6b878dd3b5fd0874afaf6724ce3ee11f5e5e1fb7
parentc120ac4762331513305e8a19fd9b267b2d4f9e41 (diff)
parentddae91901de9509e8caff4181230535f236c5897 (diff)
downloadDoxygen-62ccfaaf6a486b055e28fe6e7eadc023e663c696.zip
Doxygen-62ccfaaf6a486b055e28fe6e7eadc023e663c696.tar.gz
Doxygen-62ccfaaf6a486b055e28fe6e7eadc023e663c696.tar.bz2
Merge branch 'master' of github.com:doxygen/doxygen
-rw-r--r--.travis.yml1
-rw-r--r--INSTALL2
-rw-r--r--addon/doxyparse/CMakeLists.txt11
-rw-r--r--addon/doxyparse/README5
-rw-r--r--addon/doxyparse/doxyparse.cpp59
-rw-r--r--cmake/lang_cfg.cmake10
-rw-r--r--doc/preprocessing.doc2
-rw-r--r--jquery/README2
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/classdef.cpp14
-rw-r--r--src/code.l54
-rw-r--r--src/commentcnv.l70
-rw-r--r--src/fortrancode.l145
-rw-r--r--src/fortranscanner.l31
-rw-r--r--src/ftvhelp.cpp53
-rw-r--r--src/htmlgen.cpp352
-rw-r--r--src/index.cpp429
-rw-r--r--src/memberdef.cpp11
-rw-r--r--src/memberdef.h6
-rw-r--r--src/pagedef.cpp7
-rw-r--r--src/pre.l13
-rw-r--r--src/searchindex.cpp56
-rw-r--r--src/translator_cn.h4
-rw-r--r--src/util.cpp14
-rw-r--r--src/vhdldocgen.cpp4
-rw-r--r--templates/html/dynsections.js27
-rw-r--r--templates/html/extsearch.js26
-rw-r--r--templates/html/htmlbase.tpl14
-rw-r--r--templates/html/htmljsmenudata.tpl24
-rw-r--r--templates/html/htmlsearchresult.tpl4
-rw-r--r--templates/html/jquery.js32
-rw-r--r--templates/html/menu.js24
-rw-r--r--templates/html/navtree.js27
-rw-r--r--templates/html/resize.js26
-rw-r--r--templates/html/search.js25
-rw-r--r--templates/html/svgpan.js68
-rw-r--r--vhdlparser/Makefile419
37 files changed, 1460 insertions, 613 deletions
diff --git a/.travis.yml b/.travis.yml
index 0e60295..acc325a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,7 +5,6 @@ compiler:
before_install:
- sudo apt-add-repository ppa:smspillaz/cmake-2.8.12 -y
- - sudo add-apt-repository ppa:texlive-backports/ppa -y
- sudo apt-get update -qq
install:
diff --git a/INSTALL b/INSTALL
index d94748f..ac5d049 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,6 @@
DOXYGEN
-Please read the installation section of the manual
+Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
diff --git a/addon/doxyparse/CMakeLists.txt b/addon/doxyparse/CMakeLists.txt
index 24f98cb..e4f9021 100644
--- a/addon/doxyparse/CMakeLists.txt
+++ b/addon/doxyparse/CMakeLists.txt
@@ -1,11 +1,21 @@
if (build_parse)
+# configvalues.h
+add_custom_command(
+ COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
+ OUTPUT ${GENERATED_SRC}/configvalues.h
+)
+set_source_files_properties(${GENERATED_SRC}/configvalues.h PROPERTIES GENERATED 1)
+
find_package(Iconv)
include_directories(
${CMAKE_SOURCE_DIR}/src
+ ${GENERATED_SRC}
${CMAKE_SOURCE_DIR}/qtools
${ICONV_INCLUDE_DIR}
+ ${CLANG_INCLUDEDIR}
)
add_executable(doxyparse
@@ -21,6 +31,7 @@ ${ICONV_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${SQLITE3_LIBRARIES}
${EXTRA_LIBS}
+${CLANG_LIBS}
)
install(TARGETS doxyparse DESTINATION bin)
diff --git a/addon/doxyparse/README b/addon/doxyparse/README
index 7cbc8ff..9f7429c 100644
--- a/addon/doxyparse/README
+++ b/addon/doxyparse/README
@@ -5,6 +5,11 @@ This directory contains an "source parsing engine" based on doxyapp code.
More info and source code repository: https://github.com/analizo/doxygen
+## build
+
+ cmake -G "Unix Makefiles" -Dbuild_parse=ON
+ make
+
AUTHORS
=======
diff --git a/addon/doxyparse/doxyparse.cpp b/addon/doxyparse/doxyparse.cpp
index ec1bdae..ee34e3b 100644
--- a/addon/doxyparse/doxyparse.cpp
+++ b/addon/doxyparse/doxyparse.cpp
@@ -103,7 +103,7 @@ static void findXRefSymbols(FileDef *fd)
static bool ignoreStaticExternalCall(MemberDef *context, MemberDef *md) {
if (md->isStatic()) {
if(md->getFileDef()) {
- if(md->getFileDef()->getFileBase() == context->getFileDef()->getFileBase())
+ if(md->getFileDef()->getOutputFileBase() == context->getFileDef()->getOutputFileBase())
// TODO ignore prefix of file
return false;
else
@@ -159,6 +159,9 @@ static void printReferenceTo(std::string type, std::string signature, std::strin
printf(" type: %s\n", type.c_str());
printf(" defined_in: %s\n", defined_in.c_str());
}
+static void printNumberOfConditionalPaths(MemberDef* md) {
+ printf(" conditional_paths: %d\n", md->numberOfFlowKeyWords());
+}
static int isPartOfCStruct(MemberDef * md) {
return is_c_code && md->getClassDef() != NULL;
@@ -188,7 +191,7 @@ static void referenceTo(MemberDef* md) {
std::string signature = "";
if (isPartOfCStruct(md)) {
signature = md->getClassDef()->name().data() + std::string("::") + functionSignature(md);
- defined_in = md->getClassDef()->getFileDef()->getFileBase().data();
+ defined_in = md->getClassDef()->getFileDef()->getOutputFileBase().data();
}
else {
signature = functionSignature(md);
@@ -196,7 +199,7 @@ static void referenceTo(MemberDef* md) {
defined_in = md->getClassDef()->name().data();
}
else if (md->getFileDef()) {
- defined_in = md->getFileDef()->getFileBase().data();
+ defined_in = md->getFileDef()->getOutputFileBase().data();
}
}
printReferenceTo(type, signature, defined_in);
@@ -221,6 +224,7 @@ void functionInformation(MemberDef* md) {
printNumberOfLines(size);
ArgumentList *argList = md->argumentList();
printNumberOfArguments(argList->count());
+ printNumberOfConditionalPaths(md);
MemberSDict *defDict = md->getReferencesMembers();
if (defDict) {
MemberSDict::Iterator msdi(*defDict);
@@ -329,7 +333,7 @@ static void listSymbols() {
printFile(fd->absFilePath().data());
MemberList *ml = fd->getMemberList(MemberListType_allMembersList);
if (ml && ml->count() > 0) {
- printModule(fd->getFileBase().data());
+ printModule(fd->getOutputFileBase().data());
listMembers(ml);
}
@@ -355,37 +359,40 @@ int main(int argc,char **argv) {
// initialize data structures
initDoxygen();
+ // check and finalize the configuration
+ checkConfiguration();
+ adjustConfiguration();
+
// setup the non-default configuration options
// we need a place to put intermediate files
std::ostringstream tmpdir;
tmpdir << "/tmp/doxyparse-" << getpid();
- Config_getString("OUTPUT_DIRECTORY")= tmpdir.str().c_str();
-
+ Config_getString(OUTPUT_DIRECTORY)= tmpdir.str().c_str();
// enable HTML (fake) output to omit warning about missing output format
- Config_getBool("GENERATE_HTML")=TRUE;
+ Config_getBool(GENERATE_HTML)=TRUE;
// disable latex output
- Config_getBool("GENERATE_LATEX")=FALSE;
+ Config_getBool(GENERATE_LATEX)=FALSE;
// be quiet
- Config_getBool("QUIET")=TRUE;
+ Config_getBool(QUIET)=TRUE;
// turn off warnings
- Config_getBool("WARNINGS")=FALSE;
- Config_getBool("WARN_IF_UNDOCUMENTED")=FALSE;
- Config_getBool("WARN_IF_DOC_ERROR")=FALSE;
+ Config_getBool(WARNINGS)=FALSE;
+ Config_getBool(WARN_IF_UNDOCUMENTED)=FALSE;
+ Config_getBool(WARN_IF_DOC_ERROR)=FALSE;
// Extract as much as possible
- Config_getBool("EXTRACT_ALL")=TRUE;
- Config_getBool("EXTRACT_STATIC")=TRUE;
- Config_getBool("EXTRACT_PRIVATE")=TRUE;
- Config_getBool("EXTRACT_LOCAL_METHODS")=TRUE;
+ Config_getBool(EXTRACT_ALL)=TRUE;
+ Config_getBool(EXTRACT_STATIC)=TRUE;
+ Config_getBool(EXTRACT_PRIVATE)=TRUE;
+ Config_getBool(EXTRACT_LOCAL_METHODS)=TRUE;
// Extract source browse information, needed
// to make doxygen gather the cross reference info
- Config_getBool("SOURCE_BROWSER")=TRUE;
+ Config_getBool(SOURCE_BROWSER)=TRUE;
// find functions call between modules
- Config_getBool("CALL_GRAPH")=TRUE;
+ Config_getBool(CALL_GRAPH)=TRUE;
// loop recursive over input files
- Config_getBool("RECURSIVE")=TRUE;
+ Config_getBool(RECURSIVE)=TRUE;
// set the input
- Config_getList("INPUT").clear();
+ Config_getList(INPUT).clear();
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-") == 0) {
char filename[1024];
@@ -394,20 +401,16 @@ int main(int argc,char **argv) {
if (feof(stdin)) {
break;
}
- Config_getList("INPUT").append(filename);
+ Config_getList(INPUT).append(filename);
}
} else {
- Config_getList("INPUT").append(argv[i]);
+ Config_getList(INPUT).append(argv[i]);
}
}
- if (Config_getList("INPUT").isEmpty()) {
+ if (Config_getList(INPUT).isEmpty()) {
exit(0);
}
- // check and finalize the configuration
- checkConfiguration();
- adjustConfiguration();
-
// parse the files
parseInput();
@@ -429,7 +432,7 @@ int main(int argc,char **argv) {
if (!Doxygen::objDBFileName.isEmpty()) unlink(Doxygen::objDBFileName);
if (!Doxygen::entryDBFileName.isEmpty()) unlink(Doxygen::entryDBFileName);
// clean up after us
- rmdir(Config_getString("OUTPUT_DIRECTORY"));
+ rmdir(Config_getString(OUTPUT_DIRECTORY));
listSymbols();
diff --git a/cmake/lang_cfg.cmake b/cmake/lang_cfg.cmake
index c57d3ed..86c2d9a 100644
--- a/cmake/lang_cfg.cmake
+++ b/cmake/lang_cfg.cmake
@@ -1,10 +1,10 @@
-if(${CMAKE_ARGC} GREATER 1)
- if ("${CMAKE_ARGV3}" STREQUAL "ENONLY")
- message("#define ENGLISH_ONLY")
+if(${CMAKE_ARGC} GREATER 2)
+ if ("${CMAKE_ARGV4}" STREQUAL "ENONLY")
+ file(APPEND ${CMAKE_ARGV3} " #define ENGLISH_ONLY")
else()
math(EXPR UPTO ${CMAKE_ARGC}-1)
- foreach(i RANGE 3 ${UPTO})
- message("#define LANG_${CMAKE_ARGV${i}}")
+ foreach(i RANGE 4 ${UPTO})
+ file(APPEND ${CMAKE_ARGV3} " #define LANG_${CMAKE_ARGV${i}}")
endforeach()
endif()
endif()
diff --git a/doc/preprocessing.doc b/doc/preprocessing.doc
index d62bbb3..30d4cf3 100644
--- a/doc/preprocessing.doc
+++ b/doc/preprocessing.doc
@@ -62,7 +62,7 @@ to \c YES. Then the result after preprocessing becomes:
#define VERSION
#define CONST_STRING
- static const char * version = "1.xx";
+ static const char * version = "2.xx";
\endverbatim
Note that doxygen will now expand \e all macro definitions
diff --git a/jquery/README b/jquery/README
index 21590ff..b8b115a 100644
--- a/jquery/README
+++ b/jquery/README
@@ -1,6 +1,6 @@
Doxygen's jquery.js script is composed of minified versions of the following
packages:
-- jquery 1.7.1: http://jquery.com/download/
+- jquery 1.7.1: http://jquery.com/download/
- jquery.ui 1.8.18: https://code.google.com/p/jquery-ui/downloads/list
modules required:
- jquery.ui.core
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index be395f4..2218e82 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -73,7 +73,7 @@ set_source_files_properties(${GENERATED_SRC}/ce_parse.h PROPERTIES GENERATED 1)
# lang_cfg.h
add_custom_command(
COMMENT "Generating ${GENERATED_SRC}/lang_cfg.h"
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${LANG_CODES} 2> ${GENERATED_SRC}/lang_cfg.h
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${GENERATED_SRC}/lang_cfg.h ${LANG_CODES}
DEPENDS ${LANGUAGE_FILES}
OUTPUT ${GENERATED_SRC}/lang_cfg.h
)
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 111d59b..7ec4bb4 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -1935,7 +1935,21 @@ void ClassDef::writeDeclarationLink(OutputList &ol,bool &found,const char *heade
if (rootNode && !rootNode->isEmpty())
{
ol.startMemberDescription(anchor());
+
+ ol.pushGeneratorState();
+ ol.disableAll();
+ ol.enable(OutputGenerator::RTF);
+ ol.writeString("{");
+ ol.popGeneratorState();
+
ol.writeDoc(rootNode,this,0);
+
+ ol.pushGeneratorState();
+ ol.disableAll();
+ ol.enable(OutputGenerator::RTF);
+ ol.writeString("\\par}");
+ ol.popGeneratorState();
+
if (isLinkableInProject())
{
writeMoreLink(ol,anchor());
diff --git a/src/code.l b/src/code.l
index b2564e9..fc511a0 100644
--- a/src/code.l
+++ b/src/code.l
@@ -126,6 +126,7 @@ static bool g_lexInit = FALSE;
static QStack<int> g_classScopeLengthStack;
+static int g_prefixed_with_this_keyword = FALSE;
static Definition *g_searchCtx;
static bool g_collectXRefs;
@@ -963,7 +964,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName
bool isLocal=FALSE;
//printf("generateClassOrGlobalLink(className=%s)\n",className.data());
- if ((lcd=g_theVarContext.findVariable(className))==0) // not a local variable
+ if (!g_prefixed_with_this_keyword || (lcd=g_theVarContext.findVariable(className))==0) // not a local variable
{
Definition *d = g_currentDefinition;
//printf("d=%s g_sourceFileDef=%s\n",d?d->name().data():"<none>",g_sourceFileDef?g_sourceFileDef->name().data():"<none>");
@@ -1019,6 +1020,8 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName
isLocal=TRUE;
DBG_CTX((stderr,"is a local variable cd=%p!\n",cd));
}
+ g_prefixed_with_this_keyword = FALSE; // discard the "this" prefix for the next calls
+
if (cd && cd->isLinkable()) // is it a linkable class
{
DBG_CTX((stderr,"is linkable class %s\n",clName));
@@ -1821,7 +1824,8 @@ SCOPETNAME (((({ID}{TEMPLIST}?){BN}*)?{SEP}{BN}*)*)((~{BN}*)?{ID})
SCOPEPREFIX ({ID}{TEMPLIST}?{BN}*{SEP}{BN}*)+
KEYWORD_OBJC ("@public"|"@private"|"@protected"|"@class"|"@implementation"|"@interface"|"@end"|"@selector"|"@protocol"|"@optional"|"@required"|"@throw"|"@synthesize"|"@property")
KEYWORD ("asm"|"__assume"|"auto"|"class"|"const"|"delete"|"enum"|"explicit"|"extern"|"false"|"friend"|"gcnew"|"gcroot"|"set"|"get"|"inline"|"internal"|"mutable"|"namespace"|"new"|"nullptr"|"override"|"operator"|"pin_ptr"|"private"|"protected"|"public"|"raise"|"register"|"remove"|"self"|"sizeof"|"static"|"struct"|"__super"|"function"|"template"|"generic"|"this"|"true"|"typedef"|"typeid"|"typename"|"union"|"using"|"virtual"|"volatile"|"abstract"|"final"|"import"|"synchronized"|"transient"|"alignas"|"alignof"|{KEYWORD_OBJC})
-FLOWKW ("break"|"case"|"catch"|"continue"|"default"|"do"|"else"|"finally"|"for"|"foreach"|"for each"|"goto"|"if"|"return"|"switch"|"throw"|"throws"|"try"|"while"|"@try"|"@catch"|"@finally")
+FLOWKW ("break"|"catch"|"continue"|"default"|"do"|"else"|"finally"|"return"|"switch"|"throw"|"throws"|"@catch"|"@finally")
+FLOWCONDITION ("case"|"for"|"foreach"|"for each"|"goto"|"if"|"try"|"while"|"@try")
TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"object"|"short"|"signed"|"unsigned"|"void"|"wchar_t"|"size_t"|"boolean"|"id"|"SEL"|"string"|"nullptr")
CASTKW ("const_cast"|"dynamic_cast"|"reinterpret_cast"|"static_cast")
CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
@@ -2408,6 +2412,7 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
<UsingName>\n { codifyLines(yytext); BEGIN(Body); }
<UsingName>. { codifyLines(yytext); BEGIN(Body); }
<Body,FuncCall>"$"?"this"("->"|".") { g_code->codify(yytext); // this-> for C++, this. for C#
+ g_prefixed_with_this_keyword = TRUE;
}
<Body>{KEYWORD}/([^a-z_A-Z0-9]) {
startFontClass("keyword");
@@ -2449,6 +2454,18 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
g_inForEachExpression = (qstrcmp(yytext,"for each")==0 || qstrcmp(yytext, "foreach")==0);
BEGIN(FuncCall);
}
+<Body>{FLOWCONDITION}/{BN}*"(" {
+ if (g_currentMemberDef && g_currentMemberDef->isFunction())
+ {
+ g_currentMemberDef->addFlowKeyWord();
+ }
+ startFontClass("keywordflow");
+ codifyLines(yytext);
+ endFontClass();
+ g_name.resize(0);g_type.resize(0);
+ g_inForEachExpression = (strcmp(yytext,"for each")==0 || strcmp(yytext, "foreach")==0);
+ BEGIN(FuncCall);
+ }
<Body>{FLOWKW}/([^a-z_A-Z0-9]) {
startFontClass("keywordflow");
codifyLines(yytext);
@@ -2458,11 +2475,33 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
g_inFunctionTryBlock=FALSE;
}
}
+<Body>{FLOWCONDITION}/([^a-z_A-Z0-9]) {
+ if (g_currentMemberDef && g_currentMemberDef->isFunction())
+ {
+ g_currentMemberDef->addFlowKeyWord();
+ }
+ startFontClass("keywordflow");
+ codifyLines(yytext);
+ endFontClass();
+ if (g_inFunctionTryBlock && (strcmp(yytext,"catch")==0 || strcmp(yytext,"finally")==0))
+ {
+ g_inFunctionTryBlock=FALSE;
+ }
+ }
<Body>{FLOWKW}/{B}* {
startFontClass("keywordflow");
codifyLines(yytext);
endFontClass();
}
+<Body>{FLOWCONDITION}/{B}* {
+ if (g_currentMemberDef && g_currentMemberDef->isFunction())
+ {
+ g_currentMemberDef->addFlowKeyWord();
+ }
+ startFontClass("keywordflow");
+ codifyLines(yytext);
+ endFontClass();
+ }
<Body>"*"{B}*")" { // end of cast?
g_code->codify(yytext);
g_theCallContext.popScope();
@@ -2963,6 +3002,17 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
g_code->codify(yytext);
endFontClass();
}
+<MemberCall2,FuncCall>{FLOWCONDITION}/([^a-z_A-Z0-9]) {
+ if (g_currentMemberDef && g_currentMemberDef->isFunction())
+ {
+ g_currentMemberDef->addFlowKeyWord();
+ }
+ addParmType();
+ g_parmName=yytext;
+ startFontClass("keywordflow");
+ g_code->codify(yytext);
+ endFontClass();
+ }
<MemberCall2,FuncCall>{ID}(({B}*"<"[^\n\[\](){}<>]*">")?({B}*"::"{B}*{ID})?)* {
addParmType();
g_parmName=yytext;
diff --git a/src/commentcnv.l b/src/commentcnv.l
index 6fea6c9..ebee914 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -89,6 +89,8 @@ static int g_lastBlockContext;
static bool g_pythonDocString;
static int g_nestingCount;
+static bool g_vhdl; // for VHDL old style --! comment
+
static SrcLangExt g_lang;
static bool isFixedForm; // For Fortran
@@ -250,7 +252,7 @@ void replaceComment(int offset);
%%
-<Scan>[^"'!\/\n\\#-,]* { /* eat anything that is not " / , or \n */
+<Scan>[^"'!\/\n\\#,\-]* { /* eat anything that is not " / , or \n */
copyToOutput(yytext,(int)yyleng);
}
<Scan>[,] { /* eat , so we have a nice separator in long initialization lines */
@@ -425,6 +427,7 @@ void replaceComment(int offset);
}
else
{
+ g_vhdl = TRUE;
copyToOutput(yytext,(int)yyleng);
g_nestingCount=0;
g_commentStack.clear(); /* to be on the save side */
@@ -664,7 +667,27 @@ void replaceComment(int offset);
}
}
}
-<CComment>"\n"/[ \t]*[^#] { /* end of Python comment */
+ /* Python an VHDL share CComment, so special attention for ending commments is required */
+<CComment>"\n"/[ \t]*"#" {
+ if (g_lang!=SrcLangExt_VHDL)
+ {
+ REJECT;
+ }
+ else
+ {
+ if (g_vhdl) // inside --! comment
+ {
+ g_vhdl = FALSE;
+ copyToOutput(yytext,(int)yyleng);
+ BEGIN(Scan);
+ }
+ else // C-type comment
+ {
+ REJECT;
+ }
+ }
+ }
+<CComment>"\n"/[ \t]*"-" {
if (g_lang!=SrcLangExt_Python || g_pythonDocString)
{
REJECT;
@@ -674,18 +697,38 @@ void replaceComment(int offset);
copyToOutput(yytext,(int)yyleng);
BEGIN(Scan);
}
- }
-<CComment>"\n"/[ \t]*[^\-] { /* end of VHDL comment */
- if (g_lang!=SrcLangExt_VHDL)
- {
+ }
+<CComment>"\n"/[ \t]*[^ \t#\-] {
+ if (g_lang==SrcLangExt_Python)
+ {
+ if (g_pythonDocString)
+ {
+ REJECT;
+ }
+ else
+ {
+ copyToOutput(yytext,(int)yyleng);
+ BEGIN(Scan);
+ }
+ }
+ else if (g_lang==SrcLangExt_VHDL)
+ {
+ if (g_vhdl) // inside --! comment
+ {
+ g_vhdl = FALSE;
+ copyToOutput(yytext,(int)yyleng);
+ BEGIN(Scan);
+ }
+ else // C-type comment
+ {
+ REJECT;
+ }
+ }
+ else
+ {
REJECT;
- }
- else
- {
- copyToOutput(yytext,(int)yyleng);
- BEGIN(Scan);
- }
- }
+ }
+ }
/* removed for bug 674842 (bug was introduced in rev 768)
<CComment>"'" {
g_charContext = YY_START;
@@ -1001,6 +1044,7 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf,const char *fileName)
g_condStack.setAutoDelete(TRUE);
g_commentStack.clear();
g_commentStack.setAutoDelete(TRUE);
+ g_vhdl = FALSE;
printlex(yy_flex_debug, TRUE, __FILE__, fileName);
isFixedForm = FALSE;
diff --git a/src/fortrancode.l b/src/fortrancode.l
index e002b57..1f22700 100644
--- a/src/fortrancode.l
+++ b/src/fortrancode.l
@@ -67,7 +67,7 @@
* For fixed formatted code position 6 is of importance (continuation character).
* The following variables and macros keep track of the column number
* YY_USER_ACTION is always called for each scan action
- * YY_FTN_REST is used to handle end of lines and reset the column counter
+ * YY_FTN_RESET is used to handle end of lines and reset the column counter
* YY_FTN_REJECT resets the column counters when a pattern is rejected and thus rescanned.
*/
int yy_old_start = 0;
@@ -135,6 +135,8 @@ static const char * g_inputString; //!< the code fragment as text
static int g_inputPosition; //!< read offset during parsing
static int g_inputLines; //!< number of line in the code fragment
static int g_yyLineNr; //!< current line number
+static int g_contLineNr; //!< current, local, line number for continuation determination
+static int *g_hasContLine = NULL; //!< signals whether or not a line has a continuation line (fixed source form)
static bool g_needsTermination;
static Definition *g_searchCtx;
static bool g_collectXRefs;
@@ -159,51 +161,6 @@ static int bracketCount = 0;
static bool g_endComment;
-// simplified way to know if this is fixed form
-// duplicate in fortranscanner.l
-static bool recognizeFixedForm(const char* contents, FortranFormat format)
-{
- int column=0;
- bool skipLine=FALSE;
-
- if (format == FortranFormat_Fixed) return TRUE;
- if (format == FortranFormat_Free) return FALSE;
- for (int i=0;;i++)
- {
- column++;
-
- switch(contents[i])
- {
- case '\n':
- column=0;
- skipLine=FALSE;
- break;
- case ' ':
- break;
- case '#':
- skipLine=TRUE;
- break;
- case '\000':
- return FALSE;
- case 'C':
- case 'c':
- case '*':
- if(column==1) return TRUE;
- if(skipLine) break;
- return FALSE;
- case '!':
- if(column>1 && column<7) return FALSE;
- skipLine=TRUE;
- break;
- default:
- if(skipLine) break;
- if(column==7) return TRUE;
- return FALSE;
- }
- }
- return FALSE;
-}
-
static void endFontClass()
{
if (g_currentFontClass)
@@ -567,7 +524,8 @@ static bool getLink(UseSDict *usedict, // dictonary with used modules
if (getFortranDefs(memberName, currentModule, md, usedict) && md->isLinkable())
{
- //if (md->isVariable()) return FALSE; // variables aren't handled yet
+ if (md->isVariable() && (md->getLanguage()!=SrcLangExt_Fortran)) return FALSE; // Non Fortran variables aren't handled yet,
+ // see also linkifyText in util.cpp
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
@@ -840,7 +798,9 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
BEGIN(UseOnly);
}
<UseOnly,Import>{BS},{BS} { codifyLines(yytext); }
-<UseOnly,Import>{BS}&{BS}"\n" { codifyLines(yytext); YY_FTN_RESET}
+<UseOnly,Import>{BS}&{BS}"\n" { codifyLines(yytext);
+ g_contLineNr++;
+ YY_FTN_RESET}
<UseOnly>{ID} {
QCString tmp = yytext;
tmp = tmp.lower();
@@ -867,7 +827,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
}
/*-------- fortran module -----------------------------------------*/
<Start>("block"{BS}"data"|"program"|"module"|"interface")/{BS_}|({COMMA}{ACCESS_SPEC})|\n { //
- startScope();
+ startScope();
startFontClass("keyword");
codifyLines(yytext);
endFontClass();
@@ -937,6 +897,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
codifyLines(yytext);
}
<Subprog,Subprogend>"\n" { codifyLines(yytext);
+ g_contLineNr++;
yy_pop_state();
YY_FTN_RESET
}
@@ -979,15 +940,22 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
endFontClass();
}
<Declaration>{ID} { // local var
- if (g_currentMemberDef && g_currentMemberDef->isFunction() && bracketCount==0)
+ if (g_isFixedForm && yy_my_start == 1)
{
- g_code->codify(yytext);
- addLocalVar(yytext);
+ startFontClass("comment");
+ g_code->codify(yytext);
+ endFontClass();
}
- else
+ else if (g_currentMemberDef && ((g_currentMemberDef->isFunction() && (g_currentMemberDef->typeString() != QCString("subroutine"))) ||
+ g_currentMemberDef->isVariable()))
{
generateLink(*g_code, yytext);
}
+ else
+ {
+ g_code->codify(yytext);
+ addLocalVar(yytext);
+ }
}
<Declaration>{BS}("=>"|"="){BS} { // Procedure binding
BEGIN(DeclarationBinding);
@@ -1007,28 +975,36 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
g_code->codify(yytext);
}
-<Declaration,DeclarationBinding>"&" { // continuation line
+<Declaration,DeclarationBinding>"&" { // continuation line
g_code->codify(yytext);
- yy_push_state(YY_START);
- BEGIN(DeclContLine);
+ if (!g_isFixedForm)
+ {
+ yy_push_state(YY_START);
+ BEGIN(DeclContLine);
+ }
}
<DeclContLine>"\n" { // declaration not yet finished
+ g_contLineNr++;
codifyLines(yytext);
bracketCount = 0;
yy_pop_state();
YY_FTN_RESET
}
-<Declaration,DeclarationBinding>"\n" { // end declaration line
+<Declaration,DeclarationBinding>"\n" { // end declaration line (?)
if (g_endComment)
- {
- g_endComment=FALSE;
- }
- else
- {
- codifyLines(yytext);
- }
+ {
+ g_endComment=FALSE;
+ }
+ else
+ {
+ codifyLines(yytext);
+ }
bracketCount = 0;
- yy_pop_state();
+ g_contLineNr++;
+ if (!(g_hasContLine && g_hasContLine[g_contLineNr - 1]))
+ {
+ yy_pop_state();
+ }
YY_FTN_RESET
}
@@ -1065,6 +1041,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
<Start,Declaration,DeclarationBinding>\n?{BS}"!>"|"!<" { // start comment line or comment block
if (yytext[0] == '\n')
{
+ g_contLineNr++;
yy_old_start = 0;
yy_my_start = 1;
yy_end = yyleng;
@@ -1085,6 +1062,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
docBlock+=yytext;
}
<DocBlock>"\n"{BS}("!>"|"!<"|"!!") { // comment block (next line is also comment line)
+ g_contLineNr++;
yy_old_start = 0;
yy_my_start = 1;
yy_end = yyleng;
@@ -1094,6 +1072,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
}
<DocBlock>"\n" { // comment block ends at the end of this line
// remove special comment (default config)
+ g_contLineNr++;
if (Config_getBool(STRIP_CODE_COMMENTS))
{
g_yyLineNr+=((QCString)docBlock).contains('\n');
@@ -1112,6 +1091,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
endFontClass();
}
unput(*yytext);
+ g_contLineNr--;
yy_pop_state();
YY_FTN_RESET
}
@@ -1145,6 +1125,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
/*------ preprocessor --------------------------------------------*/
<Start>"#".*\n {
if (g_isFixedForm && yy_my_start == 6) YY_FTN_REJECT;
+ g_contLineNr++;
startFontClass("preprocessor");
codifyLines(yytext);
endFontClass();
@@ -1165,6 +1146,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
<*>"\\\""|\\\' { str+=yytext; /* ignore \" */}
<String>\n { // string with \n inside
+ g_contLineNr++;
str+=yytext;
startFontClass("stringliteral");
codifyLines(str);
@@ -1201,6 +1183,7 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
{
codifyLines(yytext);
}
+ g_contLineNr++;
YY_FTN_RESET
}
<*>^{BS}"type"{BS}"=" { g_code->codify(yytext); }
@@ -1243,6 +1226,29 @@ PREFIX (RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,3}(RECURSIVE|I
void resetFortranCodeParserState() {}
+bool recognizeFixedForm(const char* contents, FortranFormat format); /* prototype, implementation in fortranscanner.l */
+const char* prepassFixedForm(const char* contents, int *hasContLine); /* prototype, implementation in fortranscanner.l */
+static void checkContLines(const char *s)
+{
+ int numLines = 0;
+ int curLine = 0;
+ int i = 0;
+ const char *p = s;
+
+ numLines = 2; // one for element 0, one in case no \n at end
+ while (*p)
+ {
+ if (*p == '\n') numLines++;
+ p++;
+ }
+
+ g_hasContLine = (int *) malloc((numLines) * sizeof(int));
+ for (i = 0; i < numLines; i++)
+ g_hasContLine[i] = 0;
+ p = prepassFixedForm(s, g_hasContLine);
+ g_hasContLine[0] = 0;
+}
+
void parseFortranCode(CodeOutputInterface &od,const char *className,const QCString &s,
bool exBlock, const char *exName,FileDef *fd,
int startLine,int endLine,bool inlineFragment,
@@ -1262,6 +1268,12 @@ void parseFortranCode(CodeOutputInterface &od,const char *className,const QCStri
g_inputString = s;
g_inputPosition = 0;
g_isFixedForm = recognizeFixedForm((const char*)s,format);
+ g_contLineNr = 1;
+ g_hasContLine = NULL;
+ if (g_isFixedForm)
+ {
+ checkContLines(g_inputString);
+ }
g_currentFontClass = 0;
g_needsTermination = FALSE;
g_searchCtx = searchCtx;
@@ -1276,7 +1288,6 @@ void parseFortranCode(CodeOutputInterface &od,const char *className,const QCStri
else
g_inputLines = g_yyLineNr + countLines() - 1;
-
g_exampleBlock = exBlock;
g_exampleName = exName;
g_sourceFileDef = fd;
@@ -1317,6 +1328,8 @@ void parseFortranCode(CodeOutputInterface &od,const char *className,const QCStri
delete g_sourceFileDef;
g_sourceFileDef=0;
}
+ if (g_hasContLine) free(g_hasContLine);
+ g_hasContLine = NULL;
printlex(yy_flex_debug, FALSE, __FILE__, fd ? fd->fileName().data(): NULL);
return;
}
diff --git a/src/fortranscanner.l b/src/fortranscanner.l
index 2f5567a..23c0970 100644
--- a/src/fortranscanner.l
+++ b/src/fortranscanner.l
@@ -1366,7 +1366,7 @@ void truncatePrepass(int index)
// simplified way to know if this is fixed form
// duplicate in fortrancode.l
-static bool recognizeFixedForm(const char* contents, FortranFormat format)
+bool recognizeFixedForm(const char* contents, FortranFormat format)
{
int column=0;
bool skipLine=FALSE;
@@ -1419,7 +1419,8 @@ static void insertCharacter(char *contents, int length, int pos, char c)
}
/* change comments and bring line continuation character to previous line */
-static const char* prepassFixedForm(const char* contents)
+/* also used to set continuation marks in case of fortran code usage, done here as it is quite complicated code */
+const char* prepassFixedForm(const char* contents, int *hasContLine)
{
int column=0;
int prevLineLength=0;
@@ -1434,6 +1435,7 @@ static const char* prepassFixedForm(const char* contents)
bool fullCommentLine=TRUE;
int newContentsSize = strlen(contents)+3; // \000, \n (when necessary) and one spare character (to avoid reallocation)
char* newContents = (char*)malloc(newContentsSize);
+ int curLine = 1;
for(int i=0, j=0;;i++,j++) {
if(j>=newContentsSize-3) { // check for spare characters, which may be eventually used below (by & and '! ')
@@ -1454,6 +1456,11 @@ static const char* prepassFixedForm(const char* contents)
else
{
prevLineLength+=column;
+ /* Even though a full comment line is not really a comment line it can be seen as one. An empty line is also seen as a comment line (small bonus) */
+ if (hasContLine)
+ {
+ hasContLine[curLine - 1] = 1;
+ }
}
fullCommentLine=TRUE;
column=0;
@@ -1461,12 +1468,18 @@ static const char* prepassFixedForm(const char* contents)
commented=FALSE;
newContents[j]=c;
prevQuote = thisQuote;
+ curLine++;
break;
case ' ':
case '\t':
newContents[j]=c;
break;
case '\000':
+ if (hasContLine)
+ {
+ free(newContents);
+ return NULL;
+ }
newContents[j]='\000';
newContentsSize = strlen(newContents);
if (newContents[newContentsSize - 1] != '\n')
@@ -1545,12 +1558,15 @@ static const char* prepassFixedForm(const char* contents)
newContents[j]=' ';
if(prevLineAmpOrExclIndex==-1) { // add & just before end of previous line
- insertCharacter(newContents, j+1, (j+1)-6-1, '&');
+ /* first line is not a continuation line in code, just in snippets etc. */
+ if (curLine != 1) insertCharacter(newContents, j+1, (j+1)-6-1, '&');
j++;
} else { // add & just before end of previous line comment
- insertCharacter(newContents, j+1, (j+1)-6-prevLineLength+prevLineAmpOrExclIndex, '&');
+ /* first line is not a continuation line in code, just in snippets etc. */
+ if (curLine != 1) insertCharacter(newContents, j+1, (j+1)-6-prevLineLength+prevLineAmpOrExclIndex, '&');
j++;
}
+ if (hasContLine) hasContLine[curLine - 1] = 1;
} else {
newContents[j]=c; // , just handle like space
}
@@ -1573,6 +1589,11 @@ static const char* prepassFixedForm(const char* contents)
}
}
+ if (hasContLine)
+ {
+ free(newContents);
+ return NULL;
+ }
newContentsSize = strlen(newContents);
if (newContents[newContentsSize - 1] != '\n')
{
@@ -2517,7 +2538,7 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt, Fortra
//printf("Input fixed form string:\n%s\n", fileBuf);
//printf("===========================\n");
- inputString = prepassFixedForm(fileBuf);
+ inputString = prepassFixedForm(fileBuf, NULL);
//printf("Resulting free form string:\n%s\n", inputString);
//printf("===========================\n");
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index 7249574..66ed971 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -4,8 +4,8 @@
* Copyright (C) 1997-2015 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
@@ -99,11 +99,11 @@ int FTVNode::numNodesAtLevel(int level,int maxLevel) const
//----------------------------------------------------------------------------
-/*! Constructs an ftv help object.
- * The object has to be \link initialize() initialized\endlink before it can
+/*! Constructs an ftv help object.
+ * The object has to be \link initialize() initialized\endlink before it can
* be used.
*/
-FTVHelp::FTVHelp(bool TLI)
+FTVHelp::FTVHelp(bool TLI)
{
/* initial depth */
m_indentNodes = new QList<FTVNode>[MAX_INDENT];
@@ -134,7 +134,7 @@ void FTVHelp::finalize()
generateTreeView();
}
-/*! Increase the level of the contents hierarchy.
+/*! Increase the level of the contents hierarchy.
* This will start a new sublist in contents file.
* \sa decContentsDepth()
*/
@@ -204,7 +204,7 @@ void FTVHelp::addContentsItem(bool isDir,
QList<FTVNode> *pnl = &m_indentNodes[m_indent-1];
newNode->parent = pnl->getLast();
}
-
+
}
static QCString node2URL(FTVNode *n,bool overruleFile=FALSE,bool srcLink=FALSE)
@@ -385,7 +385,7 @@ void FTVHelp::generateTree(FTextStream &t, const QList<FTVNode> &nl,int level,in
if (srcRef)
{
t << "<a href=\"" << srcRef->getSourceFileBase()
- << Doxygen::htmlFileExtension
+ << Doxygen::htmlFileExtension
<< "\">";
}
if (n->def && n->def->definitionType()==Definition::TypeGroup)
@@ -487,7 +487,7 @@ static QCString convertFileId2Var(const QCString &fileId)
return substitute(varId,"-","_");
}
-static bool generateJSTree(NavIndexEntryList &navIndex,FTextStream &t,
+static bool generateJSTree(NavIndexEntryList &navIndex,FTextStream &t,
const QList<FTVNode> &nl,int level,bool &first)
{
static QCString htmlOutput = Config_getString(HTML_OUTPUT);
@@ -543,7 +543,7 @@ static bool generateJSTree(NavIndexEntryList &navIndex,FTextStream &t,
{
fileId+="_"+n->anchor;
}
- if (dupOfParent(n))
+ if (dupOfParent(n))
{
fileId+="_dup";
}
@@ -553,7 +553,7 @@ static bool generateJSTree(NavIndexEntryList &navIndex,FTextStream &t,
FTextStream tt(&f);
tt << "var " << convertFileId2Var(fileId) << " =" << endl;
generateJSTree(navIndex,tt,n->children,1,firstChild);
- tt << endl << "];";
+ tt << endl << "];";
}
t << "\"" << fileId << "\" ]";
}
@@ -571,7 +571,7 @@ static bool generateJSTree(NavIndexEntryList &navIndex,FTextStream &t,
if (emptySection)
t << "null ]";
else
- t << endl << indentStr << " ] ]";
+ t << endl << indentStr << " ] ]";
}
}
return found;
@@ -588,6 +588,22 @@ static void generateJSNavTree(const QList<FTVNode> &nodeList)
//tidx << "var NAVTREEINDEX =" << endl;
//tidx << "{" << endl;
FTextStream t(&f);
+ t << "/*\n@ @licstart The following is the entire license notice for the\n"
+ "JavaScript code in this file.\n\nCopyright (C) 1997-2017 by Dimitri van Heesch\n\n"
+ "This program is free software; you can redistribute it and/or modify\n"
+ "it under the terms of the GNU General Public License as published by\n"
+ "the Free Software Foundation; either version 2 of the License, or\n"
+ "(at your option) any later version.\n\n"
+ "This program is distributed in the hope that it will be useful,\n"
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ " GNU General Public License for more details.\n\n"
+ "You should have received a copy of the GNU General Public License along\n"
+ "with this program; if not, write to the Free Software Foundation, Inc.,\n"
+ "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\n"
+ "@licend The above is the entire license notice\n"
+ "for the JavaScript code in this file\n"
+ "*/\n";
t << "var NAVTREE =" << endl;
t << "[" << endl;
t << " [ ";
@@ -618,9 +634,9 @@ static void generateJSNavTree(const QList<FTVNode> &nodeList)
bool first=TRUE;
generateJSTree(navIndex,t,nodeList,1,first);
- if (first)
+ if (first)
t << "]" << endl;
- else
+ else
t << endl << " ] ]" << endl;
t << "];" << endl << endl;
@@ -660,7 +676,7 @@ static void generateJSNavTree(const QList<FTVNode> &nodeList)
++li;
if (li.current() && elemCount<maxElemCount-1) tsidx << ","; // not last entry
tsidx << endl;
-
+
elemCount++;
if (li.current() && elemCount>=maxElemCount) // switch to new sub-index
{
@@ -678,8 +694,8 @@ static void generateJSNavTree(const QList<FTVNode> &nodeList)
tsidx << "};" << endl;
t << endl << "];" << endl;
}
- t << endl << "var SYNCONMSG = '" << theTranslator->trPanelSynchronisationTooltip(FALSE) << "';";
- t << endl << "var SYNCOFFMSG = '" << theTranslator->trPanelSynchronisationTooltip(TRUE) << "';";
+ t << endl << "var SYNCONMSG = '" << theTranslator->trPanelSynchronisationTooltip(FALSE) << "';";
+ t << endl << "var SYNCOFFMSG = '" << theTranslator->trPanelSynchronisationTooltip(TRUE) << "';";
}
ResourceMgr::instance().copyResource("navtree.js",htmlOutput);
}
@@ -731,7 +747,7 @@ void FTVHelp::generateTreeViewInline(FTextStream &t)
if (depth>1)
{
t << "<div class=\"levels\">[";
- t << theTranslator->trDetailLevel();
+ t << theTranslator->trDetailLevel();
t << " ";
int i;
for (i=1;i<=depth;i++)
@@ -779,4 +795,3 @@ void FTVHelp::generateTreeView()
generateTreeViewImages();
generateTreeViewScripts();
}
-
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 12b71e1..224c9b9 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -1,12 +1,12 @@
/******************************************************************************
*
- *
+ *
*
* Copyright (C) 1997-2015 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
@@ -62,7 +62,7 @@ static void writeClientSearchBox(FTextStream &t,const char *relPath)
t << " onmouseover=\"return searchBox.OnSearchSelectShow()\"\n";
t << " onmouseout=\"return searchBox.OnSearchSelectHide()\"\n";
t << " alt=\"\"/>\n";
- t << " <input type=\"text\" id=\"MSearchField\" value=\""
+ t << " <input type=\"text\" id=\"MSearchField\" value=\""
<< theTranslator->trSearch() << "\" accesskey=\"S\"\n";
t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n";
@@ -200,7 +200,7 @@ static QCString removeEmptyLines(const QCString &s)
{
const char *e = p;
while (*e==' ' || *e=='\t') e++;
- if (*e=='\n')
+ if (*e=='\n')
{
p=e;
}
@@ -279,11 +279,11 @@ static QCString substituteHtmlKeywords(const QCString &s,
}
}
- if (timeStamp)
+ if (timeStamp)
{
generatedBy = theTranslator->trGeneratedAt(dateToString(TRUE), convertToHtml(Config_getString(PROJECT_NAME)));
}
- else
+ else
{
generatedBy = theTranslator->trGeneratedBy();
}
@@ -291,12 +291,14 @@ static QCString substituteHtmlKeywords(const QCString &s,
if (treeView)
{
treeViewCssJs = "<link href=\"$relpath^navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n"
- "<script type=\"text/javascript\" src=\"$relpath^resize.js\"></script>\n"
- "<script type=\"text/javascript\" src=\"$relpath^navtreedata.js\"></script>\n"
- "<script type=\"text/javascript\" src=\"$relpath^navtree.js\"></script>\n"
- "<script type=\"text/javascript\">\n"
- " $(document).ready(initResizable);\n"
- "</script>";
+ "<script type=\"text/javascript\" src=\"$relpath^resize.js\"></script>\n"
+ "<script type=\"text/javascript\" src=\"$relpath^navtreedata.js\"></script>\n"
+ "<script type=\"text/javascript\" src=\"$relpath^navtree.js\"></script>\n"
+ "<script type=\"text/javascript\">\n"
+ "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n"
+ " $(document).ready(initResizable);\n"
+ "/* @license-end */"
+ "</script>";
}
if (searchEngine)
@@ -313,8 +315,10 @@ static QCString substituteHtmlKeywords(const QCString &s,
if (disableIndex || !Config_getBool(HTML_DYNAMIC_MENUS))
{
searchCssJs += "<script type=\"text/javascript\">\n"
- " $(document).ready(function() { init_search(); });\n"
- "</script>";
+ "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n";
+ " $(document).ready(function() { init_search(); });\n"
+ "/* @license-end */\n"
+ "</script>";
}
}
else
@@ -322,17 +326,19 @@ static QCString substituteHtmlKeywords(const QCString &s,
if (disableIndex || !Config_getBool(HTML_DYNAMIC_MENUS))
{
searchCssJs += "<script type=\"text/javascript\">\n"
- " $(document).ready(function() {\n"
- " if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }\n"
- " });\n"
- "</script>\n";
+ "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n"
+ " $(document).ready(function() {\n"
+ " if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }\n"
+ " });\n"
+ " /* @license-end */\n"
+ "</script>\n";
}
// OPENSEARCH_PROVIDER {
searchCssJs += "<link rel=\"search\" href=\"" + relPath +
"search_opensearch.php?v=opensearch.xml\" "
"type=\"application/opensearchdescription+xml\" title=\"" +
- (hasProjectName ? projectName : QCString("Doxygen")) +
+ (hasProjectName ? projectName : QCString("Doxygen")) +
"\"/>";
// OPENSEARCH_PROVIDER }
}
@@ -341,11 +347,11 @@ static QCString substituteHtmlKeywords(const QCString &s,
if (mathJax)
{
- QCString path = Config_getString(MATHJAX_RELPATH);
- if (path.isEmpty() || path.left(2)=="..") // relative path
- {
- path.prepend(relPath);
- }
+ QCString path = Config_getString(MATHJAX_RELPATH);
+ if (path.isEmpty() || path.left(2)=="..") // relative path
+ {
+ path.prepend(relPath);
+ }
mathJaxJs = "<script type=\"text/x-mathjax-config\">\n"
" MathJax.Hub.Config({\n"
" extensions: [\"tex2jax.js\"";
@@ -389,7 +395,7 @@ static QCString substituteHtmlKeywords(const QCString &s,
result = substitute(result,"$extrastylesheet",extraCssText);
result = substitute(result,"$relpath$",relPath); //<-- obsolete: for backwards compatibility only
result = substitute(result,"$relpath^",relPath); //<-- must be last
-
+
// additional HTML only conditional blocks
result = selectBlock(result,"DISABLE_INDEX",disableIndex);
result = selectBlock(result,"GENERATE_TREEVIEW",treeView);
@@ -412,7 +418,7 @@ HtmlCodeGenerator::HtmlCodeGenerator()
{
}
-HtmlCodeGenerator::HtmlCodeGenerator(FTextStream &t,const QCString &relPath)
+HtmlCodeGenerator::HtmlCodeGenerator(FTextStream &t,const QCString &relPath)
: m_col(0), m_relPath(relPath)
{
setTextStream(t);
@@ -433,7 +439,7 @@ void HtmlCodeGenerator::codify(const char *str)
{
static int tabSize = Config_getInt(TAB_SIZE);
if (str && m_streamSet)
- {
+ {
const char *p=str;
char c;
int spacesToNextTabStop;
@@ -442,19 +448,19 @@ void HtmlCodeGenerator::codify(const char *str)
c=*p++;
switch(c)
{
- case '\t': spacesToNextTabStop =
- tabSize - (m_col%tabSize);
- m_t << Doxygen::spaces.left(spacesToNextTabStop);
- m_col+=spacesToNextTabStop;
- break;
- case '\n': m_t << "\n"; m_col=0;
+ case '\t': spacesToNextTabStop =
+ tabSize - (m_col%tabSize);
+ m_t << Doxygen::spaces.left(spacesToNextTabStop);
+ m_col+=spacesToNextTabStop;
+ break;
+ case '\n': m_t << "\n"; m_col=0;
break;
case '\r': break;
- case '<': m_t << "&lt;"; m_col++;
+ case '<': m_t << "&lt;"; m_col++;
break;
- case '>': m_t << "&gt;"; m_col++;
+ case '>': m_t << "&gt;"; m_col++;
break;
- case '&': m_t << "&amp;"; m_col++;
+ case '&': m_t << "&amp;"; m_col++;
break;
case '\'': m_t << "&#39;"; m_col++; // &apos; is not valid XHTML
break;
@@ -469,8 +475,8 @@ void HtmlCodeGenerator::codify(const char *str)
m_t << "\\";
m_col++;
break;
- default: p=writeUtf8Char(m_t,p-1);
- m_col++;
+ default: p=writeUtf8Char(m_t,p-1);
+ m_col++;
break;
}
}
@@ -500,7 +506,7 @@ void HtmlCodeGenerator::docify(const char *str)
else
m_t << "\\";
break;
- default: m_t << c;
+ default: m_t << c;
}
}
}
@@ -517,7 +523,7 @@ void HtmlCodeGenerator::writeLineNumber(const char *ref,const char *filename,
qsnprintf(lineAnchor,maxLineNrStr,"l%05d",l);
m_t << "<div class=\"line\">";
- m_t << "<a name=\"" << lineAnchor << "\"></a><span class=\"lineno\">";
+ m_t << "<a name=\"" << lineAnchor << "\"></a><span class=\"lineno\">";
if (filename)
{
_writeCodeLink("line",ref,filename,anchor,lineNumber,0);
@@ -526,7 +532,7 @@ void HtmlCodeGenerator::writeLineNumber(const char *ref,const char *filename,
{
codify(lineNumber);
}
- m_t << "</span>";
+ m_t << "</span>";
m_t << "&#160;";
}
@@ -544,7 +550,7 @@ void HtmlCodeGenerator::_writeCodeLink(const char *className,
const char *anchor, const char *name,
const char *tooltip)
{
- if (ref)
+ if (ref)
{
m_t << "<a class=\"" << className << "Ref\" ";
m_t << externalLinkTarget() << externalRef(m_relPath,ref,FALSE);
@@ -647,33 +653,33 @@ void HtmlCodeGenerator::writeTooltip(const char *id, const DocLinkInfo &docInfo,
}
-void HtmlCodeGenerator::startCodeLine(bool hasLineNumbers)
-{
+void HtmlCodeGenerator::startCodeLine(bool hasLineNumbers)
+{
if (m_streamSet)
{
if (!hasLineNumbers) m_t << "<div class=\"line\">";
- m_col=0;
+ m_col=0;
}
}
-void HtmlCodeGenerator::endCodeLine()
-{
+void HtmlCodeGenerator::endCodeLine()
+{
if (m_streamSet) m_t << "</div>";
}
-void HtmlCodeGenerator::startFontClass(const char *s)
-{
- if (m_streamSet) m_t << "<span class=\"" << s << "\">";
+void HtmlCodeGenerator::startFontClass(const char *s)
+{
+ if (m_streamSet) m_t << "<span class=\"" << s << "\">";
}
-void HtmlCodeGenerator::endFontClass()
-{
- if (m_streamSet) m_t << "</span>";
+void HtmlCodeGenerator::endFontClass()
+{
+ if (m_streamSet) m_t << "</span>";
}
-void HtmlCodeGenerator::writeCodeAnchor(const char *anchor)
-{
- if (m_streamSet) m_t << "<a name=\"" << anchor << "\"></a>";
+void HtmlCodeGenerator::writeCodeAnchor(const char *anchor)
+{
+ if (m_streamSet) m_t << "<a name=\"" << anchor << "\"></a>";
}
//--------------------------------------------------------------------------
@@ -699,29 +705,29 @@ void HtmlGenerator::init()
exit(1);
}
//writeLogo(dname);
- if (!Config_getString(HTML_HEADER).isEmpty())
+ if (!Config_getString(HTML_HEADER).isEmpty())
{
g_header=fileToString(Config_getString(HTML_HEADER));
//printf("g_header='%s'\n",g_header.data());
}
- else
+ else
{
g_header = ResourceMgr::instance().getAsString("header.html");
}
- if (!Config_getString(HTML_FOOTER).isEmpty())
+ if (!Config_getString(HTML_FOOTER).isEmpty())
{
g_footer=fileToString(Config_getString(HTML_FOOTER));
//printf("g_footer='%s'\n",g_footer.data());
}
- else
+ else
{
g_footer = ResourceMgr::instance().getAsString("footer.html");
}
if (Config_getBool(USE_MATHJAX))
{
- if (!Config_getString(MATHJAX_CODEFILE).isEmpty())
+ if (!Config_getString(MATHJAX_CODEFILE).isEmpty())
{
g_mathjax_code=fileToString(Config_getString(MATHJAX_CODEFILE));
//printf("g_mathjax_code='%s'\n",g_mathjax_code.data());
@@ -875,7 +881,7 @@ void HtmlGenerator::startFile(const char *name,const char *,
lastTitle=title;
relPath = relativePathToRoot(fileName);
- if (fileName.right(Doxygen::htmlFileExtension.length())!=Doxygen::htmlFileExtension)
+ if (fileName.right(Doxygen::htmlFileExtension.length())!=Doxygen::htmlFileExtension)
{
fileName+=Doxygen::htmlFileExtension;
}
@@ -883,19 +889,21 @@ void HtmlGenerator::startFile(const char *name,const char *,
m_codeGen.setTextStream(t);
m_codeGen.setRelativePath(relPath);
Doxygen::indexList->addIndexFile(fileName);
-
+
lastFile = fileName;
t << substituteHtmlKeywords(g_header,convertToHtml(filterTitle(title)),relPath);
- t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
+ t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
<< versionString << " -->" << endl;
//static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
static bool searchEngine = Config_getBool(SEARCHENGINE);
if (searchEngine /*&& !generateTreeView*/)
{
t << "<script type=\"text/javascript\">\n";
- t << "var searchBox = new SearchBox(\"searchBox\", \""
+ t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n";
+ t << "var searchBox = new SearchBox(\"searchBox\", \""
<< relPath<< "search\",false,'" << theTranslator->trSearch() << "');\n";
+ t << "/* @license-end */\n";
t << "</script>\n";
}
//generateDynamicSections(t,relPath);
@@ -995,8 +1003,8 @@ void HtmlGenerator::writeStyleInfo(int part)
if (Config_getString(HTML_STYLESHEET).isEmpty()) // write default style sheet
{
//printf("write doxygen.css\n");
- startPlainFile("doxygen.css");
-
+ startPlainFile("doxygen.css");
+
// alternative, cooler looking titles
//t << "H1 { text-align: center; border-width: thin none thin none;" << endl;
//t << " border-style : double; border-color : blue; padding-left : 1em; padding-right : 1em }" << endl;
@@ -1096,7 +1104,7 @@ void HtmlGenerator::startIndexItem(const char *ref,const char *f)
//printf("HtmlGenerator::startIndexItem(%s,%s)\n",ref,f);
if (ref || f)
{
- if (ref)
+ if (ref)
{
t << "<a class=\"elRef\" ";
t << externalLinkTarget() << externalRef(relPath,ref,FALSE);
@@ -1141,7 +1149,7 @@ void HtmlGenerator::writeStartAnnoItem(const char *,const char *f,
void HtmlGenerator::writeObjectLink(const char *ref,const char *f,
const char *anchor, const char *name)
{
- if (ref)
+ if (ref)
{
t << "<a class=\"elRef\" ";
t << externalLinkTarget() << externalRef(relPath,ref,FALSE);
@@ -1164,7 +1172,7 @@ void HtmlGenerator::startTextLink(const char *f,const char *anchor)
t << "<a href=\"";
if (f) t << relPath << f << Doxygen::htmlFileExtension;
if (anchor) t << "#" << anchor;
- t << "\">";
+ t << "\">";
}
void HtmlGenerator::endTextLink()
@@ -1179,7 +1187,7 @@ void HtmlGenerator::startHtmlLink(const char *url)
if (generateTreeView) t << "target=\"top\" ";
t << "href=\"";
if (url) t << url;
- t << "\">";
+ t << "\">";
}
void HtmlGenerator::endHtmlLink()
@@ -1275,7 +1283,7 @@ void HtmlGenerator::docify(const char *str,bool inHtmlComment)
else
t << "\\";
break;
- default: t << c;
+ default: t << c;
}
}
}
@@ -1302,7 +1310,7 @@ static void startSectionHeader(FTextStream &t,
"onclick=\"return toggleVisibility(this)\" "
"class=\"dynheader closed\" "
"style=\"cursor:pointer;\">" << endl;
- t << " <img id=\"dynsection-" << sectionCount << "-trigger\" src=\""
+ t << " <img id=\"dynsection-" << sectionCount << "-trigger\" src=\""
<< relPath << "closed.png\" alt=\"+\"/> ";
}
else
@@ -1390,13 +1398,13 @@ void HtmlGenerator::endClassDiagram(const ClassDiagram &d,
}
-void HtmlGenerator::startMemberList()
-{
+void HtmlGenerator::startMemberList()
+{
DBG_HTML(t << "<!-- startMemberList -->" << endl)
}
-void HtmlGenerator::endMemberList()
-{
+void HtmlGenerator::endMemberList()
+{
DBG_HTML(t << "<!-- endMemberList -->" << endl)
}
@@ -1404,8 +1412,8 @@ void HtmlGenerator::endMemberList()
// 0 = single column right aligned
// 1 = double column left aligned
// 2 = single column left aligned
-void HtmlGenerator::startMemberItem(const char *anchor,int annoType,const char *inheritId)
-{
+void HtmlGenerator::startMemberItem(const char *anchor,int annoType,const char *inheritId)
+{
DBG_HTML(t << "<!-- startMemberItem() -->" << endl)
if (m_emptySection)
{
@@ -1427,10 +1435,10 @@ void HtmlGenerator::startMemberItem(const char *anchor,int annoType,const char *
}
}
-void HtmlGenerator::endMemberItem()
-{
- t << "</td></tr>";
- t << endl;
+void HtmlGenerator::endMemberItem()
+{
+ t << "</td></tr>";
+ t << endl;
}
void HtmlGenerator::startMemberTemplateParams()
@@ -1449,15 +1457,15 @@ void HtmlGenerator::endMemberTemplateParams(const char *anchor,const char *inher
}
-void HtmlGenerator::insertMemberAlign(bool templ)
-{
+void HtmlGenerator::insertMemberAlign(bool templ)
+{
DBG_HTML(t << "<!-- insertMemberAlign -->" << endl)
QCString className = templ ? "memTemplItemRight" : "memItemRight";
- t << "&#160;</td><td class=\"" << className << "\" valign=\"bottom\">";
+ t << "&#160;</td><td class=\"" << className << "\" valign=\"bottom\">";
}
-void HtmlGenerator::startMemberDescription(const char *anchor,const char *inheritId)
-{
+void HtmlGenerator::startMemberDescription(const char *anchor,const char *inheritId)
+{
DBG_HTML(t << "<!-- startMemberDescription -->" << endl)
if (m_emptySection)
{
@@ -1469,20 +1477,20 @@ void HtmlGenerator::startMemberDescription(const char *anchor,const char *inheri
{
t << " inherit " << inheritId;
}
- t << "\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">";
+ t << "\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">";
}
-void HtmlGenerator::endMemberDescription()
-{
+void HtmlGenerator::endMemberDescription()
+{
DBG_HTML(t << "<!-- endMemberDescription -->" << endl)
- t << "<br /></td></tr>" << endl;
+ t << "<br /></td></tr>" << endl;
}
void HtmlGenerator::startMemberSections()
{
DBG_HTML(t << "<!-- startMemberSections -->" << endl)
m_emptySection=TRUE; // we postpone writing <table> until we actually
- // write a row to prevent empty tables, which
+ // write a row to prevent empty tables, which
// are not valid XHTML!
}
@@ -1533,9 +1541,9 @@ void HtmlGenerator::endMemberSubtitle()
t << "</td></tr>" << endl;
}
-void HtmlGenerator::startIndexList()
-{
- t << "<table>" << endl;
+void HtmlGenerator::startIndexList()
+{
+ t << "<table>" << endl;
}
void HtmlGenerator::endIndexList()
@@ -1543,10 +1551,10 @@ void HtmlGenerator::endIndexList()
t << "</table>" << endl;
}
-void HtmlGenerator::startIndexKey()
-{
+void HtmlGenerator::startIndexKey()
+{
// inserted 'class = ...', 02 jan 2002, jh
- t << " <tr><td class=\"indexkey\">";
+ t << " <tr><td class=\"indexkey\">";
}
void HtmlGenerator::endIndexKey()
@@ -1554,10 +1562,10 @@ void HtmlGenerator::endIndexKey()
t << "</td>";
}
-void HtmlGenerator::startIndexValue(bool)
-{
+void HtmlGenerator::startIndexValue(bool)
+{
// inserted 'class = ...', 02 jan 2002, jh
- t << "<td class=\"indexvalue\">";
+ t << "<td class=\"indexvalue\">";
}
void HtmlGenerator::endIndexValue(const char *,bool)
@@ -1576,7 +1584,7 @@ void HtmlGenerator::endMemberDocList()
}
void HtmlGenerator::startMemberDoc( const char *clName, const char *memName,
- const char *anchor, const char *title,
+ const char *anchor, const char *title,
int memCount, int memTotal, bool showInline)
{
DBG_HTML(t << "<!-- startMemberDoc -->" << endl;)
@@ -1610,7 +1618,7 @@ void HtmlGenerator::startMemberDocName(bool /*align*/)
DBG_HTML(t << "<!-- startMemberDocName -->" << endl;)
t << " <table class=\"memname\">" << endl;
-
+
t << " <tr>" << endl;
t << " <td class=\"memname\">";
}
@@ -1713,8 +1721,8 @@ void HtmlGenerator::exceptionEntry(const char* prefix,bool closeBracket)
t << "</td><td></td><td colspan=\"2\">";
}
-void HtmlGenerator::endMemberDoc(bool hasArgs)
-{
+void HtmlGenerator::endMemberDoc(bool hasArgs)
+{
DBG_HTML(t << "<!-- endMemberDoc -->" << endl;)
if (!hasArgs)
{
@@ -1857,17 +1865,17 @@ void HtmlGenerator::endMemberGroup(bool)
{
}
-void HtmlGenerator::startIndent()
-{
+void HtmlGenerator::startIndent()
+{
DBG_HTML(t << "<!-- startIndent -->" << endl;)
t << "<div class=\"memdoc\">\n";
}
-void HtmlGenerator::endIndent()
-{
+void HtmlGenerator::endIndent()
+{
DBG_HTML(t << "<!-- endIndent -->" << endl;)
- t << endl << "</div>" << endl << "</div>" << endl;
+ t << endl << "</div>" << endl << "</div>" << endl;
}
void HtmlGenerator::addIndexItem(const char *,const char *)
@@ -1941,7 +1949,7 @@ void HtmlGenerator::startSimpleSect(SectionTypes,
void HtmlGenerator::endSimpleSect()
{
- t << "</dl>";
+ t << "</dl>";
}
void HtmlGenerator::startParamList(ParamListTypes,
@@ -1954,21 +1962,21 @@ void HtmlGenerator::startParamList(ParamListTypes,
void HtmlGenerator::endParamList()
{
- t << "</dl>";
+ t << "</dl>";
}
void HtmlGenerator::writeDoc(DocNode *n,Definition *ctx,MemberDef *)
{
HtmlDocVisitor *visitor = new HtmlDocVisitor(t,m_codeGen,ctx);
n->accept(visitor);
- delete visitor;
+ delete visitor;
}
//---------------- helpers for index generation -----------------------------
static void startQuickIndexList(FTextStream &t,bool compact,bool topLevel=TRUE)
{
- if (compact)
+ if (compact)
{
if (topLevel)
{
@@ -1978,9 +1986,9 @@ static void startQuickIndexList(FTextStream &t,bool compact,bool topLevel=TRUE)
{
t << " <div id=\"navrow2\" class=\"tabs2\">\n";
}
- t << " <ul class=\"tablist\">\n";
+ t << " <ul class=\"tablist\">\n";
}
- else
+ else
{
t << "<ul>";
}
@@ -1988,12 +1996,12 @@ static void startQuickIndexList(FTextStream &t,bool compact,bool topLevel=TRUE)
static void endQuickIndexList(FTextStream &t,bool compact)
{
- if (compact)
+ if (compact)
{
t << " </ul>\n";
t << " </div>\n";
}
- else
+ else
{
t << "</ul>\n";
}
@@ -2003,8 +2011,8 @@ static void startQuickIndexItem(FTextStream &t,const char *l,
bool hl,bool /*compact*/,
const QCString &relPath)
{
- t << " <li";
- if (hl)
+ t << " <li";
+ if (hl)
{
t << " class=\"current\"";
}
@@ -2026,17 +2034,17 @@ static bool quickLinkVisible(LayoutNavEntry::Kind kind)
static bool showNamespaces = Config_getBool(SHOW_NAMESPACES);
switch (kind)
{
- case LayoutNavEntry::MainPage: return TRUE;
- case LayoutNavEntry::User: return TRUE;
- case LayoutNavEntry::UserGroup: return TRUE;
+ case LayoutNavEntry::MainPage: return TRUE;
+ case LayoutNavEntry::User: return TRUE;
+ case LayoutNavEntry::UserGroup: return TRUE;
case LayoutNavEntry::Pages: return indexedPages>0;
case LayoutNavEntry::Modules: return documentedGroups>0;
case LayoutNavEntry::Namespaces: return documentedNamespaces>0 && showNamespaces;
case LayoutNavEntry::NamespaceList: return documentedNamespaces>0 && showNamespaces;
case LayoutNavEntry::NamespaceMembers: return documentedNamespaceMembers[NMHL_All]>0;
case LayoutNavEntry::Classes: return annotatedClasses>0;
- case LayoutNavEntry::ClassList: return annotatedClasses>0;
- case LayoutNavEntry::ClassIndex: return annotatedClasses>0;
+ case LayoutNavEntry::ClassList: return annotatedClasses>0;
+ case LayoutNavEntry::ClassIndex: return annotatedClasses>0;
case LayoutNavEntry::ClassHierarchy: return hierarchyClasses>0;
case LayoutNavEntry::ClassMembers: return documentedClassMembers[CMHL_All]>0;
case LayoutNavEntry::Files: return documentedHtmlFiles>0 && showFiles;
@@ -2107,8 +2115,8 @@ static void renderQuickLinksAsTabs(FTextStream &t,const QCString &relPath,
{
QCString url = entry->url();
startQuickIndexItem(t,url,
- entry==hlEntry &&
- (entry->children().count()>0 ||
+ entry==hlEntry &&
+ (entry->children().count()>0 ||
(entry->kind()==kind && !highlightParent)
),
TRUE,relPath);
@@ -2179,11 +2187,11 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
case HLI_Pages: kind = LayoutNavEntry::Pages; break;
case HLI_Examples: kind = LayoutNavEntry::Examples; break;
case HLI_UserGroup: kind = LayoutNavEntry::UserGroup; break;
- case HLI_ClassVisible: kind = LayoutNavEntry::ClassList; altKind = LayoutNavEntry::Classes;
+ case HLI_ClassVisible: kind = LayoutNavEntry::ClassList; altKind = LayoutNavEntry::Classes;
highlightParent = TRUE; break;
- case HLI_NamespaceVisible: kind = LayoutNavEntry::NamespaceList; altKind = LayoutNavEntry::Namespaces;
+ case HLI_NamespaceVisible: kind = LayoutNavEntry::NamespaceList; altKind = LayoutNavEntry::Namespaces;
highlightParent = TRUE; break;
- case HLI_FileVisible: kind = LayoutNavEntry::FileList; altKind = LayoutNavEntry::Files;
+ case HLI_FileVisible: kind = LayoutNavEntry::FileList; altKind = LayoutNavEntry::Files;
highlightParent = TRUE; break;
case HLI_None: break;
case HLI_Search: break;
@@ -2203,6 +2211,7 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
t << "<script type=\"text/javascript\" src=\"" << relPath << "menudata.js\"></script>" << endl;
t << "<script type=\"text/javascript\" src=\"" << relPath << "menu.js\"></script>" << endl;
t << "<script type=\"text/javascript\">" << endl;
+ t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n";
t << "$(function() {" << endl;
t << " initMenu('" << relPath << "',"
<< (searchEngine?"true":"false") << ","
@@ -2217,12 +2226,14 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
}
else
{
+ t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n";
t << " $(document).ready(function() {\n"
<< " if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }\n"
<< " });\n";
}
}
t << "});" << endl;
+ t << "/* @license-end */";
t << "</script>" << endl;
t << "<div id=\"main-nav\"></div>" << endl;
}
@@ -2235,7 +2246,7 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
{
highlightParent=TRUE;
hlEntry = root->children().getFirst();
- if (hlEntry==0)
+ if (hlEntry==0)
{
return; // argl, empty index!
}
@@ -2245,7 +2256,7 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
LayoutNavEntry *e = hlEntry->children().getFirst();
if (e)
{
- hlEntry = e;
+ hlEntry = e;
}
}
renderQuickLinksAsTabs(t,relPath,hlEntry,kind,highlightParent,hli==HLI_Search);
@@ -2269,23 +2280,25 @@ QCString HtmlGenerator::writeSplitBarAsString(const char *name,const char *relpa
if (generateTreeView)
{
result = QCString(
- "<div id=\"side-nav\" class=\"ui-resizable side-nav-resizable\">\n"
- " <div id=\"nav-tree\">\n"
- " <div id=\"nav-tree-contents\">\n"
- " <div id=\"nav-sync\" class=\"sync\"></div>\n"
- " </div>\n"
- " </div>\n"
- " <div id=\"splitbar\" style=\"-moz-user-select:none;\" \n"
- " class=\"ui-resizable-handle\">\n"
- " </div>\n"
- "</div>\n"
- "<script type=\"text/javascript\">\n"
- "$(document).ready(function(){initNavTree('") +
- QCString(name) + Doxygen::htmlFileExtension +
- QCString("','") + relpath +
- QCString("');});\n"
- "</script>\n"
- "<div id=\"doc-content\">\n");
+ "<div id=\"side-nav\" class=\"ui-resizable side-nav-resizable\">\n"
+ " <div id=\"nav-tree\">\n"
+ " <div id=\"nav-tree-contents\">\n"
+ " <div id=\"nav-sync\" class=\"sync\"></div>\n"
+ " </div>\n"
+ " </div>\n"
+ " <div id=\"splitbar\" style=\"-moz-user-select:none;\" \n"
+ " class=\"ui-resizable-handle\">\n"
+ " </div>\n"
+ "</div>\n"
+ "<script type=\"text/javascript\">\n"
+ "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n"
+ "$(document).ready(function(){initNavTree('") +
+ QCString(name) + Doxygen::htmlFileExtension +
+ QCString("','") + relpath +
+ QCString("');});\n"
+ "/* @license-end */\n"
+ "</script>\n"
+ "<div id=\"doc-content\">\n");
}
return result;
}
@@ -2337,10 +2350,10 @@ void HtmlGenerator::writeSearchPage()
t << ");\n\n";
t << "$translator = array(\n";
t << " 'search_results_title' => \"" << theTranslator->trSearchResultsTitle() << "\",\n";
- t << " 'search_results' => array(\n";
- t << " 0 => \"" << theTranslator->trSearchResults(0) << "\",\n";
- t << " 1 => \"" << theTranslator->trSearchResults(1) << "\",\n";
- t << " 2 => \"" << substitute(theTranslator->trSearchResults(2), "$", "\\$") << "\",\n";
+ t << " 'search_results' => array(\n";
+ t << " 0 => \"" << theTranslator->trSearchResults(0) << "\",\n";
+ t << " 1 => \"" << theTranslator->trSearchResults(1) << "\",\n";
+ t << " 2 => \"" << substitute(theTranslator->trSearchResults(2), "$", "\\$") << "\",\n";
t << " ),\n";
t << " 'search_matches' => \"" << theTranslator->trSearchMatches() << "\",\n";
t << " 'search' => \"" << theTranslator->trSearch() << "\",\n";
@@ -2361,11 +2374,13 @@ void HtmlGenerator::writeSearchPage()
FTextStream t(&f);
t << substituteHtmlKeywords(g_header,"Search","");
- t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
+ t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
<< versionString << " -->" << endl;
t << "<script type=\"text/javascript\">\n";
- t << "var searchBox = new SearchBox(\"searchBox\", \""
+ t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n";
+ t << "var searchBox = new SearchBox(\"searchBox\", \""
<< "search\",false,'" << theTranslator->trSearch() << "');\n";
+ t << "/* @license-end */\n";
t << "</script>\n";
if (!Config_getBool(DISABLE_INDEX))
{
@@ -2413,11 +2428,13 @@ void HtmlGenerator::writeExternalSearchPage()
FTextStream t(&f);
t << substituteHtmlKeywords(g_header,"Search","");
- t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
+ t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
<< versionString << " -->" << endl;
t << "<script type=\"text/javascript\">\n";
- t << "var searchBox = new SearchBox(\"searchBox\", \""
+ t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n";
+ t << "var searchBox = new SearchBox(\"searchBox\", \""
<< "search\",false,'" << theTranslator->trSearch() << "');\n";
+ t << "/* @license-end */\n";
t << "</script>\n";
if (!Config_getBool(DISABLE_INDEX))
{
@@ -2568,15 +2585,15 @@ void HtmlGenerator::startHeaderSection()
t << "<div class=\"header\">" << endl;
}
-void HtmlGenerator::startTitleHead(const char *)
-{
+void HtmlGenerator::startTitleHead(const char *)
+{
t << " <div class=\"headertitle\">" << endl;
- startTitle();
+ startTitle();
}
-void HtmlGenerator::endTitleHead(const char *,const char *)
-{
- endTitle();
+void HtmlGenerator::endTitleHead(const char *,const char *)
+{
+ endTitle();
t << " </div>" << endl;
}
@@ -2672,7 +2689,7 @@ void HtmlGenerator::endLabels()
}
void HtmlGenerator::writeInheritedSectionTitle(
- const char *id, const char *ref,
+ const char *id, const char *ref,
const char *file, const char *anchor,
const char *title, const char *name)
{
@@ -2692,7 +2709,7 @@ void HtmlGenerator::writeInheritedSectionTitle(
classLink+=QCString("\">")+convertToHtml(name,FALSE)+"</a>";
t << "<tr class=\"inherit_header " << id << "\">"
<< "<td colspan=\"2\" onclick=\"javascript:toggleInherit('" << id << "')\">"
- << "<img src=\"" << relPath << "closed.png\" alt=\"-\"/>&#160;"
+ << "<img src=\"" << relPath << "closed.png\" alt=\"-\"/>&#160;"
<< theTranslator->trInheritedFrom(convertToHtml(title,FALSE),classLink)
<< "</td></tr>" << endl;
}
@@ -2748,4 +2765,3 @@ void HtmlGenerator::addWord(const char *word,bool hiPriority)
Doxygen::searchIndex->addWord(word,hiPriority);
}
}
-
diff --git a/src/index.cpp b/src/index.cpp
index 10c1dcb..3a17c29 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -1,12 +1,12 @@
/******************************************************************************
*
- *
+ *
*
* Copyright (C) 1997-2015 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
@@ -153,17 +153,17 @@ static void startQuickIndexList(OutputList &ol,bool letterTabs=FALSE)
{
if (letterTabs)
{
- ol.writeString(" <div id=\"navrow4\" class=\"tabs3\">\n");
+ ol.writeString(" <div id=\"navrow4\" class=\"tabs3\">\n");
}
else
{
- ol.writeString(" <div id=\"navrow3\" class=\"tabs2\">\n");
+ ol.writeString(" <div id=\"navrow3\" class=\"tabs2\">\n");
}
- ol.writeString(" <ul class=\"tablist\">\n");
+ ol.writeString(" <ul class=\"tablist\">\n");
}
else
{
- ol.writeString(" <div class=\"qindex\">");
+ ol.writeString(" <div class=\"qindex\">");
}
}
@@ -185,7 +185,7 @@ static void startQuickIndexItem(OutputList &ol,const char *l,
first=FALSE;
if (fancyTabs)
{
- ol.writeString(" <li");
+ ol.writeString(" <li");
if (hl) ol.writeString(" class=\"current\"");
ol.writeString("><a ");
}
@@ -201,7 +201,7 @@ static void startQuickIndexItem(OutputList &ol,const char *l,
ol.writeString("<a class=\"qindex\" ");
}
}
- ol.writeString("href=\"");
+ ol.writeString("href=\"");
ol.writeString(l);
ol.writeString("\">");
if (fancyTabs)
@@ -296,7 +296,7 @@ void endFileWithNavPath(Definition *d,OutputList &ol)
}
//----------------------------------------------------------------------
-template<class T>
+template<class T>
void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part,
const QCString &name,const QCString &anchor,
bool addToIndex=TRUE,bool preventSeparateIndex=FALSE)
@@ -341,7 +341,7 @@ void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part,
bool isAnonymous = md->name().find('@')!=-1;
static bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
static bool extractStatic = Config_getBool(EXTRACT_STATIC);
- if (!isAnonymous &&
+ if (!isAnonymous &&
(!hideUndocMembers || md->hasDocumentation()) &&
(!md->isStatic() || extractStatic)
)
@@ -389,8 +389,8 @@ void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part,
}
}
}
- else if (lde->kind()==LayoutDocEntry::NamespaceClasses ||
- lde->kind()==LayoutDocEntry::FileClasses ||
+ else if (lde->kind()==LayoutDocEntry::NamespaceClasses ||
+ lde->kind()==LayoutDocEntry::FileClasses ||
lde->kind()==LayoutDocEntry::ClassNestedClasses
)
{
@@ -469,9 +469,9 @@ static void writeClassTree(OutputList &ol,const BaseClassList *bcl,bool hideSupe
ol.startIndexItem(cd->getReference(),cd->getOutputFileBase());
ol.parseText(cd->displayName());
ol.endIndexItem(cd->getReference(),cd->getOutputFileBase());
- if (cd->isReference())
- {
- ol.startTypewriter();
+ if (cd->isReference())
+ {
+ ol.startTypewriter();
ol.docify(" [external]");
ol.endTypewriter();
}
@@ -510,11 +510,11 @@ static void writeClassTree(OutputList &ol,const BaseClassList *bcl,bool hideSupe
//printf("Class %s at %p visited=%d\n",cd->name().data(),cd,cd->visited);
bool wasVisited=cd->visited;
cd->visited=TRUE;
- if (cd->getLanguage()==SrcLangExt_VHDL)
+ if (cd->getLanguage()==SrcLangExt_VHDL)
{
writeClassTree(ol,cd->baseClasses(),wasVisited,level+1,ftv,addToIndex);
}
- else
+ else
{
writeClassTree(ol,cd->subClasses(),wasVisited,level+1,ftv,addToIndex);
}
@@ -522,7 +522,7 @@ static void writeClassTree(OutputList &ol,const BaseClassList *bcl,bool hideSupe
ol.endIndexListItem();
}
}
- if (started)
+ if (started)
{
endIndexHierarchy(ol,level);
if (addToIndex)
@@ -594,13 +594,13 @@ static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv
//printf("gd=`%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count());
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(isDir,dd->shortName(),dd->getReference(),dd->getOutputFileBase(),0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(isDir,dd->shortName(),dd->getReference(),dd->getOutputFileBase(),0,TRUE,TRUE);
Doxygen::indexList->incContentsDepth();
}
if (ftv)
{
ftv->addContentsItem(isDir,dd->shortName(),dd->getReference(),
- dd->getOutputFileBase(),0,FALSE,TRUE,dd);
+ dd->getOutputFileBase(),0,FALSE,TRUE,dd);
ftv->incContentsDepth();
}
@@ -608,9 +608,9 @@ static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv
ol.startIndexItem(dd->getReference(),dd->getOutputFileBase());
ol.parseText(dd->shortName());
ol.endIndexItem(dd->getReference(),dd->getOutputFileBase());
- if (dd->isReference())
- {
- ol.startTypewriter();
+ if (dd->isReference())
+ {
+ ol.startTypewriter();
ol.docify(" [external]");
ol.endTypewriter();
}
@@ -625,7 +625,7 @@ static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv
{
writeDirTreeNode(ol,subdd,level+1,ftv,addToIndex);
}
- endIndexHierarchy(ol,level+1);
+ endIndexHierarchy(ol,level+1);
}
FileList *fileList=dd->getFiles();
@@ -660,7 +660,7 @@ static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv
doc = fileVisibleInIndex(fd,src);
QCString reference;
QCString outputBase;
- if (doc)
+ if (doc)
{
reference = fd->getReference();
outputBase = fd->getOutputFileBase();
@@ -677,11 +677,11 @@ static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv
ftv->addContentsItem(FALSE,
fd->displayName(),
reference,outputBase,
- 0,FALSE,FALSE,fd);
+ 0,FALSE,FALSE,fd);
}
}
}
- endIndexHierarchy(ol,level+1);
+ endIndexHierarchy(ol,level+1);
}
}
@@ -705,7 +705,7 @@ static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv
else if (src)
{
Doxygen::indexList->addContentsItem(
- FALSE, convertToHtml(fd->name(),TRUE), 0,
+ FALSE, convertToHtml(fd->name(),TRUE), 0,
fd->getSourceFileBase(), 0, FALSE, TRUE, fd);
}
}
@@ -727,7 +727,7 @@ static void writeDirHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
{
if (ftv)
{
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disable(OutputGenerator::Html);
}
static bool fullPathNames = Config_getBool(FULL_PATH_NAMES);
@@ -738,7 +738,7 @@ static void writeDirHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
DirDef *dd;
for (dli.toFirst();(dd=dli.current());++dli)
{
- if (dd->getOuterScope()==Doxygen::globalScope)
+ if (dd->getOuterScope()==Doxygen::globalScope)
{
writeDirTreeNode(ol,dd,0,ftv,addToIndex);
}
@@ -746,7 +746,7 @@ static void writeDirHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
}
if (ftv)
{
- FileNameListIterator fnli(*Doxygen::inputNameList);
+ FileNameListIterator fnli(*Doxygen::inputNameList);
FileName *fn;
for (fnli.toFirst();(fn=fnli.current());++fnli)
{
@@ -767,8 +767,8 @@ static void writeDirHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
}
if (doc || src)
{
- ftv->addContentsItem(FALSE,fd->displayName(),
- reference, outputBase, 0,
+ ftv->addContentsItem(FALSE,fd->displayName(),
+ reference, outputBase, 0,
FALSE,FALSE,fd);
}
if (addToIndex)
@@ -780,7 +780,7 @@ static void writeDirHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
else if (src)
{
Doxygen::indexList->addContentsItem(
- FALSE, convertToHtml(fd->name(),TRUE), 0,
+ FALSE, convertToHtml(fd->name(),TRUE), 0,
fd->getSourceFileBase(), 0, FALSE, TRUE, fd);
}
}
@@ -788,10 +788,10 @@ static void writeDirHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
}
}
}
- endIndexHierarchy(ol,0);
+ endIndexHierarchy(ol,0);
if (ftv)
{
- ol.popGeneratorState();
+ ol.popGeneratorState();
}
}
@@ -837,7 +837,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
started=TRUE;
}
ol.startIndexListItem();
- bool hasChildren = !cd->visited && classHasVisibleChildren(cd);
+ bool hasChildren = !cd->visited && classHasVisibleChildren(cd);
//printf("list: Has children %s: %d\n",cd->name().data(),hasChildren);
if (cd->isLinkable())
{
@@ -846,9 +846,9 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
ol.startIndexItem(cd->getReference(),cd->getOutputFileBase());
ol.parseText(cd->displayName());
ol.endIndexItem(cd->getReference(),cd->getOutputFileBase());
- if (cd->isReference())
+ if (cd->isReference())
{
- ol.startTypewriter();
+ ol.startTypewriter();
ol.docify(" [external]");
ol.endTypewriter();
}
@@ -859,7 +859,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
}
if (ftv)
{
- ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
+ ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
}
}
else
@@ -873,10 +873,10 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started,FT
}
if (ftv)
{
- ftv->addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE,cd);
+ ftv->addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE,cd);
}
}
- if (cd->getLanguage()==SrcLangExt_VHDL && hasChildren)
+ if (cd->getLanguage()==SrcLangExt_VHDL && hasChildren)
{
writeClassTree(ol,cd->baseClasses(),cd->visited,1,ftv,addToIndex);
cd->visited=TRUE;
@@ -898,13 +898,13 @@ static void writeClassHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
initClassHierarchy(Doxygen::hiddenClasses);
if (ftv)
{
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disable(OutputGenerator::Html);
}
bool started=FALSE;
writeClassTreeForList(ol,Doxygen::classSDict,started,ftv,addToIndex);
writeClassTreeForList(ol,Doxygen::hiddenClasses,started,ftv,addToIndex);
- if (started)
+ if (started)
{
endIndexHierarchy(ol,0);
if (addToIndex)
@@ -914,7 +914,7 @@ static void writeClassHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
}
if (ftv)
{
- ol.popGeneratorState();
+ ol.popGeneratorState();
}
}
@@ -1003,21 +1003,21 @@ static void writeHierarchicalIndex(OutputList &ol)
// ---------------
// Dynamic class hierarchical index for HTML
// ---------------
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
//2.{
ol.disableAllBut(OutputGenerator::Html);
{
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,title,0,"hierarchy",0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(TRUE,title,0,"hierarchy",0,TRUE,TRUE);
}
FTVHelp* ftv = new FTVHelp(FALSE);
writeClassHierarchy(ol,ftv,addToIndex);
QGString outStr;
FTextStream t(&outStr);
ftv->generateTreeViewInline(t);
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.writeString(outStr);
ol.popGeneratorState();
@@ -1179,7 +1179,7 @@ static void writeFileIndex(OutputList &ol)
startFile(ol,"files",0,title,HLI_Files);
startTitle(ol,0);
- //if (!Config_getString(PROJECT_NAME).isEmpty())
+ //if (!Config_getString(PROJECT_NAME).isEmpty())
//{
// title.prepend(Config_getString(PROJECT_NAME)+" ");
//}
@@ -1190,7 +1190,7 @@ static void writeFileIndex(OutputList &ol)
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,title,0,"files",0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(TRUE,title,0,"files",0,TRUE,TRUE);
Doxygen::indexList->incContentsDepth();
}
@@ -1211,7 +1211,7 @@ static void writeFileIndex(OutputList &ol)
if (Config_getBool(FULL_PATH_NAMES))
{
- // re-sort input files in (dir,file) output order instead of (file,dir) input order
+ // re-sort input files in (dir,file) output order instead of (file,dir) input order
FileNameListIterator fnli(*Doxygen::inputNameList);
FileName *fn;
for (fnli.toFirst();(fn=fnli.current());++fnli)
@@ -1279,7 +1279,7 @@ static void writeFileIndex(OutputList &ol)
// ---------------
// Hierarchical file index for HTML
// ---------------
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
FTVHelp* ftv = new FTVHelp(FALSE);
@@ -1325,9 +1325,9 @@ void writeClassTree(ClassSDict *clDict,FTVHelp *ftv,bool addToIndex,bool globalO
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
- if (cd->getLanguage()==SrcLangExt_VHDL)
+ if (cd->getLanguage()==SrcLangExt_VHDL)
{
- if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKAGECLASS ||
+ if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKAGECLASS ||
(VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKBODYCLASS
)// no architecture
{
@@ -1337,13 +1337,13 @@ void writeClassTree(ClassSDict *clDict,FTVHelp *ftv,bool addToIndex,bool globalO
{
QCString n=cd->name();
cd->setClassName(n.data());
- }
+ }
}
- if (!globalOnly ||
- cd->getOuterScope()==0 ||
- cd->getOuterScope()==Doxygen::globalScope
- )
+ if (!globalOnly ||
+ cd->getOuterScope()==0 ||
+ cd->getOuterScope()==Doxygen::globalScope
+ )
{
int count=0;
if (cd->getClassSDict())
@@ -1352,19 +1352,19 @@ void writeClassTree(ClassSDict *clDict,FTVHelp *ftv,bool addToIndex,bool globalO
ClassDef *ccd;
for (;(ccd=ccit.current());++ccit)
{
- if (ccd->isLinkableInProject() && ccd->templateMaster()==0)
+ if (ccd->isLinkableInProject() && ccd->templateMaster()==0)
{
count++;
}
}
}
- if (classVisibleInIndex(cd) && cd->templateMaster()==0)
- {
+ if (classVisibleInIndex(cd) && cd->templateMaster()==0)
+ {
ftv->addContentsItem(count>0,cd->displayName(FALSE),cd->getReference(),
- cd->getOutputFileBase(),cd->anchor(),FALSE,TRUE,cd);
- if (addToIndex &&
+ cd->getOutputFileBase(),cd->anchor(),FALSE,TRUE,cd);
+ if (addToIndex &&
/*cd->partOfGroups()==0 &&*/
- (cd->getOuterScope()==0 ||
+ (cd->getOuterScope()==0 ||
cd->getOuterScope()->definitionType()!=Definition::TypeClass
)
)
@@ -1395,15 +1395,15 @@ static void writeNamespaceTree(NamespaceSDict *nsDict,FTVHelp *ftv,
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
{
- if (nd->localName().find('@')==-1 &&
+ if (nd->localName().find('@')==-1 &&
(!rootOnly || nd->getOuterScope()==Doxygen::globalScope))
{
bool hasChildren = namespaceHasVisibleChild(nd,showClasses);
bool isLinkable = nd->isLinkableInProject();
- QCString ref;
- QCString file;
+ QCString ref;
+ QCString file;
if (isLinkable)
{
ref = nd->getReference();
@@ -1416,7 +1416,7 @@ static void writeNamespaceTree(NamespaceSDict *nsDict,FTVHelp *ftv,
if ((isLinkable && !showClasses) || hasChildren)
{
- ftv->addContentsItem(hasChildren,nd->localName(),ref,file,0,FALSE,TRUE,nd);
+ ftv->addContentsItem(hasChildren,nd->localName(),ref,file,0,FALSE,TRUE,nd);
if (addToIndex)
{
@@ -1431,7 +1431,7 @@ static void writeNamespaceTree(NamespaceSDict *nsDict,FTVHelp *ftv,
if (addToIndex) Doxygen::indexList->incContentsDepth();
ftv->incContentsDepth();
writeNamespaceTree(nd->getNamespaceSDict(),ftv,FALSE,showClasses,addToIndex);
- if (showClasses)
+ if (showClasses)
{
writeClassTree(nd->getClassSDict(),ftv,addToIndex,FALSE);
}
@@ -1470,7 +1470,7 @@ static void writeNamespaceIndex(OutputList &ol)
// ---------------
ol.pushGeneratorState();
ol.disable(OutputGenerator::Html);
-
+
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli)
@@ -1522,13 +1522,13 @@ static void writeNamespaceIndex(OutputList &ol)
// ---------------
// Hierarchical namespace index for HTML
// ---------------
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
{
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,title,0,"namespaces",0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(TRUE,title,0,"namespaces",0,TRUE,TRUE);
Doxygen::indexList->incContentsDepth();
}
FTVHelp* ftv = new FTVHelp(FALSE);
@@ -1561,13 +1561,13 @@ static int countAnnotatedClasses(int *cp)
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
- if (cd->isLinkableInProject() && cd->templateMaster()==0)
- {
+ if (cd->isLinkableInProject() && cd->templateMaster()==0)
+ {
if (!cd->isEmbeddedInOuterScope())
{
countPrinted++;
}
- count++;
+ count++;
}
}
*cp = countPrinted;
@@ -1580,20 +1580,20 @@ static void writeAnnotatedClassList(OutputList &ol)
//LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassList);
//bool addToIndex = lne==0 || lne->visible();
- ol.startIndexList();
+ ol.startIndexList();
ClassSDict::Iterator cli(*Doxygen::classSDict);
ClassDef *cd;
-
+
for (cli.toFirst();(cd=cli.current());++cli)
{
- if (cd->getLanguage()==SrcLangExt_VHDL &&
- ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKAGECLASS ||
+ if (cd->getLanguage()==SrcLangExt_VHDL &&
+ ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKAGECLASS ||
(VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKBODYCLASS)
) // no architecture
{
continue;
}
-
+
ol.pushGeneratorState();
if (cd->isEmbeddedInOuterScope())
{
@@ -1698,10 +1698,10 @@ class PrefixIgnoreClassList : public ClassList
class AlphaIndexTableCell
{
public:
- AlphaIndexTableCell(int row,int col,uint letter,ClassDef *cd) :
- m_letter(letter), m_class(cd), m_row(row), m_col(col)
+ AlphaIndexTableCell(int row,int col,uint letter,ClassDef *cd) :
+ m_letter(letter), m_class(cd), m_row(row), m_col(col)
{ //printf("AlphaIndexTableCell(%d,%d,%c,%s)\n",row,col,letter!=0 ? letter: '-',
- // cd!=(ClassDef*)0x8 ? cd->name().data() : "<null>");
+ // cd!=(ClassDef*)0x8 ? cd->name().data() : "<null>");
}
ClassDef *classDef() const { return m_class; }
@@ -1727,7 +1727,7 @@ class AlphaIndexTableRows : public QList<AlphaIndexTableCell>
class AlphaIndexTableRowsIterator : public QListIterator<AlphaIndexTableCell>
{
public:
- AlphaIndexTableRowsIterator(const AlphaIndexTableRows &list) :
+ AlphaIndexTableRowsIterator(const AlphaIndexTableRows &list) :
QListIterator<AlphaIndexTableCell>(list) {}
};
@@ -1774,7 +1774,7 @@ static void writeAlphabeticalClassList(OutputList &ol)
{
if (cd->getLanguage()==SrcLangExt_VHDL && !((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS ))// no architecture
continue;
-
+
int index = getPrefixIndex(cd->className());
//printf("name=%s index=%d %d\n",cd->className().data(),index,cd->protection());
startLetter=getUtf8CodeToLower(cd->className(),index);
@@ -1793,8 +1793,8 @@ static void writeAlphabeticalClassList(OutputList &ol)
headerItems++;
QCString li = letterToLabel(*pLetter);
QCString ls = QString(QChar(*pLetter)).utf8();
- alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" +
- li + "\">" +
+ alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" +
+ li + "\">" +
ls + "</a>";
}
alphaLinks += "</div>\n";
@@ -1824,12 +1824,12 @@ static void writeAlphabeticalClassList(OutputList &ol)
{
if (cd->getLanguage()==SrcLangExt_VHDL && !((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS ))// no architecture
continue;
-
+
if (cd->isLinkableInProject() && cd->templateMaster()==0)
{
int index = getPrefixIndex(cd->className());
startLetter=getUtf8CodeToLower(cd->className(),index);
- // Do some sorting again, since the classes are sorted by name with
+ // Do some sorting again, since the classes are sorted by name with
// prefix, which should be ignored really.
if (cd->getLanguage()==SrcLangExt_VHDL)
{
@@ -1877,7 +1877,7 @@ static void writeAlphabeticalClassList(OutputList &ol)
ClassDef *cd = cit.current();
++cit;
tableRows->append(new AlphaIndexTableCell(row,col,0,cd));
- row++;
+ row++;
NEXT_ROW();
for (;(cd=cit.current()); ++cit)
{
@@ -1910,7 +1910,7 @@ static void writeAlphabeticalClassList(OutputList &ol)
//ol.nextTableRow();
ol.writeString("<tr>");
// the last column may contain less items then the others
- //int colsInRow = (i<rows-1) ? columns : itemsInLastRow;
+ //int colsInRow = (i<rows-1) ? columns : itemsInLastRow;
//printf("row [%d]\n",i);
for (j=0;j<columns;j++) // foreach table column
{
@@ -1930,7 +1930,7 @@ static void writeAlphabeticalClassList(OutputList &ol)
ol.writeString("\"></a>");
ol.writeString("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
"<tr>"
- "<td><div class=\"ah\">&#160;&#160;");
+ "<td><div class=\"ah\">&#160;&#160;");
ol.writeString(QString(QChar(cell->letter())).utf8());
ol.writeString( "&#160;&#160;</div>"
"</td>"
@@ -1993,7 +1993,7 @@ static void writeAlphabeticalClassList(OutputList &ol)
ol.writeString("</tr>\n");
}
ol.writeString("</table>\n");
-
+
ol.writeString(alphaLinks);
// release the temporary memory
@@ -2015,7 +2015,7 @@ static void writeAlphabeticalIndex(OutputList &ol)
QCString title = lne ? lne->title() : theTranslator->trCompoundIndex();
bool addToIndex = lne==0 || lne->visible();
- startFile(ol,"classes",0,title,HLI_Classes);
+ startFile(ol,"classes",0,title,HLI_Classes);
startTitle(ol,0);
ol.parseText(title);
@@ -2023,7 +2023,7 @@ static void writeAlphabeticalIndex(OutputList &ol)
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(FALSE,title,0,"classes",0,FALSE,TRUE);
+ Doxygen::indexList->addContentsItem(FALSE,title,0,"classes",0,FALSE,TRUE);
}
ol.startContents();
@@ -2040,7 +2040,7 @@ static void writeAnnotatedIndex(OutputList &ol)
//printf("writeAnnotatedIndex: count=%d printed=%d\n",
// annotatedClasses,annotatedClassesPrinted);
if (annotatedClasses==0) return;
-
+
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
if (annotatedClassesPrinted==0)
@@ -2053,7 +2053,7 @@ static void writeAnnotatedIndex(OutputList &ol)
QCString title = lne ? lne->title() : theTranslator->trCompoundList();
bool addToIndex = lne==0 || lne->visible();
-
+
startFile(ol,"annotated",0,title,HLI_Annotated);
startTitle(ol,0);
@@ -2081,13 +2081,13 @@ static void writeAnnotatedIndex(OutputList &ol)
// ---------------
// Hierarchical class index for HTML
// ---------------
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
{
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,title,0,"annotated",0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(TRUE,title,0,"annotated",0,TRUE,TRUE);
Doxygen::indexList->incContentsDepth();
}
FTVHelp* ftv = new FTVHelp(FALSE);
@@ -2106,7 +2106,7 @@ static void writeAnnotatedIndex(OutputList &ol)
ol.popGeneratorState();
// ------
-
+
endFile(ol); // contains ol.endContents()
ol.popGeneratorState();
}
@@ -2165,9 +2165,9 @@ static void writeMemberList(OutputList &ol,bool useSections,int page,
QCString &prevNamespaceName);
// each index tab has its own write function
- static writeLinkForMember_t writeLinkForMemberMap[3] =
- {
- &writeClassLinkForMember,
+ static writeLinkForMember_t writeLinkForMemberMap[3] =
+ {
+ &writeClassLinkForMember,
&writeFileLinkForMember,
&writeNamespaceLinkForMember
};
@@ -2192,14 +2192,14 @@ static void writeMemberList(OutputList &ol,bool useSections,int page,
for (mli.toFirst();(md=mli.current());++mli)
{
const char *sep;
- bool isFunc=!md->isObjCMethod() &&
- (md->isFunction() || md->isSlot() || md->isSignal());
+ bool isFunc=!md->isObjCMethod() &&
+ (md->isFunction() || md->isSlot() || md->isSignal());
QCString name=md->name();
int startIndex = getPrefixIndex(name);
if (QCString(name.data()+startIndex)!=prevName) // new entry
{
- if ((prevName.isEmpty() ||
- tolower(name.at(startIndex))!=tolower(prevName.at(0))) &&
+ if ((prevName.isEmpty() ||
+ tolower(name.at(startIndex))!=tolower(prevName.at(0))) &&
useSections) // new section
{
if (!firstItem) ol.endItemListItem();
@@ -2267,20 +2267,20 @@ void addClassMemberNameToIndex(MemberDef *md)
static bool hideFriendCompounds = Config_getBool(HIDE_FRIEND_COMPOUNDS);
ClassDef *cd=0;
-
-
- if (md->isLinkableInProject() &&
- (cd=md->getClassDef()) &&
+
+
+ if (md->isLinkableInProject() &&
+ (cd=md->getClassDef()) &&
cd->isLinkableInProject() &&
cd->templateMaster()==0)
{
QCString n = md->name();
int index = getPrefixIndex(n);
uint letter = getUtf8CodeToLower(n,index);
- if (!n.isEmpty())
+ if (!n.isEmpty())
{
bool isFriendToHide = hideFriendCompounds &&
- (QCString(md->typeString())=="friend class" ||
+ (QCString(md->typeString())=="friend class" ||
QCString(md->typeString())=="friend struct" ||
QCString(md->typeString())=="friend union");
if (!(md->isFriend() && isFriendToHide) &&
@@ -2363,12 +2363,12 @@ void addNamespaceMemberNameToIndex(MemberDef *md)
documentedNamespaceMembers[NMHL_All]++;
}
- if (md->isFunction())
+ if (md->isFunction())
{
g_namespaceIndexLetterUsed[NMHL_Functions].append(letter,md);
documentedNamespaceMembers[NMHL_Functions]++;
}
- else if (md->isVariable())
+ else if (md->isVariable())
{
g_namespaceIndexLetterUsed[NMHL_Variables].append(letter,md);
documentedNamespaceMembers[NMHL_Variables]++;
@@ -2412,7 +2412,7 @@ void addFileMemberNameToIndex(MemberDef *md)
QCString n = md->name();
int index = getPrefixIndex(n);
uint letter = getUtf8CodeToLower(n,index);
- if (!n.isEmpty())
+ if (!n.isEmpty())
{
if (!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong()))
{
@@ -2420,12 +2420,12 @@ void addFileMemberNameToIndex(MemberDef *md)
documentedFileMembers[FMHL_All]++;
}
- if (md->isFunction())
+ if (md->isFunction())
{
g_fileIndexLetterUsed[FMHL_Functions].append(letter,md);
documentedFileMembers[FMHL_Functions]++;
}
- else if (md->isVariable())
+ else if (md->isVariable())
{
g_fileIndexLetterUsed[FMHL_Variables].append(letter,md);
documentedFileMembers[FMHL_Variables]++;
@@ -2473,9 +2473,9 @@ static void writeQuickMemberIndex(OutputList &ol,
QCString extension=Doxygen::htmlFileExtension;
if (!multiPage)
anchor="#index_";
- else if (first)
+ else if (first)
anchor=fullName+extension+"#index_";
- else
+ else
anchor=fullName+"_"+letterToLabel(i)+extension+"#index_";
startQuickIndexItem(ol,anchor+is,i==page,TRUE,first);
ol.writeString(ci);
@@ -2499,11 +2499,11 @@ static const CmhlInfo *getCmhlInfo(int hl)
{
static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
- static CmhlInfo cmhlInfo[] =
+ static CmhlInfo cmhlInfo[] =
{
CmhlInfo("functions", theTranslator->trAll()),
CmhlInfo("functions_func",
- fortranOpt ? theTranslator->trSubprograms() :
+ fortranOpt ? theTranslator->trSubprograms() :
vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
theTranslator->trFunctions()),
CmhlInfo("functions_vars",theTranslator->trVariables()),
@@ -2553,7 +2553,7 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
uint page = ml->letter();
QCString fileName = getCmhlInfo(hl)->fname;
if (multiPageIndex)
- {
+ {
if (!first)
{
fileName+="_"+letterToLabel(page);
@@ -2645,7 +2645,7 @@ static void writeClassMemberIndex(OutputList &ol)
if (documentedClassMembers[CMHL_All]>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,lne ? lne->title() : theTranslator->trCompoundMembers(),0,"functions",0);
+ Doxygen::indexList->addContentsItem(TRUE,lne ? lne->title() : theTranslator->trCompoundMembers(),0,"functions",0);
Doxygen::indexList->incContentsDepth();
}
writeClassMemberIndexFiltered(ol,CMHL_All);
@@ -2667,7 +2667,7 @@ static void writeClassMemberIndex(OutputList &ol)
//----------------------------------------------------------------------------
/** Helper class representing a file member in the navigation menu. */
-struct FmhlInfo
+struct FmhlInfo
{
FmhlInfo(const char *fn,const char *t) : fname(fn), title(t) {}
const char *fname;
@@ -2678,12 +2678,12 @@ static const FmhlInfo *getFmhlInfo(int hl)
{
static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
- static FmhlInfo fmhlInfo[] =
+ static FmhlInfo fmhlInfo[] =
{
FmhlInfo("globals", theTranslator->trAll()),
FmhlInfo("globals_func",
- fortranOpt ? theTranslator->trSubprograms() :
- vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
+ fortranOpt ? theTranslator->trSubprograms() :
+ vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
theTranslator->trFunctions()),
FmhlInfo("globals_vars",theTranslator->trVariables()),
FmhlInfo("globals_type",theTranslator->trTypedefs()),
@@ -2815,7 +2815,7 @@ static void writeFileMemberIndex(OutputList &ol)
bool addToIndex = lne==0 || lne->visible();
if (documentedFileMembers[FMHL_All]>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(FALSE,lne ? lne->title() : theTranslator->trFileMembers(),0,"globals",0);
+ Doxygen::indexList->addContentsItem(FALSE,lne ? lne->title() : theTranslator->trFileMembers(),0,"globals",0);
Doxygen::indexList->incContentsDepth();
}
writeFileMemberIndexFiltered(ol,FMHL_All);
@@ -2846,7 +2846,7 @@ static const NmhlInfo *getNmhlInfo(int hl)
{
static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
- static NmhlInfo nmhlInfo[] =
+ static NmhlInfo nmhlInfo[] =
{
NmhlInfo("namespacemembers", theTranslator->trAll()),
NmhlInfo("namespacemembers_func",
@@ -2986,7 +2986,7 @@ static void writeNamespaceMemberIndex(OutputList &ol)
bool addToIndex = lne==0 || lne->visible();
if (documentedNamespaceMembers[NMHL_All]>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(FALSE,lne ? lne->title() : theTranslator->trNamespaceMembers(),0,"namespacemembers",0);
+ Doxygen::indexList->addContentsItem(FALSE,lne ? lne->title() : theTranslator->trNamespaceMembers(),0,"namespacemembers",0);
Doxygen::indexList->incContentsDepth();
}
//bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
@@ -3026,7 +3026,7 @@ static void writeExampleIndex(OutputList &ol)
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,title,0,"examples",0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(TRUE,title,0,"examples",0,TRUE,TRUE);
Doxygen::indexList->incContentsDepth();
}
@@ -3082,7 +3082,7 @@ static void countRelatedPages(int &docPages,int &indexPages)
{
if ( pd->visibleInIndex())
{
- indexPages++;
+ indexPages++;
}
if ( pd->documentedPage())
{
@@ -3129,7 +3129,7 @@ static void writePages(PageDef *pd,FTVHelp *ftv)
ftv->addContentsItem(
hasSubPages,pageTitle,
pd->getReference(),pd->getOutputFileBase(),
- 0,hasSubPages,TRUE,pd);
+ 0,hasSubPages,TRUE,pd);
}
if (addToIndex && pd!=Doxygen::mainPage)
{
@@ -3280,7 +3280,7 @@ void writeGraphInfo(OutputList &ol)
QCString imgExt = getDotImageExtension();
if (imgExt=="svg" && s!=-1 && e!=-1)
{
- legendDocs = legendDocs.left(s+8) + "[!-- SVG 0 --]\n" + legendDocs.mid(e);
+ legendDocs = legendDocs.left(s+8) + "[!-- SVG 0 --]\n" + legendDocs.mid(e);
//printf("legendDocs=%s\n",legendDocs.data());
}
FileDef fd("","graph_legend");
@@ -3303,7 +3303,7 @@ void writeGraphInfo(OutputList &ol)
static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp* ftv, bool addToIndex)
{
//bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
- //bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
+ //bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
if (level>20)
{
warn(gd->getDefFileName(),gd->getDefLine(),
@@ -3313,7 +3313,7 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
}
/* Some groups should appear twice under different parent-groups.
- * That is why we should not check if it was visited
+ * That is why we should not check if it was visited
*/
if (/*!gd->visited &&*/ (!gd->isASubGroup() || level>0) &&
gd->isVisible() &&
@@ -3347,17 +3347,17 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
//printf("gd=`%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count());
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(isDir,gd->groupTitle(),gd->getReference(),gd->getOutputFileBase(),0,isDir,TRUE);
+ Doxygen::indexList->addContentsItem(isDir,gd->groupTitle(),gd->getReference(),gd->getOutputFileBase(),0,isDir,TRUE);
Doxygen::indexList->incContentsDepth();
}
if (ftv)
{
ftv->addContentsItem(hasSubGroups,gd->groupTitle(),
gd->getReference(),gd->getOutputFileBase(),0,
- FALSE,FALSE,gd);
+ FALSE,FALSE,gd);
ftv->incContentsDepth();
}
-
+
//ol.writeListItem();
//ol.startTextLink(gd->getOutputFileBase(),0);
//parseText(ol,gd->groupTitle());
@@ -3367,9 +3367,9 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
ol.startIndexItem(gd->getReference(),gd->getOutputFileBase());
ol.parseText(gd->groupTitle());
ol.endIndexItem(gd->getReference(),gd->getOutputFileBase());
- if (gd->isReference())
- {
- ol.startTypewriter();
+ if (gd->isReference())
+ {
+ ol.startTypewriter();
ol.docify(" [external]");
ol.endTypewriter();
}
@@ -3421,7 +3421,7 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
ClassDef *cd;
for (;(cd=it.current());++it)
{
- //bool nestedClassInSameGroup =
+ //bool nestedClassInSameGroup =
// cd->getOuterScope() && cd->getOuterScope()->definitionType()==Definition::TypeClass &&
// cd->getOuterScope()->partOfGroups()!=0 && cd->getOuterScope()->partOfGroups()->contains(gd);
//printf("===== GroupClasses: %s visible=%d nestedClassInSameGroup=%d\n",cd->name().data(),cd->isVisible(),nestedClassInSameGroup);
@@ -3528,13 +3528,13 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
{
writeGroupTreeNode(ol,subgd,level+1,ftv,addToIndex);
}
- endIndexHierarchy(ol,level+1);
+ endIndexHierarchy(ol,level+1);
}
}
}
ol.endIndexListItem();
-
+
if (addToIndex)
{
Doxygen::indexList->decContentsDepth();
@@ -3551,7 +3551,7 @@ static void writeGroupHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
{
if (ftv)
{
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disable(OutputGenerator::Html);
}
startIndexHierarchy(ol,0);
@@ -3561,10 +3561,10 @@ static void writeGroupHierarchy(OutputList &ol, FTVHelp* ftv,bool addToIndex)
{
writeGroupTreeNode(ol,gd,0,ftv,addToIndex);
}
- endIndexHierarchy(ol,0);
+ endIndexHierarchy(ol,0);
if (ftv)
{
- ol.popGeneratorState();
+ ol.popGeneratorState();
}
}
@@ -3573,7 +3573,7 @@ static void writeGroupTree(GroupDef *gd,FTVHelp *ftv,int level,bool addToIndex)
{
static bool externalGroups = Config_getBool(EXTERNAL_GROUPS);
/* Some groups should appear twice under different parent-groups.
- * That is why we should not check if it was visited
+ * That is why we should not check if it was visited
*/
if ((!gd->isASubGroup() || level>0) &&
gd->isVisible() &&
@@ -3582,7 +3582,7 @@ static void writeGroupTree(GroupDef *gd,FTVHelp *ftv,int level,bool addToIndex)
{
if (ftv)
{
- ftv->addContentsItem(hasSubGroups,gd->groupTitle(),gd->getReference(),gd->getOutputFileBase(),0);
+ ftv->addContentsItem(hasSubGroups,gd->groupTitle(),gd->getReference(),gd->getOutputFileBase(),0);
ftv->incContentsDepth();
}
if (ftv)
@@ -3607,8 +3607,8 @@ static void writeGroupTree(FTVHelp *ftv,bool addToIndex)
static void writeGroupIndex(OutputList &ol)
{
- if (documentedGroups==0) return;
- ol.pushGeneratorState();
+ if (documentedGroups==0) return;
+ ol.pushGeneratorState();
// 1.{
ol.disable(OutputGenerator::Man);
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Modules);
@@ -3642,13 +3642,13 @@ static void writeGroupIndex(OutputList &ol)
// interactive group index for HTML
// ---------------
// 2.{
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
{
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,title,0,"modules",0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(TRUE,title,0,"modules",0,TRUE,TRUE);
Doxygen::indexList->incContentsDepth();
}
FTVHelp* ftv = new FTVHelp(FALSE);
@@ -3677,8 +3677,8 @@ static void writeGroupIndex(OutputList &ol)
#if 0
static void writeDirIndex(OutputList &ol)
{
- if (documentedDirs==0) return;
- ol.pushGeneratorState();
+ if (documentedDirs==0) return;
+ ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Dirs);
QCString title = lne ? lne->title() : theTranslator->trDirectories();
@@ -3693,7 +3693,7 @@ static void writeDirIndex(OutputList &ol)
if (addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,title,0,"dirs",0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(TRUE,title,0,"dirs",0,TRUE,TRUE);
Doxygen::indexList->incContentsDepth();
}
ol.parseText(lne ? lne->intro() : theTranslator->trDirDescription());
@@ -3713,7 +3713,7 @@ static void writeDirIndex(OutputList &ol)
QGString outStr;
FTextStream t(&outStr);
ftv->generateTreeViewInline(t);
- ol.pushGeneratorState();
+ ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.writeString(outStr);
ol.popGeneratorState();
@@ -3788,7 +3788,7 @@ static void writeIndex(OutputList &ol)
//--------------------------------------------------------------------
ol.disableAllBut(OutputGenerator::Html);
- QCString defFileName =
+ QCString defFileName =
Doxygen::mainPage ? Doxygen::mainPage->docFile().data() : "[generated]";
int defLine =
Doxygen::mainPage ? Doxygen::mainPage->docLine() : -1;
@@ -3805,14 +3805,14 @@ static void writeIndex(OutputList &ol)
QCString indexName="index";
ol.startFile(indexName,0,title);
-
+
if (Doxygen::mainPage)
{
if (
(!projectName.isEmpty() && mainPageHasTitle() && qstricmp(title,projectName)!=0)
) // to avoid duplicate entries in the treeview
{
- Doxygen::indexList->addContentsItem(Doxygen::mainPage->hasSubPages(),title,0,indexName,0,Doxygen::mainPage->hasSubPages(),TRUE);
+ Doxygen::indexList->addContentsItem(Doxygen::mainPage->hasSubPages(),title,0,indexName,0,Doxygen::mainPage->hasSubPages(),TRUE);
}
if (Doxygen::mainPage->hasSubPages() || Doxygen::mainPage->hasSections())
{
@@ -3821,7 +3821,7 @@ static void writeIndex(OutputList &ol)
}
ol.startQuickIndices();
- if (!Config_getBool(DISABLE_INDEX))
+ if (!Config_getBool(DISABLE_INDEX))
{
ol.writeQuickLinks(TRUE,HLI_Main,0);
}
@@ -3858,7 +3858,7 @@ static void writeIndex(OutputList &ol)
}
ol.startContents();
- if (Config_getBool(DISABLE_INDEX) && Doxygen::mainPage==0)
+ if (Config_getBool(DISABLE_INDEX) && Doxygen::mainPage==0)
{
ol.writeQuickLinks(FALSE,HLI_Main,0);
}
@@ -3879,10 +3879,10 @@ static void writeIndex(OutputList &ol)
Doxygen::insideMainPage=FALSE;
}
-
+
endFile(ol);
ol.disable(OutputGenerator::Html);
-
+
//--------------------------------------------------------------------
// write LaTeX/RTF index
//--------------------------------------------------------------------
@@ -3891,7 +3891,7 @@ static void writeIndex(OutputList &ol)
ol.startFile("refman",0,0);
ol.startIndexSection(isTitlePageStart);
- if (!Config_getString(LATEX_HEADER).isEmpty())
+ if (!Config_getString(LATEX_HEADER).isEmpty())
{
ol.disable(OutputGenerator::Latex);
}
@@ -3907,7 +3907,7 @@ static void writeIndex(OutputList &ol)
if (!Config_getString(PROJECT_NUMBER).isEmpty())
{
- ol.startProjectNumber();
+ ol.startProjectNumber();
ol.generateDoc(defFileName,defLine,Doxygen::mainPage,0,Config_getString(PROJECT_NUMBER),FALSE,FALSE);
ol.endProjectNumber();
}
@@ -3940,7 +3940,7 @@ static void writeIndex(OutputList &ol)
bool first=Doxygen::mainPage==0;
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
- if (!pd->getGroupDef() && !pd->isReference() &&
+ if (!pd->getGroupDef() && !pd->isReference() &&
(!pd->hasParentPage() || // not inside other page
(Doxygen::mainPage==pd->getOuterScope())) // or inside main page
)
@@ -4003,7 +4003,7 @@ static void writeIndex(OutputList &ol)
{
ol.startIndexSection(isClassHierarchyIndex);
ol.parseText(/*projPrefix+*/
- (fortranOpt ? theTranslator->trCompoundIndexFortran() :
+ (fortranOpt ? theTranslator->trCompoundIndexFortran() :
vhdlOpt ? VhdlDocGen::trDesignUnitIndex() :
theTranslator->trHierarchicalIndex()
));
@@ -4014,7 +4014,7 @@ static void writeIndex(OutputList &ol)
ol.startIndexSection(isCompoundIndex);
ol.parseText(/*projPrefix+*/
(fortranOpt ? theTranslator->trCompoundIndexFortran() :
- vhdlOpt ? VhdlDocGen::trDesignUnitIndex() :
+ vhdlOpt ? VhdlDocGen::trDesignUnitIndex() :
theTranslator->trCompoundIndex()
));
ol.endIndexSection(isCompoundIndex);
@@ -4103,26 +4103,26 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
{
switch(kind)
{
- case LayoutNavEntry::MainPage:
+ case LayoutNavEntry::MainPage:
msg("Generating index page...\n");
- writeIndex(ol);
+ writeIndex(ol);
break;
- case LayoutNavEntry::Pages:
+ case LayoutNavEntry::Pages:
msg("Generating page index...\n");
writePageIndex(ol);
break;
- case LayoutNavEntry::Modules:
+ case LayoutNavEntry::Modules:
msg("Generating module index...\n");
writeGroupIndex(ol);
break;
- case LayoutNavEntry::Namespaces:
+ case LayoutNavEntry::Namespaces:
{
static bool showNamespaces = Config_getBool(SHOW_NAMESPACES);
if (showNamespaces)
{
if (documentedNamespaces>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0);
Doxygen::indexList->incContentsDepth();
needsClosing=TRUE;
}
@@ -4134,7 +4134,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
}
}
break;
- case LayoutNavEntry::NamespaceList:
+ case LayoutNavEntry::NamespaceList:
{
static bool showNamespaces = Config_getBool(SHOW_NAMESPACES);
if (showNamespaces)
@@ -4144,14 +4144,14 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
}
}
break;
- case LayoutNavEntry::NamespaceMembers:
+ case LayoutNavEntry::NamespaceMembers:
msg("Generating namespace member index...\n");
writeNamespaceMemberIndex(ol);
break;
- case LayoutNavEntry::Classes:
+ case LayoutNavEntry::Classes:
if (annotatedClasses>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,"annotated",0);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0);
Doxygen::indexList->incContentsDepth();
needsClosing=TRUE;
}
@@ -4161,7 +4161,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
writeAnnotatedIndex(ol);
}
break;
- case LayoutNavEntry::ClassList:
+ case LayoutNavEntry::ClassList:
msg("Generating annotated compound index...\n");
writeAnnotatedIndex(ol);
break;
@@ -4169,7 +4169,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
msg("Generating alphabetical compound index...\n");
writeAlphabeticalIndex(ol);
break;
- case LayoutNavEntry::ClassHierarchy:
+ case LayoutNavEntry::ClassHierarchy:
msg("Generating hierarchical class index...\n");
writeHierarchicalIndex(ol);
if (Config_getBool(HAVE_DOT) && Config_getBool(GRAPHICAL_HIERARCHY))
@@ -4178,18 +4178,18 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
writeGraphicalClassHierarchy(ol);
}
break;
- case LayoutNavEntry::ClassMembers:
+ case LayoutNavEntry::ClassMembers:
msg("Generating member index...\n");
writeClassMemberIndex(ol);
break;
- case LayoutNavEntry::Files:
+ case LayoutNavEntry::Files:
{
static bool showFiles = Config_getBool(SHOW_FILES);
if (showFiles)
{
if (documentedHtmlFiles>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0);
Doxygen::indexList->incContentsDepth();
needsClosing=TRUE;
}
@@ -4201,7 +4201,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
}
}
break;
- case LayoutNavEntry::FileList:
+ case LayoutNavEntry::FileList:
{
static bool showFiles = Config_getBool(SHOW_FILES);
if (showFiles)
@@ -4211,15 +4211,15 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
}
}
break;
- case LayoutNavEntry::FileGlobals:
+ case LayoutNavEntry::FileGlobals:
msg("Generating file member index...\n");
writeFileMemberIndex(ol);
break;
- case LayoutNavEntry::Examples:
+ case LayoutNavEntry::Examples:
msg("Generating example index...\n");
writeExampleIndex(ol);
break;
- case LayoutNavEntry::User:
+ case LayoutNavEntry::User:
{
// prepend a ! or ^ marker to the URL to avoid tampering with it
QCString url = correctURL(lne->url(),"!"); // add ! to relative URL
@@ -4229,7 +4229,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
url.prepend("^"); // prepend ^ to absolute URL
}
bool isRef = lne->baseFile().left(4)=="@ref" || lne->baseFile().left(4)=="\\ref";
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,url,0,FALSE,isRef || isRelative);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,url,0,FALSE,isRef || isRelative);
}
break;
case LayoutNavEntry::UserGroup:
@@ -4240,7 +4240,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
{
if (url=="![none]")
{
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0,FALSE,FALSE);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0,FALSE,FALSE);
}
else
{
@@ -4250,12 +4250,12 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
url.prepend("^"); // prepend ^ to absolute URL
}
bool isRef = lne->baseFile().left(4)=="@ref" || lne->baseFile().left(4)=="\\ref";
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,url,0,FALSE,isRef || isRelative);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,url,0,FALSE,isRef || isRelative);
}
}
- else
+ else
{
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0,TRUE,TRUE);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0,TRUE,TRUE);
}
Doxygen::indexList->incContentsDepth();
needsClosing=TRUE;
@@ -4273,10 +4273,10 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
{
switch(kind)
{
- case LayoutNavEntry::Namespaces:
- case LayoutNavEntry::Classes:
- case LayoutNavEntry::Files:
- case LayoutNavEntry::UserGroup:
+ case LayoutNavEntry::Namespaces:
+ case LayoutNavEntry::Classes:
+ case LayoutNavEntry::Files:
+ case LayoutNavEntry::UserGroup:
Doxygen::indexList->decContentsDepth();
break;
default:
@@ -4293,17 +4293,17 @@ static bool quickLinkVisible(LayoutNavEntry::Kind kind)
static bool showNamespaces = Config_getBool(SHOW_NAMESPACES);
switch (kind)
{
- case LayoutNavEntry::MainPage: return TRUE;
- case LayoutNavEntry::User: return TRUE;
- case LayoutNavEntry::UserGroup: return TRUE;
+ case LayoutNavEntry::MainPage: return TRUE;
+ case LayoutNavEntry::User: return TRUE;
+ case LayoutNavEntry::UserGroup: return TRUE;
case LayoutNavEntry::Pages: return indexedPages>0;
case LayoutNavEntry::Modules: return documentedGroups>0;
case LayoutNavEntry::Namespaces: return documentedNamespaces>0 && showNamespaces;
case LayoutNavEntry::NamespaceList: return documentedNamespaces>0 && showNamespaces;
case LayoutNavEntry::NamespaceMembers: return documentedNamespaceMembers[NMHL_All]>0;
case LayoutNavEntry::Classes: return annotatedClasses>0;
- case LayoutNavEntry::ClassList: return annotatedClasses>0;
- case LayoutNavEntry::ClassIndex: return annotatedClasses>0;
+ case LayoutNavEntry::ClassList: return annotatedClasses>0;
+ case LayoutNavEntry::ClassIndex: return annotatedClasses>0;
case LayoutNavEntry::ClassHierarchy: return hierarchyClasses>0;
case LayoutNavEntry::ClassMembers: return documentedClassMembers[CMHL_All]>0;
case LayoutNavEntry::Files: return documentedHtmlFiles>0 && showFiles;
@@ -4437,6 +4437,22 @@ static void writeMenuData()
if (f.open(IO_WriteOnly))
{
FTextStream t(&f);
+ t << "/*\n@ @licstart The following is the entire license notice for the\n"
+ "JavaScript code in this file.\n\nCopyright (C) 1997-2017 by Dimitri van Heesch\n\n"
+ "This program is free software; you can redistribute it and/or modify\n"
+ "it under the terms of the GNU General Public License as published by\n"
+ "the Free Software Foundation; either version 2 of the License, or\n"
+ "(at your option) any later version.\n\n"
+ "This program is distributed in the hope that it will be useful,\n"
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ " GNU General Public License for more details.\n\n"
+ "You should have received a copy of the GNU General Public License along\n"
+ "with this program; if not, write to the Free Software Foundation, Inc.,\n"
+ "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\n"
+ "@licend The above is the entire license notice\n"
+ "for the JavaScript code in this file\n"
+ "*/\n";
t << "var menudata={";
bool hasChildren = renderQuickLinksAsJs(t,root,TRUE);
if (hasChildren) t << "]";
@@ -4453,4 +4469,3 @@ void writeIndexHierarchy(OutputList &ol)
writeIndexHierarchyEntries(ol,lne->children());
}
}
-
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 26001a1..8403374 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -750,6 +750,7 @@ MemberDef::MemberDef(const char *df,int dl,int dc,
//printf("MemberDef::MemberDef(%s)\n",na);
m_impl = new MemberDefImpl;
m_impl->init(this,t,a,e,p,v,s,r,mt,tal,al);
+ number_of_flowkw = 1;
m_isLinkableCached = 0;
m_isConstructorCached = 0;
m_isDestructorCached = 0;
@@ -4910,6 +4911,16 @@ void MemberDef::invalidateCachedArgumentTypes()
invalidateCachedTypesInArgumentList(m_impl->declArgList);
}
+void MemberDef::addFlowKeyWord()
+{
+ number_of_flowkw++;
+}
+
+int MemberDef::numberOfFlowKeyWords()
+{
+ return number_of_flowkw;
+}
+
//----------------
QCString MemberDef::displayName(bool) const
diff --git a/src/memberdef.h b/src/memberdef.h
index c0825b2..bf7ea9a 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -178,6 +178,7 @@ class MemberDef : public Definition
bool isStrongEnumValue() const;
bool livesInsideEnum() const;
+ int numberOfFlowKeyWords();
// derived getters
bool isFriendToHide() const;
bool isNotFriend() const;
@@ -272,6 +273,8 @@ class MemberDef : public Definition
// ---- setters -----
//-----------------------------------------------------------------------------------
+ void addFlowKeyWord();
+
// set functions
void setMemberType(MemberType t);
void setDefinition(const char *d);
@@ -424,6 +427,9 @@ class MemberDef : public Definition
void _addToSearchIndex();
static int s_indentLevel;
+
+ int number_of_flowkw;
+
// disable copying of member defs
MemberDef(const MemberDef &);
MemberDef &operator=(const MemberDef &);
diff --git a/src/pagedef.cpp b/src/pagedef.cpp
index 1210305..e797b050 100644
--- a/src/pagedef.cpp
+++ b/src/pagedef.cpp
@@ -169,6 +169,11 @@ void PageDef::writeDocumentation(OutputList &ol)
ol.endTitleHead(manPageName, manPageName);
if (si)
{
+ ol.pushGeneratorState();
+ ol.disableAllBut(OutputGenerator::Man);
+ ol.writeString(" - ");
+ ol.popGeneratorState();
+
ol.generateDoc(docFile(),docLine(),this,0,si->title,TRUE,FALSE,0,TRUE,FALSE);
ol.endSection(si->label,si->type);
}
@@ -230,7 +235,7 @@ void PageDef::writePageDocumentation(OutputList &ol)
ol.startTextBlock();
QCString docStr = documentation()+inbodyDocumentation();
- if (!docStr.isEmpty())
+ if (hasBriefDescription() && !Doxygen::sectionDict->find(name()))
{
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Man);
diff --git a/src/pre.l b/src/pre.l
index 4c4763d..bf1ec9b 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -1984,6 +1984,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_defArgsStr+=*yytext;
BEGIN(ReadString);
}
+<FindDefineArgs>' {
+ if (getLanguageFromFileName(g_yyFileName)!=SrcLangExt_Fortran) REJECT;
+ g_defArgsStr+=*yytext;
+ BEGIN(ReadString);
+ }
<FindDefineArgs>\n {
g_defArgsStr+=' ';
g_yyLineNr++;
@@ -2014,6 +2019,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_defArgsStr+=*yytext;
BEGIN(FindDefineArgs);
}
+<ReadString>"'" {
+ if (getLanguageFromFileName(g_yyFileName)!=SrcLangExt_Fortran) REJECT;
+ g_defArgsStr+=*yytext;
+ BEGIN(FindDefineArgs);
+ }
+
<ReadString>"//"|"/*" {
g_defArgsStr+=yytext;
}
@@ -2902,7 +2913,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
}
<*>"//"[/]? {
- if (YY_START==SkipVerbatim || YY_START==SkipCond)
+ if (YY_START==SkipVerbatim || YY_START==SkipCond || getLanguageFromFileName(g_yyFileName)==SrcLangExt_Fortran)
{
REJECT;
}
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index 18d007f..6fb2432 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -1,12 +1,12 @@
/******************************************************************************
*
- *
+ *
*
* Copyright (C) 1997-2015 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
@@ -41,10 +41,10 @@
// file format: (all multi-byte values are stored in big endian format)
// 4 byte header
// 256*256*4 byte index (4 bytes)
-// for each index entry: a zero terminated list of words
+// for each index entry: a zero terminated list of words
// for each word: a \0 terminated string + 4 byte offset to the stats info
// padding bytes to align at 4 byte boundary
-// for each word: the number of urls (4 bytes)
+// for each word: the number of urls (4 bytes)
// + for each url containing the word 8 bytes statistics
// (4 bytes index to url string + 4 bytes frequency counter)
// for each url: a \0 terminated string
@@ -75,7 +75,7 @@ void IndexWord::addUrlIndex(int idx,bool hiPriority)
//--------------------------------------------------------------------
-SearchIndex::SearchIndex() : SearchIndexIntf(Internal),
+SearchIndex::SearchIndex() : SearchIndexIntf(Internal),
m_words(328829), m_index(numIndexEntries), m_url2IdMap(10007), m_urls(10007), m_urlIndex(-1)
{
int i;
@@ -94,13 +94,13 @@ void SearchIndex::setCurrentDoc(Definition *ctx,const char *anchor,bool isSource
QCString url=isSourceFile ? ((FileDef*)ctx)->getSourceFileBase() : ctx->getOutputFileBase();
url+=Config_getString(HTML_FILE_EXTENSION);
QCString baseUrl = url;
- if (anchor) url+=QCString("#")+anchor;
+ if (anchor) url+=QCString("#")+anchor;
if (!isSourceFile) baseUrl=url;
QCString name=ctx->qualifiedName();
if (ctx->definitionType()==Definition::TypeMember)
{
MemberDef *md = (MemberDef *)ctx;
- name.prepend((md->getLanguage()==SrcLangExt_Fortran ?
+ name.prepend((md->getLanguage()==SrcLangExt_Fortran ?
theTranslator->trSubprogram(TRUE,TRUE) :
theTranslator->trMember(TRUE,TRUE))+" ");
}
@@ -188,7 +188,7 @@ static int charsToIndex(const char *word)
//register ushort h=0;
//const char *k = word;
//ushort mask=0xfc00;
- //while ( *k )
+ //while ( *k )
//{
// h = (h&mask)^(h<<6)^(*k++);
//}
@@ -275,7 +275,7 @@ void SearchIndex::write(const char *fileName)
IndexWord *iw;
for (iwi.toFirst();(iw=iwi.current());++iwi)
{
- int ws = iw->word().length()+1;
+ int ws = iw->word().length()+1;
size+=ws+4; // word + url info list offset
}
size+=1; // zero list terminator
@@ -295,8 +295,8 @@ void SearchIndex::write(const char *fileName)
IndexWord *iw;
for (iwi.toFirst();(iw=iwi.current());++iwi)
{
- offset+= iw->word().length()+1;
- offset+=4; // word + offset to url info array
+ offset+= iw->word().length()+1;
+ offset+=4; // word + offset to url info array
}
offset+=1; // zero list terminator
}
@@ -312,7 +312,7 @@ void SearchIndex::write(const char *fileName)
//int statsOffset = size;
//IndexWord *iw;
int *wordStatOffsets = new int[m_words.count()];
-
+
int count=0;
// third pass: compute offset to stats info for each word
@@ -417,7 +417,7 @@ struct SearchDocEntry
QCString name;
QCString args;
QCString extId;
- QCString url;
+ QCString url;
GrowBuf importantText;
GrowBuf normalText;
};
@@ -476,7 +476,7 @@ static QCString definitionToName(Definition *ctx)
{
switch(ctx->definitionType())
{
- case Definition::TypeClass:
+ case Definition::TypeClass:
return ((ClassDef*)ctx)->compoundTypeString();
case Definition::TypeFile:
return "file";
@@ -647,23 +647,23 @@ static void addMemberToSearchIndex(MemberDef *md)
}
}
}
- else if (isLinkable &&
- (((nd=md->getNamespaceDef()) && nd->isLinkable()) ||
+ else if (isLinkable &&
+ (((nd=md->getNamespaceDef()) && nd->isLinkable()) ||
((fd=md->getFileDef()) && fd->isLinkable())
)
)
{
QCString n = md->name();
- if (!n.isEmpty())
+ if (!n.isEmpty())
{
uint letter = getUtf8CodeToLower(n,0);
g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,md);
- if (md->isFunction())
+ if (md->isFunction())
{
g_searchIndexInfo[SEARCH_INDEX_FUNCTIONS].symbolList.append(letter,md);
}
- else if (md->isVariable())
+ else if (md->isVariable())
{
g_searchIndexInfo[SEARCH_INDEX_VARIABLES].symbolList.append(letter,md);
}
@@ -940,18 +940,22 @@ void writeJavascriptSearchIndex()
t << "<div class=\"SRStatus\" id=\"Loading\">" << theTranslator->trLoading() << "</div>" << endl;
t << "<div id=\"SRResults\"></div>" << endl; // here the results will be inserted
t << "<script type=\"text/javascript\"><!--" << endl;
+ t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n";
t << "createResults();" << endl; // this function will insert the results
+ t << "/* @license-end */\n";
t << "--></script>" << endl;
- t << "<div class=\"SRStatus\" id=\"Searching\">"
+ t << "<div class=\"SRStatus\" id=\"Searching\">"
<< theTranslator->trSearching() << "</div>" << endl;
t << "<div class=\"SRStatus\" id=\"NoMatches\">"
<< theTranslator->trNoMatches() << "</div>" << endl;
t << "<script type=\"text/javascript\"><!--" << endl;
+ t << "/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\n";
t << "document.getElementById(\"Loading\").style.display=\"none\";" << endl;
t << "document.getElementById(\"NoMatches\").style.display=\"none\";" << endl;
t << "var searchResults = new SearchResults(\"searchResults\");" << endl;
t << "searchResults.Search();" << endl;
+ t << "/* @license-end */\n";
t << "--></script>" << endl;
t << "</div>" << endl; // SRIndex
t << "</body>" << endl;
@@ -1074,13 +1078,13 @@ void writeJavascriptSearchIndex()
bool found=FALSE;
overloadedFunction = ((prevScope!=0 && scope==prevScope) ||
(scope && scope==nextScope)
- ) && md &&
+ ) && md &&
(md->isFunction() || md->isSlot());
QCString prefix;
if (md) prefix=convertToXML(md->localName());
if (overloadedFunction) // overloaded member function
{
- prefix+=convertToXML(md->argsString());
+ prefix+=convertToXML(md->argsString());
// show argument list to disambiguate overloaded functions
}
else if (md) // unique member function
@@ -1112,11 +1116,11 @@ void writeJavascriptSearchIndex()
}
}
}
- else if (md && (md->getClassDef() || md->getNamespaceDef()))
+ else if (md && (md->getClassDef() || md->getNamespaceDef()))
// member in class or namespace scope
{
SrcLangExt lang = md->getLanguage();
- name = convertToXML(d->getOuterScope()->qualifiedName())
+ name = convertToXML(d->getOuterScope()->qualifiedName())
+ getLanguageSpecificSeparator(lang) + prefix;
found = TRUE;
}
@@ -1321,5 +1325,3 @@ void finializeSearchIndexer()
{
delete Doxygen::searchIndex;
}
-
-
diff --git a/src/translator_cn.h b/src/translator_cn.h
index 832d2c7..d37da94 100644
--- a/src/translator_cn.h
+++ b/src/translator_cn.h
@@ -843,7 +843,7 @@ class TranslatorChinese : public Translator
virtual QCString trReferencedBy()
{
- return "参考自";
+ return "被这些函数引用";
}
virtual QCString trRemarks()
@@ -1204,7 +1204,7 @@ class TranslatorChinese : public Translator
*/
virtual QCString trReferences()
{
- return "参考";
+ return "引用了";
}
//////////////////////////////////////////////////////////////////////////
diff --git a/src/util.cpp b/src/util.cpp
index e44f825..0cda153 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -2161,10 +2161,16 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,
if (md!=self && (self==0 || md->name()!=self->name()))
// name check is needed for overloaded members, where getDefs just returns one
{
- out.writeLink(md->getReference(),md->getOutputFileBase(),
- md->anchor(),word);
- //printf("found symbol %s\n",matchWord.data());
- found=TRUE;
+ /* in case of Fortran scop and the variable is a non Fortran variable: don't link,
+ * see also getLink in fortrancode.l
+ */
+ if (!(scope && (scope->getLanguage() == SrcLangExt_Fortran) && md->isVariable() && (md->getLanguage() != SrcLangExt_Fortran)))
+ {
+ out.writeLink(md->getReference(),md->getOutputFileBase(),
+ md->anchor(),word);
+ //printf("found symbol %s\n",matchWord.data());
+ found=TRUE;
+ }
}
}
}
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index d09de09..7883327 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -3995,10 +3995,10 @@ void FlowChart::createSVG()
//if (m)
// fprintf(stderr,"\n creating flowchart : %s %s in file %s \n",VhdlDocGen::trTypeString(m->getMemberSpecifiers()),m->name().data(),m->getFileDef()->name().data());
- QCString dir=" -o "+ov+qcs;
+ QCString dir=" -o \""+ov+qcs+"\"";
ov+="/flow_design.dot";
- QCString vlargs="-Tsvg "+ov+dir ;
+ QCString vlargs="-Tsvg \""+ov+"\" "+dir ;
if (portable_system("dot",vlargs)!=0)
{
diff --git a/templates/html/dynsections.js b/templates/html/dynsections.js
index 85e1836..ea0a7b3 100644
--- a/templates/html/dynsections.js
+++ b/templates/html/dynsections.js
@@ -1,3 +1,26 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
@@ -15,7 +38,7 @@ function toggleVisibility(linkObj)
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
- }
+ }
return false;
}
@@ -94,4 +117,4 @@ function toggleInherit(id)
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
-
+/* @license-end */
diff --git a/templates/html/extsearch.js b/templates/html/extsearch.js
index 47d2595..22d68f0 100644
--- a/templates/html/extsearch.js
+++ b/templates/html/extsearch.js
@@ -1,3 +1,26 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
function SearchBox(name, resultsPath, inFrame, label)
{
this.searchLabel = label;
@@ -99,7 +122,7 @@ function searchFor(query,page,count) {
{
lastPage-=firstPage;
firstPage=0;
- }
+ }
if (lastPage>data.pages)
{
lastPage=data.pages;
@@ -127,3 +150,4 @@ function searchFor(query,page,count) {
}
});
}
+/* @license-end */
diff --git a/templates/html/htmlbase.tpl b/templates/html/htmlbase.tpl
index 2825249..e271d3a 100644
--- a/templates/html/htmlbase.tpl
+++ b/templates/html/htmlbase.tpl
@@ -16,16 +16,20 @@
<script type="text/javascript" src="{{ page.relPath }}navtreedata.js"></script>
<script type="text/javascript" src="{{ page.relPath }}navtree.js"></script>
<script type="text/javascript">
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
+ /* @license-end */
</script>
{% endif %}
{% if not config.DISABLE_INDEX %}
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',{% if config.SEARCHENGINE %}true{% else %}false{% endif %},'{{ tr.search }}');
});
+/* @license-end */
</script>
{% endif %}
{% if config.SEARCHENGINE %}
@@ -36,14 +40,18 @@ $(function() {
<script type="text/javascript" src="{{ page.relPath }}search/search.js"></script>
{% if config.SERVER_BASED_SEARCH %}
<script type="text/javascript">
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() {
if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }
});
+ /* @license-end */
</script>
<link rel="search" href="{{ page.relPath }}search-opensearch.php?v=opensearch.xml" type="application/opensearchdescription+xml" title="{{ config.PROJECT_NAME }}"/>
{% else %}
<script type="text/javascript">
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() { init_search(); });
+ /* @license-end */
</script>
{% endif %}
{% endif %}
@@ -131,7 +139,9 @@ $(function() {
{% block search %}
{% if config.SEARCHENGINE %}
<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "{{ page.relPath }}search",false,'{{ tr.search }}');
+/* @license-end */
</script>
{% endif %}
{% endblock %}
@@ -160,7 +170,9 @@ var searchBox = new SearchBox("searchBox", "{{ page.relPath }}search",false,'{{
</div>
</div>
<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix %}{{ page_postfix }}{% endif %}{{ config.HTML_FILE_EXTENSION }}','{{ page.relPath }}');});
+/* @license-end */
</script>
<div id="doc-content">
{% endif %}
@@ -227,7 +239,7 @@ $(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix
{% else %}
{{ tr.generatedBy }}
{% endif %}
-&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="{{ page.relPath }}doxygen.png" alt="doxygen"/></a>
+&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="{{ page.relPath }}doxygen.png" alt="doxygen"/></a>
{{ doxygen.version }}
</small></address>
{% endif %}
diff --git a/templates/html/htmljsmenudata.tpl b/templates/html/htmljsmenudata.tpl
index 08d8773..3db8bd4 100644
--- a/templates/html/htmljsmenudata.tpl
+++ b/templates/html/htmljsmenudata.tpl
@@ -1,3 +1,26 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
var menudata={children:[
{text:'{{ tr.mainPage }}',url:'index{{ config.HTML_FILE_EXTENSION }}'}
{% if pageTree.tree %}
@@ -49,4 +72,3 @@ var menudata={children:[
,{text:'{{ tr.examples }}',url:'examples{{ config.HTML_FILE_EXTENSION }}'}
{% endif %}
]}
-
diff --git a/templates/html/htmlsearchresult.tpl b/templates/html/htmlsearchresult.tpl
index 2cf45fc..b795743 100644
--- a/templates/html/htmlsearchresult.tpl
+++ b/templates/html/htmlsearchresult.tpl
@@ -12,15 +12,19 @@
<div class="SRStatus" id="Loading">{{ tr.loading }}</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
createResults();
+/* @license-end */
--></script>
<div class="SRStatus" id="Searching">{{ tr.searching }}</div>
<div class="SRStatus" id="NoMatches">{{ tr.noMatches }}</div>
<script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
+/* @license-end */
--></script>
</div>
</body>
diff --git a/templates/html/jquery.js b/templates/html/jquery.js
index f5343ed..2771c74 100644
--- a/templates/html/jquery.js
+++ b/templates/html/jquery.js
@@ -1,3 +1,31 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
/*!
* jQuery JavaScript Library v1.7.1
* http://jquery.com/
@@ -53,7 +81,7 @@
(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!
* jQuery hashchange event - v1.3 - 7/21/2010
* http://benalman.com/projects/jquery-hashchange-plugin/
- *
+ *
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
@@ -84,4 +112,4 @@
*
* Licensed MIT
*/
-(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof module==="object"&&typeof module.exports==="object"){module.exports=a(require("jquery"))}else{a(jQuery)}}}(function(a){var b=[],e=!!window.createPopup,f=false,d="ontouchstart" in window,h=false,g=window.requestAnimationFrame||function(l){return setTimeout(l,1000/60)},c=window.cancelAnimationFrame||function(l){clearTimeout(l)};function k(m){var n=".smartmenus_mouse";if(!h&&!m){var o=true,l=null;a(document).bind(i([["mousemove",function(s){var t={x:s.pageX,y:s.pageY,timeStamp:new Date().getTime()};if(l){var q=Math.abs(l.x-t.x),p=Math.abs(l.y-t.y);if((q>0||p>0)&&q<=2&&p<=2&&t.timeStamp-l.timeStamp<=300){f=true;if(o){var r=a(s.target).closest("a");if(r.is("a")){a.each(b,function(){if(a.contains(this.$root[0],r[0])){this.itemEnter({currentTarget:r[0]});return false}})}o=false}}}l=t}],[d?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut",function(p){if(j(p.originalEvent)){f=false}}]],n));h=true}else{if(h&&m){a(document).unbind(n);h=false}}}function j(l){return !/^(4|mouse)$/.test(l.pointerType)}function i(l,n){if(!n){n=""}var m={};a.each(l,function(o,p){m[p[0].split(" ").join(n+" ")+n]=p[1]});return m}a.SmartMenus=function(m,l){this.$root=a(m);this.opts=l;this.rootId="";this.accessIdPrefix="";this.$subArrow=null;this.activatedItems=[];this.visibleSubMenus=[];this.showTimeout=0;this.hideTimeout=0;this.scrollTimeout=0;this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.idInc=0;this.$firstLink=null;this.$firstSub=null;this.disabled=false;this.$disableOverlay=null;this.$touchScrollingSub=null;this.cssTransforms3d="perspective" in m.style||"webkitPerspective" in m.style;this.wasCollapsible=false;this.init()};a.extend(a.SmartMenus,{hideAll:function(){a.each(b,function(){this.menuHideAll()})},destroy:function(){while(b.length){b[0].destroy()}k(true)},prototype:{init:function(n){var l=this;if(!n){b.push(this);this.rootId=(new Date().getTime()+Math.random()+"").replace(/\D/g,"");this.accessIdPrefix="sm-"+this.rootId+"-";if(this.$root.hasClass("sm-rtl")){this.opts.rightToLeftSubMenus=true}var r=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).bind(i([["mouseover focusin",a.proxy(this.rootOver,this)],["mouseout focusout",a.proxy(this.rootOut,this)],["keydown",a.proxy(this.rootKeyDown,this)]],r)).delegate("a",i([["mouseenter",a.proxy(this.itemEnter,this)],["mouseleave",a.proxy(this.itemLeave,this)],["mousedown",a.proxy(this.itemDown,this)],["focus",a.proxy(this.itemFocus,this)],["blur",a.proxy(this.itemBlur,this)],["click",a.proxy(this.itemClick,this)]],r));r+=this.rootId;if(this.opts.hideOnClick){a(document).bind(i([["touchstart",a.proxy(this.docTouchStart,this)],["touchmove",a.proxy(this.docTouchMove,this)],["touchend",a.proxy(this.docTouchEnd,this)],["click",a.proxy(this.docClick,this)]],r))}a(window).bind(i([["resize orientationchange",a.proxy(this.winResize,this)]],r));if(this.opts.subIndicators){this.$subArrow=a("<span/>").addClass("sub-arrow");if(this.opts.subIndicatorsText){this.$subArrow.html(this.opts.subIndicatorsText)}}k()}this.$firstSub=this.$root.find("ul").each(function(){l.menuInit(a(this))}).eq(0);this.$firstLink=this.$root.find("a").eq(0);if(this.opts.markCurrentItem){var p=/(index|default)\.[^#\?\/]*/i,m=/#.*/,q=window.location.href.replace(p,""),o=q.replace(m,"");this.$root.find("a").each(function(){var s=this.href.replace(p,""),t=a(this);if(s==q||s==o){t.addClass("current");if(l.opts.markCurrentTree){t.parentsUntil("[data-smartmenus-id]","ul").each(function(){a(this).dataSM("parent-a").addClass("current")})}}})}this.wasCollapsible=this.isCollapsible()},destroy:function(m){if(!m){var n=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").unbind(n).undelegate(n);n+=this.rootId;a(document).unbind(n);a(window).unbind(n);if(this.opts.subIndicators){this.$subArrow=null}}this.menuHideAll();var l=this;this.$root.find("ul").each(function(){var o=a(this);if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}if(o.dataSM("shown-before")){if(l.opts.subMenusMinWidth||l.opts.subMenusMaxWidth){o.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap")}if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}o.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})}if((o.attr("id")||"").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("ie-shim").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded");this.$root.find("a.has-submenu").each(function(){var o=a(this);if(o.attr("id").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub");if(this.opts.subIndicators){this.$root.find("span.sub-arrow").remove()}if(this.opts.markCurrentItem){this.$root.find("a.current").removeClass("current")}if(!m){this.$root=null;this.$firstLink=null;this.$firstSub=null;if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}b.splice(a.inArray(this,b),1)}},disable:function(l){if(!this.disabled){this.menuHideAll();if(!l&&!this.opts.isPopup&&this.$root.is(":visible")){var m=this.$root.offset();this.$disableOverlay=a('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:m.top,left:m.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(true),opacity:0}).appendTo(document.body)}this.disabled=true}},docClick:function(l){if(this.$touchScrollingSub){this.$touchScrollingSub=null;return}if(this.visibleSubMenus.length&&!a.contains(this.$root[0],l.target)||a(l.target).is("a")){this.menuHideAll()}},docTouchEnd:function(m){if(!this.lastTouch){return}if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!a.contains(this.$root[0],this.lastTouch.target))){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},350)}this.lastTouch=null},docTouchMove:function(m){if(!this.lastTouch){return}var l=m.originalEvent.touches[0];this.lastTouch.x2=l.pageX;this.lastTouch.y2=l.pageY},docTouchStart:function(m){var l=m.originalEvent.touches[0];this.lastTouch={x1:l.pageX,y1:l.pageY,target:l.target}},enable:function(){if(this.disabled){if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}this.disabled=false}},getClosestMenu:function(m){var l=a(m).closest("ul");while(l.dataSM("in-mega")){l=l.parent().closest("ul")}return l[0]||null},getHeight:function(l){return this.getOffset(l,true)},getOffset:function(n,l){var m;if(n.css("display")=="none"){m={position:n[0].style.position,visibility:n[0].style.visibility};n.css({position:"absolute",visibility:"hidden"}).show()}var o=n[0].getBoundingClientRect&&n[0].getBoundingClientRect(),p=o&&(l?o.height||o.bottom-o.top:o.width||o.right-o.left);if(!p&&p!==0){p=l?n[0].offsetHeight:n[0].offsetWidth}if(m){n.hide().css(m)}return p},getStartZIndex:function(l){var m=parseInt(this[l?"$root":"$firstSub"].css("z-index"));if(!l&&isNaN(m)){m=parseInt(this.$root.css("z-index"))}return !isNaN(m)?m:1},getTouchPoint:function(l){return l.touches&&l.touches[0]||l.changedTouches&&l.changedTouches[0]||l},getViewport:function(l){var m=l?"Height":"Width",o=document.documentElement["client"+m],n=window["inner"+m];if(n){o=Math.min(o,n)}return o},getViewportHeight:function(){return this.getViewport(true)},getViewportWidth:function(){return this.getViewport()},getWidth:function(l){return this.getOffset(l)},handleEvents:function(){return !this.disabled&&this.isCSSOn()},handleItemEvents:function(l){return this.handleEvents()&&!this.isLinkInMegaMenu(l)},isCollapsible:function(){return this.$firstSub.css("position")=="static"},isCSSOn:function(){return this.$firstLink.css("display")=="block"},isFixed:function(){var l=this.$root.css("position")=="fixed";if(!l){this.$root.parentsUntil("body").each(function(){if(a(this).css("position")=="fixed"){l=true;return false}})}return l},isLinkInMegaMenu:function(l){return a(this.getClosestMenu(l[0])).hasClass("mega-menu")},isTouchMode:function(){return !f||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(p,l){var n=p.closest("ul"),q=n.dataSM("level");if(q>1&&(!this.activatedItems[q-2]||this.activatedItems[q-2][0]!=n.dataSM("parent-a")[0])){var m=this;a(n.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(n).each(function(){m.itemActivate(a(this).dataSM("parent-a"))})}if(!this.isCollapsible()||l){this.menuHideSubMenus(!this.activatedItems[q-1]||this.activatedItems[q-1][0]!=p[0]?q-1:q)}this.activatedItems[q-1]=p;if(this.$root.triggerHandler("activate.smapi",p[0])===false){return}var o=p.dataSM("sub");if(o&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){this.menuShow(o)}},itemBlur:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}this.$root.triggerHandler("blur.smapi",l[0])},itemClick:function(o){var n=a(o.currentTarget);if(!this.handleItemEvents(n)){return}if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==n.closest("ul")[0]){this.$touchScrollingSub=null;o.stopPropagation();return false}if(this.$root.triggerHandler("click.smapi",n[0])===false){return false}var p=a(o.target).is("span.sub-arrow"),m=n.dataSM("sub"),l=m?m.dataSM("level")==2:false;if(m&&!m.is(":visible")){if(this.opts.showOnClick&&l){this.clickActivated=true}this.itemActivate(n);if(m.is(":visible")){this.focusActivated=true;return false}}else{if(this.isCollapsible()&&p){this.itemActivate(n);this.menuHide(m);return false}}if(this.opts.showOnClick&&l||n.hasClass("disabled")||this.$root.triggerHandler("select.smapi",n[0])===false){return false}},itemDown:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}l.dataSM("mousedown",true)},itemEnter:function(n){var m=a(n.currentTarget);if(!this.handleItemEvents(m)){return}if(!this.isTouchMode()){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var l=this;this.showTimeout=setTimeout(function(){l.itemActivate(m)},this.opts.showOnClick&&m.closest("ul").dataSM("level")==1?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",m[0])},itemFocus:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(this.focusActivated&&(!this.isTouchMode()||!l.dataSM("mousedown"))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length-1][0]!=l[0])){this.itemActivate(l,true)}this.$root.triggerHandler("focus.smapi",l[0])},itemLeave:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(!this.isTouchMode()){l[0].blur();if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}}l.removeDataSM("mousedown");this.$root.triggerHandler("mouseleave.smapi",l[0])},menuHide:function(m){if(this.$root.triggerHandler("beforehide.smapi",m[0])===false){return}m.stop(true,true);if(m.css("display")!="none"){var l=function(){m.css("z-index","")};if(this.isCollapsible()){if(this.opts.collapsibleHideFunction){this.opts.collapsibleHideFunction.call(this,m,l)}else{m.hide(this.opts.collapsibleHideDuration,l)}}else{if(this.opts.hideFunction){this.opts.hideFunction.call(this,m,l)}else{m.hide(this.opts.hideDuration,l)}}if(m.dataSM("ie-shim")){m.dataSM("ie-shim").remove().css({"-webkit-transform":"",transform:""})}if(m.dataSM("scroll")){this.menuScrollStop(m);m.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).unbind(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()}m.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false");m.attr({"aria-expanded":"false","aria-hidden":"true"});var n=m.dataSM("level");this.activatedItems.splice(n-1,1);this.visibleSubMenus.splice(a.inArray(m,this.visibleSubMenus),1);this.$root.triggerHandler("hide.smapi",m[0])}},menuHideAll:function(){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var m=this.opts.isPopup?1:0;for(var l=this.visibleSubMenus.length-1;l>=m;l--){this.menuHide(this.visibleSubMenus[l])}if(this.opts.isPopup){this.$root.stop(true,true);if(this.$root.is(":visible")){if(this.opts.hideFunction){this.opts.hideFunction.call(this,this.$root)}else{this.$root.hide(this.opts.hideDuration)}if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").remove()}}}this.activatedItems=[];this.visibleSubMenus=[];this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(n){for(var l=this.activatedItems.length-1;l>=n;l--){var m=this.activatedItems[l].dataSM("sub");if(m){this.menuHide(m)}}},menuIframeShim:function(l){if(e&&this.opts.overlapControlsInIE&&!l.dataSM("ie-shim")){l.dataSM("ie-shim",a("<iframe/>").attr({src:"javascript:0",tabindex:-9}).css({position:"absolute",top:"auto",left:"0",opacity:0,border:"0"}))}},menuInit:function(l){if(!l.dataSM("in-mega")){if(l.hasClass("mega-menu")){l.find("ul").dataSM("in-mega",true)}var q=2,m=l[0];while((m=m.parentNode.parentNode)!=this.$root[0]){q++}var n=l.prevAll("a").eq(-1);if(!n.length){n=l.prevAll().find("a").eq(-1)}n.addClass("has-submenu").dataSM("sub",l);l.dataSM("parent-a",n).dataSM("level",q).parent().dataSM("sub",l);var o=n.attr("id")||this.accessIdPrefix+(++this.idInc),p=l.attr("id")||this.accessIdPrefix+(++this.idInc);n.attr({id:o,"aria-haspopup":"true","aria-controls":p,"aria-expanded":"false"});l.attr({id:p,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"});if(this.opts.subIndicators){n[this.opts.subIndicatorsPos](this.$subArrow.clone())}}},menuPosition:function(K){var r=K.dataSM("parent-a"),D=r.closest("li"),E=D.parent(),l=K.dataSM("level"),t=this.getWidth(K),J=this.getHeight(K),u=r.offset(),o=u.left,m=u.top,q=this.getWidth(r),F=this.getHeight(r),H=a(window),v=H.scrollLeft(),s=H.scrollTop(),z=this.getViewportWidth(),L=this.getViewportHeight(),w=E.parent().is("[data-sm-horizontal-sub]")||l==2&&!E.hasClass("sm-vertical"),B=this.opts.rightToLeftSubMenus&&!D.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&D.is("[data-sm-reverse]"),p=l==2?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,n=l==2?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,C,A;if(w){C=B?q-t-p:p;A=this.opts.bottomToTopSubMenus?-J-n:F+n}else{C=B?p-t:q-p;A=this.opts.bottomToTopSubMenus?F-n-J:n}if(this.opts.keepInViewport){var N=o+C,M=m+A;if(B&&N<v){C=w?v-N+C:q-p}else{if(!B&&N+t>v+z){C=w?v+z-t-N+C:p-t}}if(!w){if(J<L&&M+J>s+L){A+=s+L-J-M}else{if(J>=L||M<s){A+=s-M}}}if(w&&(M+J>s+L+0.49||M<s)||!w&&J>L+0.49){var G=this;if(!K.dataSM("scroll-arrows")){K.dataSM("scroll-arrows",a([a('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],a('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).bind({mouseenter:function(){K.dataSM("scroll").up=a(this).hasClass("scroll-up");G.menuScroll(K)},mouseleave:function(x){G.menuScrollStop(K);G.menuScrollOut(K,x)},"mousewheel DOMMouseScroll":function(x){x.preventDefault()}}).insertAfter(K))}var I=".smartmenus_scroll";K.dataSM("scroll",{y:this.cssTransforms3d?0:A-F,step:1,itemH:F,subH:J,arrowDownH:this.getHeight(K.dataSM("scroll-arrows").eq(1))}).bind(i([["mouseover",function(x){G.menuScrollOver(K,x)}],["mouseout",function(x){G.menuScrollOut(K,x)}],["mousewheel DOMMouseScroll",function(x){G.menuScrollMousewheel(K,x)}]],I)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:C+(parseInt(K.css("border-left-width"))||0),width:t-(parseInt(K.css("border-left-width"))||0)-(parseInt(K.css("border-right-width"))||0),zIndex:K.css("z-index")}).eq(w&&this.opts.bottomToTopSubMenus?0:1).show();if(this.isFixed()){K.css({"touch-action":"none","-ms-touch-action":"none"}).bind(i([[d?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp",function(x){G.menuScrollTouch(K,x)}]],I))}}}K.css({top:"auto",left:"0",marginLeft:C,marginTop:A-F});this.menuIframeShim(K);if(K.dataSM("ie-shim")){K.dataSM("ie-shim").css({zIndex:K.css("z-index"),width:t,height:J,marginLeft:C,marginTop:A-F})}},menuScroll:function(r,m,n){var p=r.dataSM("scroll"),q=r.dataSM("scroll-arrows"),o=p.up?p.upEnd:p.downEnd,s;if(!m&&p.momentum){p.momentum*=0.92;s=p.momentum;if(s<0.5){this.menuScrollStop(r);return}}else{s=n||(m||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(p.step))}var l=r.dataSM("level");if(this.activatedItems[l-1]&&this.activatedItems[l-1].dataSM("sub")&&this.activatedItems[l-1].dataSM("sub").is(":visible")){this.menuHideSubMenus(l-1)}p.y=p.up&&o<=p.y||!p.up&&o>=p.y?p.y:(Math.abs(o-p.y)>s?p.y+(p.up?s:-s):o);r.add(r.dataSM("ie-shim")).css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+p.y+"px, 0)",transform:"translate3d(0, "+p.y+"px, 0)"}:{marginTop:p.y});if(f&&(p.up&&p.y>p.downEnd||!p.up&&p.y<p.upEnd)){q.eq(p.up?1:0).show()}if(p.y==o){if(f){q.eq(p.up?0:1).hide()}this.menuScrollStop(r)}else{if(!m){if(this.opts.scrollAccelerate&&p.step<this.opts.scrollStep){p.step+=0.2}var t=this;this.scrollTimeout=g(function(){t.menuScroll(r)})}}},menuScrollMousewheel:function(m,n){if(this.getClosestMenu(n.target)==m[0]){n=n.originalEvent;var l=(n.wheelDelta||-n.detail)>0;if(m.dataSM("scroll-arrows").eq(l?0:1).is(":visible")){m.dataSM("scroll").up=l;this.menuScroll(m,true)}}n.preventDefault()},menuScrollOut:function(l,m){if(f){if(!/^scroll-(up|down)/.test((m.relatedTarget||"").className)&&(l[0]!=m.relatedTarget&&!a.contains(l[0],m.relatedTarget)||this.getClosestMenu(m.relatedTarget)!=l[0])){l.dataSM("scroll-arrows").css("visibility","hidden")}}},menuScrollOver:function(n,o){if(f){if(!/^scroll-(up|down)/.test(o.target.className)&&this.getClosestMenu(o.target)==n[0]){this.menuScrollRefreshData(n);var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;n.dataSM("scroll-arrows").eq(0).css("margin-top",l).end().eq(1).css("margin-top",l+this.getViewportHeight()-m.arrowDownH).end().css("visibility","visible")}}},menuScrollRefreshData:function(n){var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;if(this.cssTransforms3d){l=-(parseFloat(n.css("margin-top"))-l)}a.extend(m,{upEnd:l,downEnd:l+this.getViewportHeight()-m.subH})},menuScrollStop:function(l){if(this.scrollTimeout){c(this.scrollTimeout);this.scrollTimeout=0;l.dataSM("scroll").step=1;return true}},menuScrollTouch:function(p,q){q=q.originalEvent;if(j(q)){var m=this.getTouchPoint(q);if(this.getClosestMenu(m.target)==p[0]){var o=p.dataSM("scroll");if(/(start|down)$/i.test(q.type)){if(this.menuScrollStop(p)){q.preventDefault();this.$touchScrollingSub=p}else{this.$touchScrollingSub=null}this.menuScrollRefreshData(p);a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}else{if(/move$/i.test(q.type)){var n=o.touchY!==undefined?o.touchY:o.touchStartY;if(n!==undefined&&n!=m.pageY){this.$touchScrollingSub=p;var l=n<m.pageY;if(o.up!==undefined&&o.up!=l){a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}a.extend(o,{up:l,touchY:m.pageY});this.menuScroll(p,true,Math.abs(m.pageY-n))}q.preventDefault()}else{if(o.touchY!==undefined){if(o.momentum=Math.pow(Math.abs(m.pageY-o.touchStartY)/(q.timeStamp-o.touchStartTime),2)*15){this.menuScrollStop(p);this.menuScroll(p);q.preventDefault()}delete o.touchY}}}}}},menuShow:function(n){if(!n.dataSM("beforefirstshowfired")){n.dataSM("beforefirstshowfired",true);if(this.$root.triggerHandler("beforefirstshow.smapi",n[0])===false){return}}if(this.$root.triggerHandler("beforeshow.smapi",n[0])===false){return}n.dataSM("shown-before",true).stop(true,true);if(!n.is(":visible")){var m=n.dataSM("parent-a");if(this.opts.keepHighlighted||this.isCollapsible()){m.addClass("highlighted")}if(this.isCollapsible()){n.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""})}else{n.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1);if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){n.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap");if(this.opts.subMenusMinWidth){n.css("min-width",this.opts.subMenusMinWidth)}if(this.opts.subMenusMaxWidth){var o=this.getWidth(n);n.css("max-width",this.opts.subMenusMaxWidth);if(o>this.getWidth(n)){n.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}}}this.menuPosition(n);if(n.dataSM("ie-shim")){n.dataSM("ie-shim").insertBefore(n)}}var l=function(){n.css("overflow","")};if(this.isCollapsible()){if(this.opts.collapsibleShowFunction){this.opts.collapsibleShowFunction.call(this,n,l)}else{n.show(this.opts.collapsibleShowDuration,l)}}else{if(this.opts.showFunction){this.opts.showFunction.call(this,n,l)}else{n.show(this.opts.showDuration,l)}}m.attr("aria-expanded","true");n.attr({"aria-expanded":"true","aria-hidden":"false"});this.visibleSubMenus.push(n);this.$root.triggerHandler("show.smapi",n[0])}},popupHide:function(l){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var m=this;this.hideTimeout=setTimeout(function(){m.menuHideAll()},l?1:this.opts.hideTimeout)},popupShow:function(o,n){if(!this.opts.isPopup){alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}this.$root.dataSM("shown-before",true).stop(true,true);if(!this.$root.is(":visible")){this.$root.css({left:o,top:n});this.menuIframeShim(this.$root);if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").css({zIndex:this.$root.css("z-index"),width:this.getWidth(this.$root),height:this.getHeight(this.$root),left:o,top:n}).insertBefore(this.$root)}var m=this,l=function(){m.$root.css("overflow","")};if(this.opts.showFunction){this.opts.showFunction.call(this,this.$root,l)}else{this.$root.show(this.opts.showDuration,l)}this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(true);this.init(true)},rootKeyDown:function(o){if(!this.handleEvents()){return}switch(o.keyCode){case 27:var m=this.activatedItems[0];if(m){this.menuHideAll();m[0].focus();var n=m.dataSM("sub");if(n){this.menuHide(n)}}break;case 32:var l=a(o.target);if(l.is("a")&&this.handleItemEvents(l)){var n=l.dataSM("sub");if(n&&!n.is(":visible")){this.itemClick({currentTarget:o.target});o.preventDefault()}}break}},rootOut:function(m){if(!this.handleEvents()||this.isTouchMode()||m.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}if(!this.opts.showOnClick||!this.opts.hideOnClick){var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(l){if(!this.handleEvents()||this.isTouchMode()||l.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}},winResize:function(m){if(!this.handleEvents()){if(this.$disableOverlay){var n=this.$root.offset();this.$disableOverlay.css({top:n.top,left:n.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}return}if(!("onorientationchange" in window)||m.type=="orientationchange"){var l=this.isCollapsible();if(!(this.wasCollapsible&&l)){if(this.activatedItems.length){this.activatedItems[this.activatedItems.length-1][0].blur()}this.menuHideAll()}this.wasCollapsible=l}}}});a.fn.dataSM=function(l,m){if(m){return this.data(l+"_smartmenus",m)}return this.data(l+"_smartmenus")};a.fn.removeDataSM=function(l){return this.removeData(l+"_smartmenus")};a.fn.smartmenus=function(m){if(typeof m=="string"){var l=arguments,o=m;Array.prototype.shift.call(l);return this.each(function(){var p=a(this).data("smartmenus");if(p&&p[o]){p[o].apply(p,l)}})}var n=a.extend({},a.fn.smartmenus.defaults,m);return this.each(function(){new a.SmartMenus(this,n)})};a.fn.smartmenus.defaults={isPopup:false,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:true,subIndicatorsPos:"prepend",subIndicatorsText:"+",scrollStep:30,scrollAccelerate:true,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(m,l){m.fadeOut(200,l)},collapsibleShowDuration:0,collapsibleShowFunction:function(m,l){m.slideDown(200,l)},collapsibleHideDuration:0,collapsibleHideFunction:function(m,l){m.slideUp(200,l)},showOnClick:false,hideOnClick:true,noMouseOver:false,keepInViewport:true,keepHighlighted:true,markCurrentItem:false,markCurrentTree:true,rightToLeftSubMenus:false,bottomToTopSubMenus:false,overlapControlsInIE:true};return a})); \ No newline at end of file
+(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof module==="object"&&typeof module.exports==="object"){module.exports=a(require("jquery"))}else{a(jQuery)}}}(function(a){var b=[],e=!!window.createPopup,f=false,d="ontouchstart" in window,h=false,g=window.requestAnimationFrame||function(l){return setTimeout(l,1000/60)},c=window.cancelAnimationFrame||function(l){clearTimeout(l)};function k(m){var n=".smartmenus_mouse";if(!h&&!m){var o=true,l=null;a(document).bind(i([["mousemove",function(s){var t={x:s.pageX,y:s.pageY,timeStamp:new Date().getTime()};if(l){var q=Math.abs(l.x-t.x),p=Math.abs(l.y-t.y);if((q>0||p>0)&&q<=2&&p<=2&&t.timeStamp-l.timeStamp<=300){f=true;if(o){var r=a(s.target).closest("a");if(r.is("a")){a.each(b,function(){if(a.contains(this.$root[0],r[0])){this.itemEnter({currentTarget:r[0]});return false}})}o=false}}}l=t}],[d?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut",function(p){if(j(p.originalEvent)){f=false}}]],n));h=true}else{if(h&&m){a(document).unbind(n);h=false}}}function j(l){return !/^(4|mouse)$/.test(l.pointerType)}function i(l,n){if(!n){n=""}var m={};a.each(l,function(o,p){m[p[0].split(" ").join(n+" ")+n]=p[1]});return m}a.SmartMenus=function(m,l){this.$root=a(m);this.opts=l;this.rootId="";this.accessIdPrefix="";this.$subArrow=null;this.activatedItems=[];this.visibleSubMenus=[];this.showTimeout=0;this.hideTimeout=0;this.scrollTimeout=0;this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.idInc=0;this.$firstLink=null;this.$firstSub=null;this.disabled=false;this.$disableOverlay=null;this.$touchScrollingSub=null;this.cssTransforms3d="perspective" in m.style||"webkitPerspective" in m.style;this.wasCollapsible=false;this.init()};a.extend(a.SmartMenus,{hideAll:function(){a.each(b,function(){this.menuHideAll()})},destroy:function(){while(b.length){b[0].destroy()}k(true)},prototype:{init:function(n){var l=this;if(!n){b.push(this);this.rootId=(new Date().getTime()+Math.random()+"").replace(/\D/g,"");this.accessIdPrefix="sm-"+this.rootId+"-";if(this.$root.hasClass("sm-rtl")){this.opts.rightToLeftSubMenus=true}var r=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).bind(i([["mouseover focusin",a.proxy(this.rootOver,this)],["mouseout focusout",a.proxy(this.rootOut,this)],["keydown",a.proxy(this.rootKeyDown,this)]],r)).delegate("a",i([["mouseenter",a.proxy(this.itemEnter,this)],["mouseleave",a.proxy(this.itemLeave,this)],["mousedown",a.proxy(this.itemDown,this)],["focus",a.proxy(this.itemFocus,this)],["blur",a.proxy(this.itemBlur,this)],["click",a.proxy(this.itemClick,this)]],r));r+=this.rootId;if(this.opts.hideOnClick){a(document).bind(i([["touchstart",a.proxy(this.docTouchStart,this)],["touchmove",a.proxy(this.docTouchMove,this)],["touchend",a.proxy(this.docTouchEnd,this)],["click",a.proxy(this.docClick,this)]],r))}a(window).bind(i([["resize orientationchange",a.proxy(this.winResize,this)]],r));if(this.opts.subIndicators){this.$subArrow=a("<span/>").addClass("sub-arrow");if(this.opts.subIndicatorsText){this.$subArrow.html(this.opts.subIndicatorsText)}}k()}this.$firstSub=this.$root.find("ul").each(function(){l.menuInit(a(this))}).eq(0);this.$firstLink=this.$root.find("a").eq(0);if(this.opts.markCurrentItem){var p=/(index|default)\.[^#\?\/]*/i,m=/#.*/,q=window.location.href.replace(p,""),o=q.replace(m,"");this.$root.find("a").each(function(){var s=this.href.replace(p,""),t=a(this);if(s==q||s==o){t.addClass("current");if(l.opts.markCurrentTree){t.parentsUntil("[data-smartmenus-id]","ul").each(function(){a(this).dataSM("parent-a").addClass("current")})}}})}this.wasCollapsible=this.isCollapsible()},destroy:function(m){if(!m){var n=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").unbind(n).undelegate(n);n+=this.rootId;a(document).unbind(n);a(window).unbind(n);if(this.opts.subIndicators){this.$subArrow=null}}this.menuHideAll();var l=this;this.$root.find("ul").each(function(){var o=a(this);if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}if(o.dataSM("shown-before")){if(l.opts.subMenusMinWidth||l.opts.subMenusMaxWidth){o.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap")}if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}o.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})}if((o.attr("id")||"").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("ie-shim").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded");this.$root.find("a.has-submenu").each(function(){var o=a(this);if(o.attr("id").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub");if(this.opts.subIndicators){this.$root.find("span.sub-arrow").remove()}if(this.opts.markCurrentItem){this.$root.find("a.current").removeClass("current")}if(!m){this.$root=null;this.$firstLink=null;this.$firstSub=null;if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}b.splice(a.inArray(this,b),1)}},disable:function(l){if(!this.disabled){this.menuHideAll();if(!l&&!this.opts.isPopup&&this.$root.is(":visible")){var m=this.$root.offset();this.$disableOverlay=a('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:m.top,left:m.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(true),opacity:0}).appendTo(document.body)}this.disabled=true}},docClick:function(l){if(this.$touchScrollingSub){this.$touchScrollingSub=null;return}if(this.visibleSubMenus.length&&!a.contains(this.$root[0],l.target)||a(l.target).is("a")){this.menuHideAll()}},docTouchEnd:function(m){if(!this.lastTouch){return}if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!a.contains(this.$root[0],this.lastTouch.target))){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},350)}this.lastTouch=null},docTouchMove:function(m){if(!this.lastTouch){return}var l=m.originalEvent.touches[0];this.lastTouch.x2=l.pageX;this.lastTouch.y2=l.pageY},docTouchStart:function(m){var l=m.originalEvent.touches[0];this.lastTouch={x1:l.pageX,y1:l.pageY,target:l.target}},enable:function(){if(this.disabled){if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}this.disabled=false}},getClosestMenu:function(m){var l=a(m).closest("ul");while(l.dataSM("in-mega")){l=l.parent().closest("ul")}return l[0]||null},getHeight:function(l){return this.getOffset(l,true)},getOffset:function(n,l){var m;if(n.css("display")=="none"){m={position:n[0].style.position,visibility:n[0].style.visibility};n.css({position:"absolute",visibility:"hidden"}).show()}var o=n[0].getBoundingClientRect&&n[0].getBoundingClientRect(),p=o&&(l?o.height||o.bottom-o.top:o.width||o.right-o.left);if(!p&&p!==0){p=l?n[0].offsetHeight:n[0].offsetWidth}if(m){n.hide().css(m)}return p},getStartZIndex:function(l){var m=parseInt(this[l?"$root":"$firstSub"].css("z-index"));if(!l&&isNaN(m)){m=parseInt(this.$root.css("z-index"))}return !isNaN(m)?m:1},getTouchPoint:function(l){return l.touches&&l.touches[0]||l.changedTouches&&l.changedTouches[0]||l},getViewport:function(l){var m=l?"Height":"Width",o=document.documentElement["client"+m],n=window["inner"+m];if(n){o=Math.min(o,n)}return o},getViewportHeight:function(){return this.getViewport(true)},getViewportWidth:function(){return this.getViewport()},getWidth:function(l){return this.getOffset(l)},handleEvents:function(){return !this.disabled&&this.isCSSOn()},handleItemEvents:function(l){return this.handleEvents()&&!this.isLinkInMegaMenu(l)},isCollapsible:function(){return this.$firstSub.css("position")=="static"},isCSSOn:function(){return this.$firstLink.css("display")=="block"},isFixed:function(){var l=this.$root.css("position")=="fixed";if(!l){this.$root.parentsUntil("body").each(function(){if(a(this).css("position")=="fixed"){l=true;return false}})}return l},isLinkInMegaMenu:function(l){return a(this.getClosestMenu(l[0])).hasClass("mega-menu")},isTouchMode:function(){return !f||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(p,l){var n=p.closest("ul"),q=n.dataSM("level");if(q>1&&(!this.activatedItems[q-2]||this.activatedItems[q-2][0]!=n.dataSM("parent-a")[0])){var m=this;a(n.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(n).each(function(){m.itemActivate(a(this).dataSM("parent-a"))})}if(!this.isCollapsible()||l){this.menuHideSubMenus(!this.activatedItems[q-1]||this.activatedItems[q-1][0]!=p[0]?q-1:q)}this.activatedItems[q-1]=p;if(this.$root.triggerHandler("activate.smapi",p[0])===false){return}var o=p.dataSM("sub");if(o&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){this.menuShow(o)}},itemBlur:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}this.$root.triggerHandler("blur.smapi",l[0])},itemClick:function(o){var n=a(o.currentTarget);if(!this.handleItemEvents(n)){return}if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==n.closest("ul")[0]){this.$touchScrollingSub=null;o.stopPropagation();return false}if(this.$root.triggerHandler("click.smapi",n[0])===false){return false}var p=a(o.target).is("span.sub-arrow"),m=n.dataSM("sub"),l=m?m.dataSM("level")==2:false;if(m&&!m.is(":visible")){if(this.opts.showOnClick&&l){this.clickActivated=true}this.itemActivate(n);if(m.is(":visible")){this.focusActivated=true;return false}}else{if(this.isCollapsible()&&p){this.itemActivate(n);this.menuHide(m);return false}}if(this.opts.showOnClick&&l||n.hasClass("disabled")||this.$root.triggerHandler("select.smapi",n[0])===false){return false}},itemDown:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}l.dataSM("mousedown",true)},itemEnter:function(n){var m=a(n.currentTarget);if(!this.handleItemEvents(m)){return}if(!this.isTouchMode()){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var l=this;this.showTimeout=setTimeout(function(){l.itemActivate(m)},this.opts.showOnClick&&m.closest("ul").dataSM("level")==1?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",m[0])},itemFocus:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(this.focusActivated&&(!this.isTouchMode()||!l.dataSM("mousedown"))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length-1][0]!=l[0])){this.itemActivate(l,true)}this.$root.triggerHandler("focus.smapi",l[0])},itemLeave:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(!this.isTouchMode()){l[0].blur();if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}}l.removeDataSM("mousedown");this.$root.triggerHandler("mouseleave.smapi",l[0])},menuHide:function(m){if(this.$root.triggerHandler("beforehide.smapi",m[0])===false){return}m.stop(true,true);if(m.css("display")!="none"){var l=function(){m.css("z-index","")};if(this.isCollapsible()){if(this.opts.collapsibleHideFunction){this.opts.collapsibleHideFunction.call(this,m,l)}else{m.hide(this.opts.collapsibleHideDuration,l)}}else{if(this.opts.hideFunction){this.opts.hideFunction.call(this,m,l)}else{m.hide(this.opts.hideDuration,l)}}if(m.dataSM("ie-shim")){m.dataSM("ie-shim").remove().css({"-webkit-transform":"",transform:""})}if(m.dataSM("scroll")){this.menuScrollStop(m);m.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).unbind(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()}m.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false");m.attr({"aria-expanded":"false","aria-hidden":"true"});var n=m.dataSM("level");this.activatedItems.splice(n-1,1);this.visibleSubMenus.splice(a.inArray(m,this.visibleSubMenus),1);this.$root.triggerHandler("hide.smapi",m[0])}},menuHideAll:function(){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var m=this.opts.isPopup?1:0;for(var l=this.visibleSubMenus.length-1;l>=m;l--){this.menuHide(this.visibleSubMenus[l])}if(this.opts.isPopup){this.$root.stop(true,true);if(this.$root.is(":visible")){if(this.opts.hideFunction){this.opts.hideFunction.call(this,this.$root)}else{this.$root.hide(this.opts.hideDuration)}if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").remove()}}}this.activatedItems=[];this.visibleSubMenus=[];this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(n){for(var l=this.activatedItems.length-1;l>=n;l--){var m=this.activatedItems[l].dataSM("sub");if(m){this.menuHide(m)}}},menuIframeShim:function(l){if(e&&this.opts.overlapControlsInIE&&!l.dataSM("ie-shim")){l.dataSM("ie-shim",a("<iframe/>").attr({src:"javascript:0",tabindex:-9}).css({position:"absolute",top:"auto",left:"0",opacity:0,border:"0"}))}},menuInit:function(l){if(!l.dataSM("in-mega")){if(l.hasClass("mega-menu")){l.find("ul").dataSM("in-mega",true)}var q=2,m=l[0];while((m=m.parentNode.parentNode)!=this.$root[0]){q++}var n=l.prevAll("a").eq(-1);if(!n.length){n=l.prevAll().find("a").eq(-1)}n.addClass("has-submenu").dataSM("sub",l);l.dataSM("parent-a",n).dataSM("level",q).parent().dataSM("sub",l);var o=n.attr("id")||this.accessIdPrefix+(++this.idInc),p=l.attr("id")||this.accessIdPrefix+(++this.idInc);n.attr({id:o,"aria-haspopup":"true","aria-controls":p,"aria-expanded":"false"});l.attr({id:p,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"});if(this.opts.subIndicators){n[this.opts.subIndicatorsPos](this.$subArrow.clone())}}},menuPosition:function(K){var r=K.dataSM("parent-a"),D=r.closest("li"),E=D.parent(),l=K.dataSM("level"),t=this.getWidth(K),J=this.getHeight(K),u=r.offset(),o=u.left,m=u.top,q=this.getWidth(r),F=this.getHeight(r),H=a(window),v=H.scrollLeft(),s=H.scrollTop(),z=this.getViewportWidth(),L=this.getViewportHeight(),w=E.parent().is("[data-sm-horizontal-sub]")||l==2&&!E.hasClass("sm-vertical"),B=this.opts.rightToLeftSubMenus&&!D.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&D.is("[data-sm-reverse]"),p=l==2?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,n=l==2?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,C,A;if(w){C=B?q-t-p:p;A=this.opts.bottomToTopSubMenus?-J-n:F+n}else{C=B?p-t:q-p;A=this.opts.bottomToTopSubMenus?F-n-J:n}if(this.opts.keepInViewport){var N=o+C,M=m+A;if(B&&N<v){C=w?v-N+C:q-p}else{if(!B&&N+t>v+z){C=w?v+z-t-N+C:p-t}}if(!w){if(J<L&&M+J>s+L){A+=s+L-J-M}else{if(J>=L||M<s){A+=s-M}}}if(w&&(M+J>s+L+0.49||M<s)||!w&&J>L+0.49){var G=this;if(!K.dataSM("scroll-arrows")){K.dataSM("scroll-arrows",a([a('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],a('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).bind({mouseenter:function(){K.dataSM("scroll").up=a(this).hasClass("scroll-up");G.menuScroll(K)},mouseleave:function(x){G.menuScrollStop(K);G.menuScrollOut(K,x)},"mousewheel DOMMouseScroll":function(x){x.preventDefault()}}).insertAfter(K))}var I=".smartmenus_scroll";K.dataSM("scroll",{y:this.cssTransforms3d?0:A-F,step:1,itemH:F,subH:J,arrowDownH:this.getHeight(K.dataSM("scroll-arrows").eq(1))}).bind(i([["mouseover",function(x){G.menuScrollOver(K,x)}],["mouseout",function(x){G.menuScrollOut(K,x)}],["mousewheel DOMMouseScroll",function(x){G.menuScrollMousewheel(K,x)}]],I)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:C+(parseInt(K.css("border-left-width"))||0),width:t-(parseInt(K.css("border-left-width"))||0)-(parseInt(K.css("border-right-width"))||0),zIndex:K.css("z-index")}).eq(w&&this.opts.bottomToTopSubMenus?0:1).show();if(this.isFixed()){K.css({"touch-action":"none","-ms-touch-action":"none"}).bind(i([[d?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp",function(x){G.menuScrollTouch(K,x)}]],I))}}}K.css({top:"auto",left:"0",marginLeft:C,marginTop:A-F});this.menuIframeShim(K);if(K.dataSM("ie-shim")){K.dataSM("ie-shim").css({zIndex:K.css("z-index"),width:t,height:J,marginLeft:C,marginTop:A-F})}},menuScroll:function(r,m,n){var p=r.dataSM("scroll"),q=r.dataSM("scroll-arrows"),o=p.up?p.upEnd:p.downEnd,s;if(!m&&p.momentum){p.momentum*=0.92;s=p.momentum;if(s<0.5){this.menuScrollStop(r);return}}else{s=n||(m||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(p.step))}var l=r.dataSM("level");if(this.activatedItems[l-1]&&this.activatedItems[l-1].dataSM("sub")&&this.activatedItems[l-1].dataSM("sub").is(":visible")){this.menuHideSubMenus(l-1)}p.y=p.up&&o<=p.y||!p.up&&o>=p.y?p.y:(Math.abs(o-p.y)>s?p.y+(p.up?s:-s):o);r.add(r.dataSM("ie-shim")).css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+p.y+"px, 0)",transform:"translate3d(0, "+p.y+"px, 0)"}:{marginTop:p.y});if(f&&(p.up&&p.y>p.downEnd||!p.up&&p.y<p.upEnd)){q.eq(p.up?1:0).show()}if(p.y==o){if(f){q.eq(p.up?0:1).hide()}this.menuScrollStop(r)}else{if(!m){if(this.opts.scrollAccelerate&&p.step<this.opts.scrollStep){p.step+=0.2}var t=this;this.scrollTimeout=g(function(){t.menuScroll(r)})}}},menuScrollMousewheel:function(m,n){if(this.getClosestMenu(n.target)==m[0]){n=n.originalEvent;var l=(n.wheelDelta||-n.detail)>0;if(m.dataSM("scroll-arrows").eq(l?0:1).is(":visible")){m.dataSM("scroll").up=l;this.menuScroll(m,true)}}n.preventDefault()},menuScrollOut:function(l,m){if(f){if(!/^scroll-(up|down)/.test((m.relatedTarget||"").className)&&(l[0]!=m.relatedTarget&&!a.contains(l[0],m.relatedTarget)||this.getClosestMenu(m.relatedTarget)!=l[0])){l.dataSM("scroll-arrows").css("visibility","hidden")}}},menuScrollOver:function(n,o){if(f){if(!/^scroll-(up|down)/.test(o.target.className)&&this.getClosestMenu(o.target)==n[0]){this.menuScrollRefreshData(n);var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;n.dataSM("scroll-arrows").eq(0).css("margin-top",l).end().eq(1).css("margin-top",l+this.getViewportHeight()-m.arrowDownH).end().css("visibility","visible")}}},menuScrollRefreshData:function(n){var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;if(this.cssTransforms3d){l=-(parseFloat(n.css("margin-top"))-l)}a.extend(m,{upEnd:l,downEnd:l+this.getViewportHeight()-m.subH})},menuScrollStop:function(l){if(this.scrollTimeout){c(this.scrollTimeout);this.scrollTimeout=0;l.dataSM("scroll").step=1;return true}},menuScrollTouch:function(p,q){q=q.originalEvent;if(j(q)){var m=this.getTouchPoint(q);if(this.getClosestMenu(m.target)==p[0]){var o=p.dataSM("scroll");if(/(start|down)$/i.test(q.type)){if(this.menuScrollStop(p)){q.preventDefault();this.$touchScrollingSub=p}else{this.$touchScrollingSub=null}this.menuScrollRefreshData(p);a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}else{if(/move$/i.test(q.type)){var n=o.touchY!==undefined?o.touchY:o.touchStartY;if(n!==undefined&&n!=m.pageY){this.$touchScrollingSub=p;var l=n<m.pageY;if(o.up!==undefined&&o.up!=l){a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}a.extend(o,{up:l,touchY:m.pageY});this.menuScroll(p,true,Math.abs(m.pageY-n))}q.preventDefault()}else{if(o.touchY!==undefined){if(o.momentum=Math.pow(Math.abs(m.pageY-o.touchStartY)/(q.timeStamp-o.touchStartTime),2)*15){this.menuScrollStop(p);this.menuScroll(p);q.preventDefault()}delete o.touchY}}}}}},menuShow:function(n){if(!n.dataSM("beforefirstshowfired")){n.dataSM("beforefirstshowfired",true);if(this.$root.triggerHandler("beforefirstshow.smapi",n[0])===false){return}}if(this.$root.triggerHandler("beforeshow.smapi",n[0])===false){return}n.dataSM("shown-before",true).stop(true,true);if(!n.is(":visible")){var m=n.dataSM("parent-a");if(this.opts.keepHighlighted||this.isCollapsible()){m.addClass("highlighted")}if(this.isCollapsible()){n.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""})}else{n.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1);if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){n.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap");if(this.opts.subMenusMinWidth){n.css("min-width",this.opts.subMenusMinWidth)}if(this.opts.subMenusMaxWidth){var o=this.getWidth(n);n.css("max-width",this.opts.subMenusMaxWidth);if(o>this.getWidth(n)){n.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}}}this.menuPosition(n);if(n.dataSM("ie-shim")){n.dataSM("ie-shim").insertBefore(n)}}var l=function(){n.css("overflow","")};if(this.isCollapsible()){if(this.opts.collapsibleShowFunction){this.opts.collapsibleShowFunction.call(this,n,l)}else{n.show(this.opts.collapsibleShowDuration,l)}}else{if(this.opts.showFunction){this.opts.showFunction.call(this,n,l)}else{n.show(this.opts.showDuration,l)}}m.attr("aria-expanded","true");n.attr({"aria-expanded":"true","aria-hidden":"false"});this.visibleSubMenus.push(n);this.$root.triggerHandler("show.smapi",n[0])}},popupHide:function(l){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var m=this;this.hideTimeout=setTimeout(function(){m.menuHideAll()},l?1:this.opts.hideTimeout)},popupShow:function(o,n){if(!this.opts.isPopup){alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}this.$root.dataSM("shown-before",true).stop(true,true);if(!this.$root.is(":visible")){this.$root.css({left:o,top:n});this.menuIframeShim(this.$root);if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").css({zIndex:this.$root.css("z-index"),width:this.getWidth(this.$root),height:this.getHeight(this.$root),left:o,top:n}).insertBefore(this.$root)}var m=this,l=function(){m.$root.css("overflow","")};if(this.opts.showFunction){this.opts.showFunction.call(this,this.$root,l)}else{this.$root.show(this.opts.showDuration,l)}this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(true);this.init(true)},rootKeyDown:function(o){if(!this.handleEvents()){return}switch(o.keyCode){case 27:var m=this.activatedItems[0];if(m){this.menuHideAll();m[0].focus();var n=m.dataSM("sub");if(n){this.menuHide(n)}}break;case 32:var l=a(o.target);if(l.is("a")&&this.handleItemEvents(l)){var n=l.dataSM("sub");if(n&&!n.is(":visible")){this.itemClick({currentTarget:o.target});o.preventDefault()}}break}},rootOut:function(m){if(!this.handleEvents()||this.isTouchMode()||m.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}if(!this.opts.showOnClick||!this.opts.hideOnClick){var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(l){if(!this.handleEvents()||this.isTouchMode()||l.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}},winResize:function(m){if(!this.handleEvents()){if(this.$disableOverlay){var n=this.$root.offset();this.$disableOverlay.css({top:n.top,left:n.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}return}if(!("onorientationchange" in window)||m.type=="orientationchange"){var l=this.isCollapsible();if(!(this.wasCollapsible&&l)){if(this.activatedItems.length){this.activatedItems[this.activatedItems.length-1][0].blur()}this.menuHideAll()}this.wasCollapsible=l}}}});a.fn.dataSM=function(l,m){if(m){return this.data(l+"_smartmenus",m)}return this.data(l+"_smartmenus")};a.fn.removeDataSM=function(l){return this.removeData(l+"_smartmenus")};a.fn.smartmenus=function(m){if(typeof m=="string"){var l=arguments,o=m;Array.prototype.shift.call(l);return this.each(function(){var p=a(this).data("smartmenus");if(p&&p[o]){p[o].apply(p,l)}})}var n=a.extend({},a.fn.smartmenus.defaults,m);return this.each(function(){new a.SmartMenus(this,n)})};a.fn.smartmenus.defaults={isPopup:false,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:true,subIndicatorsPos:"prepend",subIndicatorsText:"+",scrollStep:30,scrollAccelerate:true,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(m,l){m.fadeOut(200,l)},collapsibleShowDuration:0,collapsibleShowFunction:function(m,l){m.slideDown(200,l)},collapsibleHideDuration:0,collapsibleHideFunction:function(m,l){m.slideUp(200,l)},showOnClick:false,hideOnClick:true,noMouseOver:false,keepInViewport:true,keepHighlighted:true,markCurrentItem:false,markCurrentTree:true,rightToLeftSubMenus:false,bottomToTopSubMenus:false,overlapControlsInIE:true};return a}));
diff --git a/templates/html/menu.js b/templates/html/menu.js
index 97db4c2..89aaf57 100644
--- a/templates/html/menu.js
+++ b/templates/html/menu.js
@@ -1,3 +1,26 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
function makeTree(data,relPath) {
var result='';
@@ -24,3 +47,4 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
}
$('#main-menu').smartmenus();
}
+/* @license-end */
diff --git a/templates/html/navtree.js b/templates/html/navtree.js
index e6d31b0..7ce2935 100644
--- a/templates/html/navtree.js
+++ b/templates/html/navtree.js
@@ -1,3 +1,26 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
var navTreeSubIndices = new Array();
var arrowDown = '&#9660;';
var arrowRight = '&#9658;';
@@ -87,7 +110,7 @@ function getScript(scriptName,func,show)
}
}
}
- head.appendChild(script);
+ head.appendChild(script);
}
function createIndent(o,domNode,node,level)
@@ -514,4 +537,4 @@ function initNavTree(toroot,relpath)
}
})
}
-
+/* @license-end */
diff --git a/templates/html/resize.js b/templates/html/resize.js
index 56e4a02..6617aee 100644
--- a/templates/html/resize.js
+++ b/templates/html/resize.js
@@ -1,3 +1,26 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
function initResizable()
{
var cookie_namespace = 'doxygen';
@@ -110,5 +133,4 @@ function initResizable()
$(".ui-resizable-handle").dblclick(collapseExpand);
$(window).load(resizeHeight);
}
-
-
+/* @license-end */
diff --git a/templates/html/search.js b/templates/html/search.js
index dedce3b..a554ab9 100644
--- a/templates/html/search.js
+++ b/templates/html/search.js
@@ -1,3 +1,26 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
function convertToId(search)
{
var result = '';
@@ -788,4 +811,4 @@ function init_search()
}
searchBox.OnSelectItem(0);
}
-
+/* @license-end */
diff --git a/templates/html/svgpan.js b/templates/html/svgpan.js
index db9fcb9..1fc1544 100644
--- a/templates/html/svgpan.js
+++ b/templates/html/svgpan.js
@@ -1,3 +1,26 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
/**
* The code below is based on SVGPan Library 1.2 and was modified for doxygen
* to support both zooming and panning via the mouse and via embedded bottons.
@@ -5,17 +28,17 @@
* This code is licensed under the following BSD license:
*
* Copyright 2009-2010 Andrea Leofreddi <a.leofreddi@itcharm.com>. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR
@@ -25,7 +48,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of Andrea Leofreddi.
@@ -47,7 +70,7 @@ var maxZoom;
if (!window) window=this;
/**
- * Show the graph in the middle of the view, scaled to fit
+ * Show the graph in the middle of the view, scaled to fit
*/
function show()
{
@@ -86,7 +109,7 @@ function show()
/**
* Register handlers
*/
-function init(evt)
+function init(evt)
{
svgDoc = evt.target.ownerDocument;
try {
@@ -107,8 +130,8 @@ function init(evt)
if (window.addEventListener)
{
- if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 ||
- navigator.userAgent.toLowerCase().indexOf("opera") >= 0 ||
+ if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 ||
+ navigator.userAgent.toLowerCase().indexOf("opera") >= 0 ||
navigator.appVersion.indexOf("MSIE") != -1)
{
window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9
@@ -128,7 +151,7 @@ window.onresize=function()
/**
* Instance an SVGPoint object with given event coordinates.
*/
-function getEventPoint(evt)
+function getEventPoint(evt)
{
var p = root.createSVGPoint();
p.x = evt.clientX;
@@ -139,7 +162,7 @@ function getEventPoint(evt)
/**
* Sets the current transform matrix of an element.
*/
-function setCTM(element, matrix)
+function setCTM(element, matrix)
{
var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")";
element.setAttribute("transform", s);
@@ -169,7 +192,7 @@ function doZoom(g,point,zoomFactor)
/**
* Handle mouse move event.
*/
-function handleMouseWheel(evt)
+function handleMouseWheel(evt)
{
if (!evt) evt = window.evt;
if (!evt.shiftKey) return; // only zoom when shift is pressed
@@ -197,7 +220,7 @@ function handleMouseWheel(evt)
/**
* Handle mouse move event.
*/
-function handleMouseMove(evt)
+function handleMouseMove(evt)
{
if(evt.preventDefault)
evt.preventDefault();
@@ -206,18 +229,18 @@ function handleMouseMove(evt)
var g = svgDoc.getElementById("viewport");
- if (state == 'pan')
+ if (state == 'pan')
{
// Pan mode
var p = getEventPoint(evt).matrixTransform(stateTf);
setCTM(g,stateTf.inverse().translate(p.x - stateOrigin.x, p.y - stateOrigin.y));
- }
+ }
}
/**
* Handle click event.
*/
-function handleMouseDown(evt)
+function handleMouseDown(evt)
{
if(evt.preventDefault)
evt.preventDefault();
@@ -232,7 +255,7 @@ function handleMouseDown(evt)
/**
* Handle mouse button release event.
*/
-function handleMouseUp(evt)
+function handleMouseUp(evt)
{
if (evt.preventDefault) evt.preventDefault();
evt.returnValue = false;
@@ -245,7 +268,7 @@ function handleMouseUp(evt)
/**
* Dumps a matrix to a string (useful for debug).
*/
-function dumpMatrix(matrix)
+function dumpMatrix(matrix)
{
var s = "[ " + matrix.a + ", " + matrix.c + ", " + matrix.e + "\n " + matrix.b + ", " + matrix.d + ", " + matrix.f + "\n 0, 0, 1 ]";
return s;
@@ -282,7 +305,7 @@ function handleZoom(evt,direction)
doZoom(g,p,factor);
}
-function serializeXmlNode(xmlNode)
+function serializeXmlNode(xmlNode)
{
if (typeof window.XMLSerializer != "undefined") {
return (new window.XMLSerializer()).serializeToString(xmlNode);
@@ -292,7 +315,7 @@ function serializeXmlNode(xmlNode)
return "";
}
-/**
+/**
* Handler for print function
*/
function handlePrint(evt)
@@ -317,7 +340,4 @@ function handlePrint(evt)
alert('Failed to open popup window needed for printing!\n'+e.message);
}
}
-
-
-
-
+/* @license-end */
diff --git a/vhdlparser/Makefile b/vhdlparser/Makefile
index 4725470..855fcb8 100644
--- a/vhdlparser/Makefile
+++ b/vhdlparser/Makefile
@@ -1,22 +1,397 @@
-#
-# Copyright (C) 1997-2015 by Dimitri van Heesch.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation under the terms of the GNU General Public License is hereby
-# granted. No representations are made about the suitability of this software
-# for any purpose. It is provided "as is" without express or implied warranty.
-# See the GNU General Public License for more details.
-#
-# Documents produced by Doxygen are derivative works derived from the
-# input used in their production; they are not affected by this license.
-#
-
-regenerate:
- rm -f CharStream.cc CharStream.h ErrorHandler.h ParseException.cc ParseException.h \
- Token.cc Token.h TokenManager.h TokenMgrError.cc TokenMgrError.h VhdlParser.cc VhdlParser.h \
- VhdlParserConstants.h VhdlParserTokenManager.cc VhdlParserTokenManager.h \
- JavaCC.h
- javacc vhdlparser.jj
- cp JavaCC.h.in JavaCC.h
-
-FORCE:
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.0
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+.PHONY : .NOTPARALLEL
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/zwick/Repos/C/doxygen
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/zwick/Repos/C/doxygen
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target install
+install: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+ /usr/bin/cmake -P cmake_install.cmake
+.PHONY : install
+
+# Special rule for the target install
+install/fast: preinstall/fast
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+ /usr/bin/cmake -P cmake_install.cmake
+.PHONY : install/fast
+
+# Special rule for the target install/local
+install/local: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local
+
+# Special rule for the target install/local
+install/local/fast: install/local
+.PHONY : install/local/fast
+
+# Special rule for the target list_install_components
+list_install_components:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
+.PHONY : list_install_components
+
+# Special rule for the target list_install_components
+list_install_components/fast: list_install_components
+.PHONY : list_install_components/fast
+
+# Special rule for the target package
+package: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool..."
+ cd /home/zwick/Repos/C/doxygen && /usr/bin/cpack --config ./CPackConfig.cmake
+.PHONY : package
+
+# Special rule for the target package
+package/fast: package
+.PHONY : package/fast
+
+# Special rule for the target package_source
+package_source:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool for source..."
+ cd /home/zwick/Repos/C/doxygen && /usr/bin/cpack --config ./CPackSourceConfig.cmake /home/zwick/Repos/C/doxygen/CPackSourceConfig.cmake
+.PHONY : package_source
+
+# Special rule for the target package_source
+package_source/fast: package_source
+.PHONY : package_source/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target test
+test:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..."
+ /usr/bin/ctest --force-new-ctest-process $(ARGS)
+.PHONY : test
+
+# Special rule for the target test
+test/fast: test
+.PHONY : test/fast
+
+# The main all target
+all: cmake_check_build_system
+ cd /home/zwick/Repos/C/doxygen && $(CMAKE_COMMAND) -E cmake_progress_start /home/zwick/Repos/C/doxygen/CMakeFiles /home/zwick/Repos/C/doxygen/vhdlparser/CMakeFiles/progress.marks
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f CMakeFiles/Makefile2 vhdlparser/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/zwick/Repos/C/doxygen/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f CMakeFiles/Makefile2 vhdlparser/clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f CMakeFiles/Makefile2 vhdlparser/preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f CMakeFiles/Makefile2 vhdlparser/preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ cd /home/zwick/Repos/C/doxygen && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+# Convenience name for target.
+vhdlparser/CMakeFiles/vhdlparser.dir/rule:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f CMakeFiles/Makefile2 vhdlparser/CMakeFiles/vhdlparser.dir/rule
+.PHONY : vhdlparser/CMakeFiles/vhdlparser.dir/rule
+
+# Convenience name for target.
+vhdlparser: vhdlparser/CMakeFiles/vhdlparser.dir/rule
+.PHONY : vhdlparser
+
+# fast build rule for target.
+vhdlparser/fast:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/build
+.PHONY : vhdlparser/fast
+
+CharStream.o: CharStream.cc.o
+.PHONY : CharStream.o
+
+# target to build an object file
+CharStream.cc.o:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/CharStream.cc.o
+.PHONY : CharStream.cc.o
+
+CharStream.i: CharStream.cc.i
+.PHONY : CharStream.i
+
+# target to preprocess a source file
+CharStream.cc.i:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/CharStream.cc.i
+.PHONY : CharStream.cc.i
+
+CharStream.s: CharStream.cc.s
+.PHONY : CharStream.s
+
+# target to generate assembly for a file
+CharStream.cc.s:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/CharStream.cc.s
+.PHONY : CharStream.cc.s
+
+ParseException.o: ParseException.cc.o
+.PHONY : ParseException.o
+
+# target to build an object file
+ParseException.cc.o:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/ParseException.cc.o
+.PHONY : ParseException.cc.o
+
+ParseException.i: ParseException.cc.i
+.PHONY : ParseException.i
+
+# target to preprocess a source file
+ParseException.cc.i:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/ParseException.cc.i
+.PHONY : ParseException.cc.i
+
+ParseException.s: ParseException.cc.s
+.PHONY : ParseException.s
+
+# target to generate assembly for a file
+ParseException.cc.s:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/ParseException.cc.s
+.PHONY : ParseException.cc.s
+
+Token.o: Token.cc.o
+.PHONY : Token.o
+
+# target to build an object file
+Token.cc.o:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/Token.cc.o
+.PHONY : Token.cc.o
+
+Token.i: Token.cc.i
+.PHONY : Token.i
+
+# target to preprocess a source file
+Token.cc.i:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/Token.cc.i
+.PHONY : Token.cc.i
+
+Token.s: Token.cc.s
+.PHONY : Token.s
+
+# target to generate assembly for a file
+Token.cc.s:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/Token.cc.s
+.PHONY : Token.cc.s
+
+TokenMgrError.o: TokenMgrError.cc.o
+.PHONY : TokenMgrError.o
+
+# target to build an object file
+TokenMgrError.cc.o:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/TokenMgrError.cc.o
+.PHONY : TokenMgrError.cc.o
+
+TokenMgrError.i: TokenMgrError.cc.i
+.PHONY : TokenMgrError.i
+
+# target to preprocess a source file
+TokenMgrError.cc.i:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/TokenMgrError.cc.i
+.PHONY : TokenMgrError.cc.i
+
+TokenMgrError.s: TokenMgrError.cc.s
+.PHONY : TokenMgrError.s
+
+# target to generate assembly for a file
+TokenMgrError.cc.s:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/TokenMgrError.cc.s
+.PHONY : TokenMgrError.cc.s
+
+VhdlParser.o: VhdlParser.cc.o
+.PHONY : VhdlParser.o
+
+# target to build an object file
+VhdlParser.cc.o:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParser.cc.o
+.PHONY : VhdlParser.cc.o
+
+VhdlParser.i: VhdlParser.cc.i
+.PHONY : VhdlParser.i
+
+# target to preprocess a source file
+VhdlParser.cc.i:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParser.cc.i
+.PHONY : VhdlParser.cc.i
+
+VhdlParser.s: VhdlParser.cc.s
+.PHONY : VhdlParser.s
+
+# target to generate assembly for a file
+VhdlParser.cc.s:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParser.cc.s
+.PHONY : VhdlParser.cc.s
+
+VhdlParserIF.o: VhdlParserIF.cpp.o
+.PHONY : VhdlParserIF.o
+
+# target to build an object file
+VhdlParserIF.cpp.o:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParserIF.cpp.o
+.PHONY : VhdlParserIF.cpp.o
+
+VhdlParserIF.i: VhdlParserIF.cpp.i
+.PHONY : VhdlParserIF.i
+
+# target to preprocess a source file
+VhdlParserIF.cpp.i:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParserIF.cpp.i
+.PHONY : VhdlParserIF.cpp.i
+
+VhdlParserIF.s: VhdlParserIF.cpp.s
+.PHONY : VhdlParserIF.s
+
+# target to generate assembly for a file
+VhdlParserIF.cpp.s:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParserIF.cpp.s
+.PHONY : VhdlParserIF.cpp.s
+
+VhdlParserTokenManager.o: VhdlParserTokenManager.cc.o
+.PHONY : VhdlParserTokenManager.o
+
+# target to build an object file
+VhdlParserTokenManager.cc.o:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParserTokenManager.cc.o
+.PHONY : VhdlParserTokenManager.cc.o
+
+VhdlParserTokenManager.i: VhdlParserTokenManager.cc.i
+.PHONY : VhdlParserTokenManager.i
+
+# target to preprocess a source file
+VhdlParserTokenManager.cc.i:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParserTokenManager.cc.i
+.PHONY : VhdlParserTokenManager.cc.i
+
+VhdlParserTokenManager.s: VhdlParserTokenManager.cc.s
+.PHONY : VhdlParserTokenManager.s
+
+# target to generate assembly for a file
+VhdlParserTokenManager.cc.s:
+ cd /home/zwick/Repos/C/doxygen && $(MAKE) -f vhdlparser/CMakeFiles/vhdlparser.dir/build.make vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParserTokenManager.cc.s
+.PHONY : VhdlParserTokenManager.cc.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... edit_cache"
+ @echo "... install"
+ @echo "... install/local"
+ @echo "... list_install_components"
+ @echo "... package"
+ @echo "... package_source"
+ @echo "... rebuild_cache"
+ @echo "... test"
+ @echo "... vhdlparser"
+ @echo "... CharStream.o"
+ @echo "... CharStream.i"
+ @echo "... CharStream.s"
+ @echo "... ParseException.o"
+ @echo "... ParseException.i"
+ @echo "... ParseException.s"
+ @echo "... Token.o"
+ @echo "... Token.i"
+ @echo "... Token.s"
+ @echo "... TokenMgrError.o"
+ @echo "... TokenMgrError.i"
+ @echo "... TokenMgrError.s"
+ @echo "... VhdlParser.o"
+ @echo "... VhdlParser.i"
+ @echo "... VhdlParser.s"
+ @echo "... VhdlParserIF.o"
+ @echo "... VhdlParserIF.i"
+ @echo "... VhdlParserIF.s"
+ @echo "... VhdlParserTokenManager.o"
+ @echo "... VhdlParserTokenManager.i"
+ @echo "... VhdlParserTokenManager.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ cd /home/zwick/Repos/C/doxygen && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+