Commit 0f275314 authored by Petr Prikryl's avatar Petr Prikryl

Merge branch 'master' of https://github.com/doxygen/doxygen.git

Conflicts:
	doc/language.doc
parents e31402cb 1e373422
......@@ -79,7 +79,7 @@ docs: FORCE
pdf: docs
cd latex ; $(MAKE)
DISTFILES = Doxyfile libmd5 addon tmake doc examples bin lib objects \
DISTFILES = Doxyfile libmd5 addon tmake doc examples bin lib objects testing \
qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \
Makefile.win_make.in INSTALL LANGUAGE.HOWTO LICENSE PLATFORMS \
VERSION README.md packages winbuild jquery
......
......@@ -224,9 +224,13 @@ void MainWindow::updateConfigFileName(const QString &fileName)
void MainWindow::loadConfigFromFile(const QString & fileName)
{
m_expert->loadConfig(fileName);
m_wizard->refresh();
// save full path info of original file
QString absFileName = QFileInfo(fileName).absoluteFilePath();
// updates the current directory
updateConfigFileName(fileName);
// open the specified configuration file
m_expert->loadConfig(absFileName);
m_wizard->refresh();
updateLaunchButtonState();
m_modified = false;
updateTitle();
......
......@@ -173,9 +173,9 @@ when the translator was updated.
</tr>
<tr bgcolor="#ffffff">
<td bgcolor="#ffffff">Japanese</td>
<td>Hiroki Iseri<br/>Ryunosuke Satoh<br/>Kenji Nagamatsu<br/>Iwasa Kazmi</td>
<td>goyoki at gmail dot com<br/>sun594 at hotmail dot com<br/>naga at joyful dot club dot ne dot jp<br/><span style="color: brown">[unreachable]</span></td>
<td bgcolor="#ffcccc">1.6.0</td>
<td>Suzumizaki-Kimikata<br/>Hiroki Iseri<br/>Ryunosuke Satoh<br/>Kenji Nagamatsu<br/>Iwasa Kazmi</td>
<td>szmml at h12u.com<br/>goyoki at gmail dot com<br/>sun594 at hotmail dot com<br/><span style="color: brown">[unreachable]</span><br/><span style="color: brown">[unreachable]</span></td>
<td bgcolor="#ccffcc">up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td bgcolor="#ffffff">JapaneseEn</td>
......@@ -370,9 +370,10 @@ when the translator was updated.
Italian & Alessandro Falappa & {\tt\tiny alessandro at falappa dot net} & 1.8.2 \\
~ & Ahmed Aldo Faisal & {\tt\tiny aaf23 at cam dot ac dot uk} & ~ \\
\hline
Japanese & Hiroki Iseri & {\tt\tiny goyoki at gmail dot com} & 1.6.0 \\
Japanese & Suzumizaki-Kimikata & {\tt\tiny szmml at h12u.com} & up-to-date \\
~ & Hiroki Iseri & {\tt\tiny goyoki at gmail dot com} & ~ \\
~ & Ryunosuke Satoh & {\tt\tiny sun594 at hotmail dot com} & ~ \\
~ & Kenji Nagamatsu & {\tt\tiny naga at joyful dot club dot ne dot jp} & ~ \\
~ & Kenji Nagamatsu & {\tt\tiny [unreachable] naga at joyful dot club dot ne dot jp} & ~ \\
~ & Iwasa Kazmi & {\tt\tiny [unreachable] iwasa at cosmo-system dot jp} & ~ \\
\hline
JapaneseEn & see the Japanese language & {\tt\tiny ~} & English based \\
......
......@@ -85,9 +85,10 @@ Alessandro Falappa: alessandro at falappa dot net
Ahmed Aldo Faisal: aaf23 at cam dot ac dot uk
TranslatorJapanese
Suzumizaki-Kimikata: szmml at h12u.com
Hiroki Iseri: goyoki at gmail dot com
Ryunosuke Satoh: sun594 at hotmail dot com
Kenji Nagamatsu: naga at joyful dot club dot ne dot jp
Kenji Nagamatsu: [unreachable] naga at joyful dot club dot ne dot jp
Iwasa Kazmi: [unreachable] iwasa at cosmo-system dot jp
TranslatorKorean
......
......@@ -33,7 +33,7 @@ class BufStr
BufStr(int size)
: m_size(size), m_writeOffset(0), m_spareRoom(10240), m_buf(0)
{
m_buf = (char *)malloc(size);
m_buf = (char *)calloc(size,1);
}
~BufStr()
{
......@@ -62,12 +62,17 @@ class BufStr
}
void resize( uint newlen )
{
uint oldsize = m_size;
m_size=newlen;
if (m_writeOffset>=m_size) // offset out of range -> enlarge
{
m_size=m_writeOffset+m_spareRoom;
}
m_buf = (char *)realloc(m_buf,m_size);
if (m_size>oldsize)
{
memset(m_buf+oldsize,0,m_size-oldsize);
}
}
int size() const
{
......
......@@ -398,7 +398,7 @@ static CallContext g_theCallContext;
static void pushScope(const char *s)
{
g_classScopeLengthStack.push(new int(g_classScope.length()));
if (g_classScope.isEmpty())
if (g_classScope.isEmpty() || leftScopeMatch(s,g_classScope))
{
g_classScope = s;
}
......
......@@ -355,6 +355,7 @@ INOUT "inout"|"in"|"out"|("in"{BLANK}*","{BLANK}*"out")|("out"{BLANK}*","{BLAN
PARAMIO {CMD}param{BLANK}*"["{BLANK}*{INOUT}{BLANK}*"]"
TEMPCHAR [a-z_A-Z0-9.,: \t\*\&\(\)\[\]]
FUNCCHAR [a-z_A-Z0-9,:\<\> \t\^\*\&\[\]]
FUNCPART {FUNCCHAR}*("("{FUNCCHAR}*")"{FUNCCHAR}*)?
SCOPESEP "::"|"#"|"."
TEMPLPART "<"{TEMPCHAR}*">"
ANONNS "anonymous_namespace{"[^}]*"}"
......@@ -363,7 +364,7 @@ SCOPEKEYS ":"({ID}":")*
SCOPECPP {SCOPEPRE}*(~)?{ID}{TEMPLPART}?
SCOPEOBJC {SCOPEPRE}?{ID}{SCOPEKEYS}?
SCOPEMASK {SCOPECPP}|{SCOPEOBJC}
FUNCARG "("{FUNCCHAR}*")"({BLANK}*("volatile"|"const"){BLANK})?
FUNCARG "("{FUNCPART}")"({BLANK}*("volatile"|"const"){BLANK})?
OPNEW {BLANK}+"new"({BLANK}*"[]")?
OPDEL {BLANK}+"delete"({BLANK}*"[]")?
OPNORM {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()"
......@@ -386,7 +387,7 @@ HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"
HTMLKEYW {HTMLKEYL}|{HTMLKEYU}
REFWORD2 ("#"|"::")?((({ID}{TEMPLPART}?)|{ANONNS})("."|"#"|"::"|"-"|"/"))*({ID}{TEMPLPART}?(":")?){FUNCARG}?
REFWORD3 ({ID}":")*{ID}":"?
REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
REFWORD {LABELID}|{REFWORD2}|{REFWORD3}|{LNKWORD2}
%option noyywrap
%option yylineno
......
......@@ -1366,7 +1366,7 @@ static const char* prepassFixedForm(const char* contents)
int prevLineLength=0;
int prevLineAmpOrExclIndex=-1;
bool emptyLabel=TRUE;
int newContentsSize = strlen(contents)+2; // \000 and one spare character (to avoid reallocation)
int newContentsSize = strlen(contents)+3; // \000, \n (when necessary) and one spare character (to avoid reallocation)
char* newContents = (char*)malloc(newContentsSize);
for(int i=0, j=0;;i++,j++) {
......@@ -1390,6 +1390,14 @@ static const char* prepassFixedForm(const char* contents)
break;
case '\000':
newContents[j]='\000';
newContentsSize = strlen(newContents);
if (newContents[newContentsSize - 1] != '\n')
{
// to be on the safe side
newContents = (char*)realloc(newContents, newContentsSize+2);
newContents[newContentsSize] = '\n';
newContents[newContentsSize + 1] = '\000';
}
return newContents;
case 'C':
case 'c':
......@@ -1425,6 +1433,15 @@ static const char* prepassFixedForm(const char* contents)
break;
}
}
newContentsSize = strlen(newContents);
if (newContents[newContentsSize - 1] != '\n')
{
// to be on the safe side
newContents = (char*)realloc(newContents, newContentsSize+2);
newContents[newContentsSize] = '\n';
newContents[newContentsSize + 1] = '\000';
}
return newContents;
}
......@@ -2228,6 +2245,7 @@ level--;
static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
{
char *tmpBuf = NULL;
initParser();
defaultProtection = Public;
......@@ -2258,6 +2276,14 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
//clock_t end=clock();
//printf("CPU time used=%f\n", ((double) (end-start))/CLOCKS_PER_SEC);
}
else if (inputString[strlen(fileBuf)-1] != '\n')
{
tmpBuf = (char *)malloc(strlen(fileBuf)+2);
strcpy(tmpBuf,fileBuf);
tmpBuf[strlen(fileBuf)]= '\n';
tmpBuf[strlen(fileBuf)+1]= '\000';
inputString = tmpBuf;
}
yyLineNr= 1 ;
yyFileName = fileName;
......@@ -2291,6 +2317,10 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt)
rt->program.resize(0);
delete current; current=0;
moduleProcedures.clear();
if (tmpBuf) {
free((char*)tmpBuf);
inputString=NULL;
}
if (isFixedForm) {
free((char*)inputString);
inputString=NULL;
......
......@@ -860,8 +860,8 @@ B [ \t]*
NEWLINE \n
DIGIT [0-9]
LETTER [A-Za-z]
NONEMPTY [A-Za-z0-9_]
LETTER [A-Za-z\x80-\xFF]
NONEMPTY [A-Za-z0-9_\x80-\xFF]
EXPCHAR [#(){}\[\],:.%/\\=`*~|&<>!;+-]
NONEMPTYEXP [^ \t\n:]
PARAMNONEMPTY [^ \t\n():]
......
......@@ -461,8 +461,8 @@ OCTNUMBER "0"[0-7]+[lL]?
NUMBER {DIGIT}+[lLjJ]?
INTNUMBER {HEXNUMBER}|{OCTNUMBER}|{NUMBER}
FLOATNUMBER {DIGIT}+"."{DIGIT}+([eE][+\-]?{DIGIT}+)?[jJ]?
LETTER [A-Za-z]
NONEMPTY [A-Za-z0-9_]
LETTER [A-Za-z\x80-\xFF]
NONEMPTY [A-Za-z0-9_\x80-\xFF]
EXPCHAR [#(){}\[\],:.%/\\=`*~|&<>!;+-]
NONEMPTYEXP [^ \t\n:]
PARAMNONEMPTY [^ \t\n():]
......
......@@ -191,6 +191,7 @@ static QCString g_delimiter;
static int g_column;
static int g_fencedSize=0;
static bool g_nestedComment=0;
//-----------------------------------------------------------------------------
......@@ -6155,23 +6156,27 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
docBlockName.at(1)='}';
}
g_fencedSize=0;
g_nestedComment=FALSE;
BEGIN(DocCopyBlock);
}
<DocBlock>"<"{PRE}">" {
docBlock+=yytext;
docBlockName="<pre>";
g_fencedSize=0;
g_nestedComment=FALSE;
BEGIN(DocCopyBlock);
}
<DocBlock>{CMD}("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"dot"|"code")/[^a-z_A-Z0-9] { // verbatim command (which could contain nested comments!)
docBlock+=yytext;
docBlockName=&yytext[1];
g_fencedSize=0;
g_nestedComment=FALSE;
BEGIN(DocCopyBlock);
}
<DocBlock>"~~~"[~]* {
docBlock+=yytext;
g_fencedSize=yyleng;
g_nestedComment=FALSE;
BEGIN(DocCopyBlock);
}
<DocBlock>{B}*"<code>" {
......@@ -6179,6 +6184,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
{
docBlock+=yytext;
docBlockName="<code>";
g_nestedComment=FALSE;
BEGIN(DocCopyBlock);
}
else
......@@ -6240,12 +6246,32 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
docBlock+=indent;
}
}
<DocCopyBlock>^{B}*+"*"/{BN}* { // start of a comment line
<DocCopyBlock>^{B}*"*"+/{BN}+"*"{BN}* { // start of a comment line with two *'s
if (docBlockName=="code")
{
QCString indent;
indent.fill(' ',computeIndent(yytext,0)-1);
docBlock+=indent+"*";
indent.fill(' ',computeIndent(yytext,0));
docBlock+=indent;
}
else
{
REJECT;
}
}
<DocCopyBlock>^{B}*"*"+/{BN}* { // start of a comment line with one *
if (docBlockName=="code")
{
QCString indent;
if (g_nestedComment) // keep * it is part of the code
{
indent.fill(' ',computeIndent(yytext,-1));
docBlock+=indent+"*";
}
else // remove * it is part of the comment block
{
indent.fill(' ',computeIndent(yytext,0));
docBlock+=indent;
}
}
else
{
......@@ -6263,6 +6289,14 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
docBlock+=yytext;
}
<DocCopyBlock>"/*"|"*/"|"//" {
if (yytext[1]=='*')
{
g_nestedComment=TRUE;
}
else if (yytext[0]=='*')
{
g_nestedComment=FALSE;
}
docBlock+=yytext;
}
<DocCopyBlock>\n { // newline
......
This diff is collapsed.
......@@ -1872,7 +1872,8 @@ int findParameterList(const QString &name)
}
else
{
return bracePos;
int bp = bracePos>0 ? name.findRev('(',bracePos-1) : -1;
return bp==-1 ? bracePos : bp;
}
}
} while (pos!=-1);
......
......@@ -7,40 +7,34 @@
<para>
<programlisting>
<codeline lineno="1">
<highlight class="normal">*<sp/></highlight>
<highlight class="comment">#<sp/>comment<sp/>in<sp/>Python</highlight>
<highlight class="normal"/>
</codeline>
<codeline lineno="2">
<highlight class="normal">*<sp/></highlight>
<highlight class="normal"/>
<highlight class="keyword">class<sp/></highlight>
<highlight class="normal">Python:</highlight>
</codeline>
<codeline lineno="3">
<highlight class="normal">*<sp/><sp/><sp/></highlight>
<highlight class="normal">
<sp/>
<sp/>
</highlight>
<highlight class="keywordflow">pass</highlight>
<highlight class="normal"/>
</codeline>
<codeline lineno="4">
<highlight class="normal">*<sp/></highlight>
</codeline>
</programlisting>
</para>
<para>
<programlisting>
<codeline>
<highlight class="normal">*<sp/></highlight>
<highlight class="comment">//<sp/>comment<sp/>in<sp/>a<sp/>code<sp/>block</highlight>
<highlight class="normal"/>
</codeline>
<codeline>
<highlight class="normal">*<sp/></highlight>
<highlight class="normal"/>
<highlight class="keyword">class<sp/></highlight>
<highlight class="normal">Cpp<sp/>{};</highlight>
</codeline>
<codeline>
<highlight class="normal">*<sp/></highlight>
</codeline>
</programlisting>
</para>
</detaileddescription>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment