59 #define DBG(x) do {} while(0) 68 #define INTERNAL_ASSERT(x) do {} while(0) 188 g_parserStack.
push(ctx);
194 g_scope = ctx->
scope;
246 if (c==
'{') c=
'<';
else if (c==
'}') c=
'>';
271 QFile inImage(inputFile);
307 "destination of image %s is a symlink, replacing with image",
310 if (outputFile!=inputFile)
315 char *buffer =
new char[inImage.
size()];
317 outImage.writeBlock(buffer,inImage.
size());
325 "could not write output image %s",
qPrint(outputFile));
330 printf(
"Source & Destination are the same!\n");
336 "could not open image %s",
qPrint(fileName));
346 epstopdfArgs.
sprintf(
"\"%s/%s.eps\" --outfile=\"%s/%s.pdf\"",
352 err(
"Problems running epstopdf. Check your TeX installation!\n");
361 text.
sprintf(
"image file name %s is ambiguous.\n",
qPrint(fileName));
362 text+=
"Possible candidates:\n";
369 if (result.
left(5)!=
"http:" && result.
left(6)!=
"https:")
372 "image file %s is not found in IMAGE_PATH: " 373 "assuming external image.",
qPrint(fileName)
389 if (g_memberDef==0)
return;
397 static QRegExp re(
"$?[a-zA-Z0-9_\\x80-\\xFF]+\\.*");
399 while ((i=re.
match(name,p,&
l))!=-1)
421 if (!found && isParam)
425 if (!scope.
isEmpty()) scope+=
"::";
else scope=
"";
428 int docLine = g_memberDef->
docLine();
432 inheritedFrom.
sprintf(
" inherited from member %s at line " 441 "argument '%s' of command @param " 442 "is not found in the argument list of %s%s%s%s",
488 "The following parameters of "+
491 " are not documented:\n";
501 else if (!argName.isEmpty() &&
g_paramsFound.find(argName)==0)
511 errMsg+=
" parameter '"+argName+
"'";
557 !(isPython && (a->
name==
"self" || a->
name==
"cls"))
565 if (!allDoc && declAl!=0)
573 !(isPython && (a->
name==
"self" || a->
name==
"cls"))
598 returnType.
find(
"void")!=-1 ||
599 returnType.
find(
"subroutine")!=-1 ||
609 returnType.
find(
"void")!=-1 ||
610 returnType.
find(
"subroutine")!=-1 ||
628 if (result.
right(4)==
".tex")
727 if (l==0)
return FALSE;
729 int funcStart=cmdArg.
find(
'(');
738 int secondParen = cmdArg.
find(
'(', funcStart+1);
739 int leftParen = cmdArg.
find(
')', funcStart+1);
740 if (leftParen!=-1 && secondParen!=-1)
742 if (leftParen<secondParen)
744 funcStart=secondParen;
760 g_context.
find(
'.')==-1?g_context.
data():
"",
774 int scopeOffset=g_context.
length();
780 fullName.
prepend(g_context.
left(scopeOffset)+
"::");
788 *pDoc=cd->documentation();
789 *pBrief=cd->briefDescription();
796 *pDoc=nd->documentation();
797 *pBrief=nd->briefDescription();
804 *pDoc=gd->documentation();
805 *pBrief=gd->briefDescription();
821 *pDoc=fd->documentation();
822 *pBrief=fd->briefDescription();
833 scopeOffset = g_context.
findRev(
"::",scopeOffset-1);
834 if (scopeOffset==-1) scopeOffset=0;
836 }
while (scopeOffset>=0);
851 DBG((
"handleStyleArgument(%s)\n",
qPrint(cmdName)));
866 static QRegExp specialChar(
"[.,|()\\[\\]:;\\?]");
900 DBG((
"handleStyleArgument(%s) end tok=%x\n",
qPrint(cmdName),tok));
911 DBG((
"HandleStyleEnter\n"));
914 g_styleStack.
push(sc);
923 DBG((
"HandleStyleLeave\n"));
965 g_initialStyleStack.
push(sc);
967 sc = g_styleStack.
top();
975 while ((sc=g_initialStyleStack.
pop()))
989 if (opt->
name==
"name")
1002 else if (opt->
name==
"href")
1012 retval = href->
parse();
1043 if (!g_initialStyleStack.
isEmpty())
1046 g_initialStyleStack.
pop();
1049 "end of comment block while expecting " 1057 static bool autolinkSupport =
Config_getBool(
"AUTOLINK_SUPPORT");
1058 if (!autolinkSupport && !ignoreAutoLinkFlag)
1106 name=((
GroupDef*)compound)->groupTitle();
1118 ((
FileDef*)compound)->generateSourceFile()
1123 compound->getReference(),
1124 compound->getSourceFileBase(),
1126 compound->briefDescriptionAsTooltip()
1185 while ((i=paramTypes.
find(
'|',p))!=-1)
1257 g_nodeStack.
push(parent);
1707 DBG((
"decodeSymbol(%s)\n",
qPrint(symName)));
1718 if (doc.
isEmpty())
return retval;
1734 retval=par->
parse();
1768 char *
s=examplePathList.
first();
1778 s=examplePathList.
next();
1791 "Possible candidates:\n%s",
qPrint(file),
1798 "Check your EXAMPLE_PATH",
qPrint(file));
1820 m_word(word), m_ref(ref),
1821 m_file(file), m_relPath(g_relPath), m_anchor(anchor),
1869 if (g_sectionDict && g_sectionDict->
find(
id)==0)
1872 g_sectionDict->
append(
id,sec);
1889 : m_context(context), m_text(text), m_type(t),
1890 m_isExample(isExample), m_exampleFile(exampleFile),
1891 m_relPath(g_relPath), m_lang(lang), m_isBlock(isBlock)
1910 g_includeFileText =
m_text;
1928 if (!m_blockId.isEmpty() && (count=
m_text.
contains(m_blockId.data()))!=2)
1931 m_blockId.data(),m_file.data(),
count);
1944 DBG((
"DocIncOperator::parse() text=%s off=%d len=%d\n",
qPrint(p),o,l));
1946 bool nonEmpty =
FALSE;
1955 if (nonEmpty)
break;
1958 else if (!isspace((
uchar)c))
1964 if (g_includeFileText.
mid(so,o-so).
find(m_pattern)!=-1)
1966 m_text = g_includeFileText.
mid(so,o-so);
1980 if (nonEmpty)
break;
1983 else if (!isspace((
uchar)c))
1989 if (g_includeFileText.
mid(so,o-so).
find(m_pattern)!=-1)
1991 m_text = g_includeFileText.
mid(so,o-so);
2008 if (nonEmpty)
break;
2011 else if (!isspace((
uchar)c))
2017 if (g_includeFileText.
mid(so,o-so).
find(m_pattern)!=-1)
2035 if (nonEmpty)
break;
2038 else if (!isspace((
uchar)c))
2044 if (g_includeFileText.
mid(so,o-so).
find(m_pattern)!=-1)
2046 m_text = g_includeFileText.
mid(bo,o-bo);
2065 if (g_copyStack.
findRef(def)==-1)
2084 g_context=def->
name();
2086 g_styleStack.
clear();
2087 g_nodeStack.
clear();
2105 for (;(item=it.current());++it)
2107 paramsFound.insert(it.currentKey(),it.current());
2121 for (;(item=it.current());++it)
2123 paramsFound.insert(it.currentKey(),it.current());
2154 m_id(id), m_key(key),
m_relPath(g_relPath)
2176 if (g_memberDef && g_memberDef->
name().
at(0)==
'@')
2209 formCmd.
sprintf(
"\\form#%d",
id);
2255 DBG((
"DocSecRefItem::parse() start\n"));
2256 g_nodeStack.
push(
this);
2285 if (!m_target.isEmpty())
2291 m_anchor = sec->
label;
2292 if (g_sectionDict && g_sectionDict->
find(m_target)==0)
2294 g_sectionDict->
append(m_target,sec);
2308 DBG((
"DocSecRefItem::parse() end\n"));
2317 DBG((
"DocSecRefList::parse() start\n"));
2318 g_nodeStack.
push(
this);
2347 m_children.append(item);
2373 DBG((
"DocSecRefList::parse() end\n"));
2384 int i=ref.
find(
'#');
2398 g_nodeStack.
push(
this);
2399 DBG((
"DocInternalRef::parse() start\n"));
2425 DBG((
"DocInternalRef::parse() end\n"));
2479 bool isFile = compound ?
2489 ((
GroupDef *)compound)->groupTitle()
2492 m_text=((
GroupDef *)compound)->groupTitle();
2503 m_file = compound->getOutputFileBase();
2504 m_ref = compound->getReference();
2510 ((
FileDef*)compound)->generateSourceFile()
2513 m_file = compound->getSourceFileBase();
2514 m_ref = compound->getReference();
2554 g_nodeStack.
push(
this);
2555 DBG((
"DocRef::parse() start\n"));
2609 if (numBibFiles>0 && cite && !cite->
text.
isEmpty())
2645 if (!m_refText.isEmpty() && m_refText.at(0)==
'#')
2647 m_refText = m_refText.
right(m_refText.length()-1);
2659 ((
FileDef*)compound)->generateSourceFile()
2662 m_file = compound->getSourceFileBase();
2663 m_ref = compound->getReference();
2677 g_nodeStack.
push(
this);
2678 DBG((
"DocLink::parse() start\n"));
2723 else if ((p=w.
find(
'}'))!=-1)
2729 result=w.
right(l-p-1);
2756 DBG((
"DocLink::parse() end\n"));
2766 m_name(name),
m_relPath(g_relPath), m_context(context)
2795 "in any of the paths specified via DOTFILE_DIRS!",
qPrint(
m_name));
2829 "in any of the paths specified via MSCFILE_DIRS!",
qPrint(
m_name));
2865 "in any of the paths specified via DIAFILE_DIRS!",
qPrint(
m_name));
2878 g_nodeStack.
push(
this);
2879 DBG((
"DocVhdlFlow::parse() start\n"));
2909 DBG((
"DocVhdlFlow::parse() end\n"));
2920 m_attribs(attribs),
m_name(name),
2938 g_nodeStack.
push(
this);
2939 DBG((
"DocHtmlHeader::parse() start\n"));
3043 " <h%d> tag\n",m_level);
3047 DBG((
"DocHtmlHeader::parse() end\n"));
3058 g_nodeStack.
push(
this);
3059 DBG((
"DocHRef::parse() start\n"));
3105 DBG((
"DocHRef::parse() end\n"));
3116 g_nodeStack.
push(
this);
3117 DBG((
"DocInternal::parse() start\n"));
3126 retval=par->
parse();
3140 }
while (retval!=0 &&
3159 retval = s->
parse();
3167 DBG((
"DocInternal::parse() end: retval=%x\n",retval));
3178 g_nodeStack.
push(
this);
3179 DBG((
"DocIndexEntry::parse() start\n"));
3230 case CMD_AT: m_entry+=
'@';
break;
3231 case CMD_LESS: m_entry+=
'<';
break;
3233 case CMD_AMP: m_entry+=
'&';
break;
3235 case CMD_HASH: m_entry+=
'#';
break;
3241 case CMD_PUNT: m_entry+=
'.';
break;
3242 case CMD_PLUS: m_entry+=
'+';
break;
3257 m_entry = m_entry.stripWhiteSpace();
3259 DBG((
"DocIndexEntry::parse() end retval=%x\n",retval));
3269 m_hasCaptionId =
FALSE;
3274 if (opt->
name==
"id")
3281 m_anchor = sec->
label;
3282 m_hasCaptionId =
TRUE;
3283 if (g_sectionDict && g_sectionDict->
find(opt->
value)==0)
3305 g_nodeStack.
push(
this);
3306 DBG((
"DocHtmlCaption::parse() start\n"));
3351 DBG((
"DocHtmlCaption::parse() end\n"));
3362 g_nodeStack.
push(
this);
3363 DBG((
"DocHtmlCell::parse() start\n"));
3373 retval=par->
parse();
3390 DBG((
"DocHtmlCell::parse() end\n"));
3399 g_nodeStack.
push(
this);
3400 DBG((
"DocHtmlCell::parseXml() start\n"));
3410 retval=par->
parse();
3427 DBG((
"DocHtmlCell::parseXml() end\n"));
3438 for (i=0; i<attrs.
count(); ++i)
3454 for (i=0; i<attrs.
count(); ++i)
3469 for (i=0; i<attrs.
count(); ++i)
3489 g_nodeStack.
push(
this);
3490 DBG((
"DocHtmlRow::parse() start\n"));
3492 bool isHeading=
FALSE;
3522 " for a html description title");
3539 retval=cell->
parse();
3546 DBG((
"DocHtmlRow::parse() end\n"));
3555 g_nodeStack.
push(
this);
3556 DBG((
"DocHtmlRow::parseXml() start\n"));
3586 " for a html description title");
3608 DBG((
"DocHtmlRow::parseXml() end\n"));
3619 g_nodeStack.
push(
this);
3620 DBG((
"DocHtmlTable::parse() start\n"));
3645 retval=m_caption->parse();
3662 " for a <tr> or <caption> tag");
3680 DBG((
"DocHtmlTable::parse() end\n"));
3689 g_nodeStack.
push(
this);
3690 DBG((
"DocHtmlTable::parseXml() start\n"));
3698 bool isHeader=
FALSE;
3724 DBG((
"DocHtmlTable::parseXml() end\n"));
3765 for (rli.toFirst();(cellNode=rli.
current());++rli)
3773 for (i=0;i<rowSpans.
count();i++)
3790 for (i=0;i<rowSpans.
count();i++)
3798 if (colIdx-1>maxCols) maxCols=colIdx-1;
3800 m_numCols = maxCols;
3809 if (m_caption) m_caption->accept(v);
3823 g_nodeStack.
push(
this);
3824 DBG((
"DocHtmlDescTitle::parse() start\n"));
3836 bool isJavaLink=
FALSE;
3962 DBG((
"DocHtmlDescTitle::parse() end\n"));
3974 g_nodeStack.
push(
this);
3975 DBG((
"DocHtmlDescData::parse() start\n"));
3984 retval=par->
parse();
3989 DBG((
"DocHtmlDescData::parse() end\n"));
4000 g_nodeStack.
push(
this);
4001 DBG((
"DocHtmlDescList::parse() start\n"));
4026 " for a html description title");
4063 DBG((
"DocHtmlDescList::parse() end\n"));
4071 DBG((
"DocHtmlListItem::parse() start\n"));
4073 g_nodeStack.
push(
this);
4083 retval=par->
parse();
4090 DBG((
"DocHtmlListItem::parse() end retval=%x\n",retval));
4096 DBG((
"DocHtmlListItem::parseXml() start\n"));
4098 g_nodeStack.
push(
this);
4108 retval=par->
parse();
4109 if (retval==0)
break;
4124 DBG((
"DocHtmlListItem::parseXml() end retval=%x\n",retval));
4132 DBG((
"DocHtmlList::parse() start\n"));
4135 g_nodeStack.
push(
this);
4175 " for a html list item");
4197 m_type==Unordered ?
'u' :
'o');
4201 DBG((
"DocHtmlList::parse() end retval=%x\n",retval));
4209 DBG((
"DocHtmlList::parseXml() start\n"));
4212 g_nodeStack.
push(
this);
4238 " for a html list item");
4253 if (retval==0)
break;
4260 m_type==Unordered ?
"bullet" :
"number");
4264 DBG((
"DocHtmlList::parseXml() end retval=%x\n",retval));
4276 DBG((
"DocHtmlBlockQuote::parse() start\n"));
4278 g_nodeStack.
push(
this);
4288 retval=par->
parse();
4295 DBG((
"DocHtmlBlockQuote::parse() end retval=%x\n",retval));
4303 DBG((
"DocParBlock::parse() start\n"));
4305 g_nodeStack.
push(
this);
4315 retval=par->
parse();
4322 DBG((
"DocParBlock::parse() end retval=%x\n",retval));
4330 g_nodeStack.
push(
this);
4331 int rv=m_paragraph->parse();
4332 m_paragraph->markFirst();
4333 m_paragraph->markLast();
4343 g_nodeStack.
push(
this);
4359 : m_indent(indent), m_itemNum(num)
4367 g_nodeStack.
push(
this);
4376 retval=par->
parse();
4402 m_indent(indent), m_isEnumList(isEnumList),
4412 g_nodeStack.
push(
this);
4446 DBG((
"DocTitle::parse() start\n"));
4447 g_nodeStack.
push(
this);
4473 DBG((
"DocTitle::parse() end\n"));
4509 DBG((
"DocSimpleSect::parse() start\n"));
4510 g_nodeStack.
push(
this);
4535 int retval = par->
parse();
4537 DBG((
"DocSimpleSect::parse() end retval=%d\n",retval));
4545 DBG((
"DocSimpleSect::parseRcs() start\n"));
4546 g_nodeStack.
push(
this);
4556 DBG((
"DocSimpleSect::parseRcs()\n"));
4564 DBG((
"DocSimpleSect::parse() start\n"));
4565 g_nodeStack.
push(
this);
4585 retval = par->
parse();
4586 if (retval == 0)
break;
4594 DBG((
"DocSimpleSect::parseXml() end retval=%d\n",retval));
4627 case See:
return "see";
4628 case Return:
return "return";
4630 case Authors:
return "author";
4631 case Version:
return "version";
4632 case Since:
return "since";
4633 case Date:
return "date";
4634 case Note:
return "note";
4635 case Warning:
return "warning";
4636 case Pre:
return "pre";
4637 case Post:
return "post";
4639 case Invar:
return "invariant";
4640 case Remark:
return "remark";
4642 case User:
return "user";
4643 case Rcs:
return "rcs";
4653 DBG((
"DocParamList::parse() start\n"));
4654 g_nodeStack.
push(
this);
4673 if (typeSeparator!=-1)
4700 "argument of command %s",
qPrint(cmdName));
4707 "argument of command %s",
qPrint(saveCmdName));
4713 m_paragraphs.append(par);
4714 retval = par->
parse();
4719 DBG((
"DocParamList::parse() end retval=%d\n",retval));
4728 DBG((
"DocParamList::parseXml() start\n"));
4729 g_nodeStack.
push(
this);
4748 retval = par->
parse();
4757 if (m_paragraphs.isEmpty())
4763 m_paragraphs.getLast()->markLast(
FALSE);
4766 m_paragraphs.append(par);
4769 if (retval == 0)
break;
4787 DBG((
"DocParamList::parse() end retval=%d\n",retval));
4798 DBG((
"DocParamSect::parse() start\n"));
4799 g_nodeStack.
push(
this);
4803 m_hasInOutSpecifier=
TRUE;
4825 retval = pl->
parse(cmdName);
4832 DBG((
"DocParamSect::parse() end retval=%d\n",retval));
4843 bool needsSeparator =
FALSE;
4851 needsSeparator =
TRUE;
4872 bool xmlContext=
FALSE,
4907 "argument of command %s\n",
qPrint(
"cite"));
4948 DBG((
"handleIncludeOperator(%s)\n",
qPrint(cmdName)));
4962 "argument of command %s",
qPrint(cmdName));
4976 bool isFirst = n1==0 ||
5070 T *df =
new T(
this,name,g_context);
5111 DBG((
"handleRef(%s)\n",
qPrint(cmdName)));
5138 DBG((
"handleInclude(%s)\n",
qPrint(cmdName)));
5152 "argument of command %s",
qPrint(cmdName));
5196 "argument of command %s\n",
qPrint(cmdName));
5215 int retval = header->
parse();
5266 g_context=g_scope->
name();
5269 g_styleStack.
clear();
5270 g_nodeStack.
clear();
5271 g_copyStack.
append(reMd);
5274 g_copyStack.
remove(reMd);
5276 g_memberDef = thisMd;
5284 DBG((
"handleCommand(%s)\n",
qPrint(cmdName)));
5416 retval = sl->
parse();
5446 retval = handleStartCode();
5625 retval = ie->
parse();
5638 retval = block->
parse();
5681 handleImage(cmdName);
5684 handleFile<DocDotFile>(cmdName);
5690 handleFile<DocMscFile>(cmdName);
5693 handleFile<DocDiaFile>(cmdName);
5696 handleLink(cmdName,
FALSE);
5699 handleLink(cmdName,
TRUE);
5756 DBG((
"handleCommand(%s) end retval=%x\n",
qPrint(cmdName),retval));
5761 const char *attrName,
5769 if (opt->
name==attrName)
5771 *result = opt->
value;
5780 DBG((
"handleHtmlStartTag(%s,%d)\n",
qPrint(tagName),tagHtmlAttribs.
count()));
5794 retval=list->
parse();
5801 retval=list->
parse();
5823 retval = handleStartCode();
5863 retval=list->
parse();
5876 retval=table->
parse();
5907 retval=handleHtmlHeader(tagHtmlAttribs,1);
5910 retval=handleHtmlHeader(tagHtmlAttribs,2);
5913 retval=handleHtmlHeader(tagHtmlAttribs,3);
5916 retval=handleHtmlHeader(tagHtmlAttribs,4);
5919 retval=handleHtmlHeader(tagHtmlAttribs,5);
5922 retval=handleHtmlHeader(tagHtmlAttribs,6);
5933 retval = block->
parse();
5974 retval = handleParamSection(paramName,
6166 DBG((
"handleHtmlEndTag(%s)\n",
qPrint(tagName)));
6350 DBG((
"DocPara::parse() start\n"));
6351 g_nodeStack.
push(
this);
6413 DBG((
"previous list item at %d\n",al->
indent()));
6439 retval = al->
parse();
6495 "has invalid indent level");
6541 DBG((
"handleCommand returns %x\n",retval));
6647 "Found unexpected token (id=%x)\n",tok);
6656 DBG((
"DocPara::parse() end retval=%x\n",retval));
6670 g_nodeStack.
push(
this);
6673 if (!m_id.isEmpty())
6679 m_anchor = sec->
label;
6682 if (g_sectionDict && g_sectionDict->
find(m_id)==0)
6684 g_sectionDict->
append(m_id,sec);
6696 retval=par->
parse();
6714 retval = in->
parse(m_level+1);
6720 }
while (retval!=0 &&
6741 retval = s->
parse();
6753 retval = s->
parse();
6765 retval = s->
parse();
6774 "command found inside %s!",
6791 DBG((
"DocSection::parse() end: retval=%x\n",retval));
6801 DBG((
"DocText::parse() start\n"));
6802 g_nodeStack.
push(
this);
6898 DBG((
"DocText::parse() end\n"));
6906 DBG((
"DocRoot::parse() start\n"));
6907 g_nodeStack.
push(
this);
6918 retval=par->
parse();
6948 retval = in->
parse(1);
6963 retval = s->
parse();
6976 DBG((
"DocRoot::parse() end\n"));
6984 bool insideDQuote=
FALSE;
6985 bool insideSQuote=
FALSE;
6987 while (j<len && !found)
6989 if (!insideSQuote && !insideDQuote)
6993 case '(': round++;
break;
6994 case ')': round--;
break;
6995 case '"': insideDQuote=
TRUE;
break;
6996 case '\'': insideSQuote=
TRUE;
break;
7004 else if (insideSQuote)
7006 if (data[j]==
'\'' && (j==0 || data[j]!=
'\\'))
7011 else if (insideDQuote)
7013 if (data[j]==
'"' && (j==0 || data[j]!=
'\\'))
7020 if (
qstrncmp(data+j,
" const",6)==0)
7024 else if (
qstrncmp(data+j,
" volatile",9)==0)
7030 if (e>s) memcpy(
id.rawData(),data+s,e-s);
7040 #define CHECK_FOR_COMMAND(str,action) \ 7041 do if ((i+sizeof(str)<len) && qstrncmp(data+i+1,str,sizeof(str)-1)==0) \ 7042 { j=i+sizeof(str); action; } while(0) 7047 if (i==0 || (data[i-1]!=
'@' && data[i-1]!=
'\\'))
7058 if (i==0 || (data[i-1]!=
'@' && data[i-1]!=
'\\'))
7080 if ((data[i]==
'@' || data[i]==
'\\') &&
7081 (i==0 || (data[i-1]!=
'@' && data[i-1]!=
'\\')))
7085 return i+endMarker.
length()+1;
7091 return i<len ? i+1 : len;
7102 if (c==
'@' || c==
'\\')
7109 while (j<len && (data[j]==
' ' || data[j]==
'\t')) j++;
7118 if (g_copyStack.
findRef(def)==-1)
7136 "Found recursive @copy%s or @copydoc relation for argument '%s'.\n",
7137 isBrief?
"brief":
"details",
id.
data());
7143 "@copy%s or @copydoc target '%s' not found", isBrief?
"brief":
"details",
7157 buf.
addStr(data+orgPos,i-orgPos);
7181 const char *
input,
bool indexWords,
7182 bool isExample,
const char *exampleName,
7183 bool singleLine,
bool linkFromIndex)
7202 g_context = ctx->
name();
7318 g_relPath = (!linkFromIndex && ctx) ?
7323 g_nodeStack.
clear();
7324 g_styleStack.
clear();
7325 g_initialStyleStack.
clear();
7329 g_includeFileText =
"";
7333 g_exampleName = exampleName;
7390 g_fileName =
"<parseText>";
7393 g_nodeStack.
clear();
7394 g_styleStack.
clear();
7395 g_initialStyleStack.
clear();
7399 g_includeFileText =
"";
static QDict< RefList > * xrefLists
void markLast(bool b=TRUE)
void doctokenizerYYsetStateMsc()
QCString listAnchor
anchor in the list
void doctokenizerYYendAutoList()
static QCString g_fileName
void doctokenizerYYsetStatePattern()
static CiteDict * citeDict
static GroupSDict * groupSDict
Q_EXPORT int qstrncmp(const char *str1, const char *str2, uint len)
DocXRefItem(DocNode *parent, int id, const char *key)
void doctokenizerYYsetStatePlantUML()
bool portable_isAbsolutePath(const char *fileName)
DocInternalRef(DocNode *parent, const QCString &target)
void portable_sysTimerStop()
bool isDocsForDefinition() const
QList< DocNode > m_children
static SectionDict * g_sectionDict
void handleIncludeOperator(const QCString &cmdName, DocIncOperator::Type t)
QCString fileToString(const char *name, bool filter, bool isSourceCode)
void markLast(bool v=TRUE)
virtual bool isLinkable() const =0
This class represents an function or template argument list.
int parse(const QCString &cmdName)
void markLast(bool v=TRUE)
QCString stripWhiteSpace() const
void doctokenizerYYsetStatePara()
void doctokenizerYYinit(const char *input, const char *fileName)
void doctokenizerYYsetStateRef()
MemberDef * reimplements() const
int handleParamSection(const QCString &cmdName, DocParamSect::Type t, bool xmlContext, int direction)
void handleInclude(const QCString &cmdName, DocInclude::Type t)
static QCString g_includeFileText
static void handleParameterType(DocNode *parent, QList< DocNode > &children, const QCString ¶mTypes)
virtual QCString getReference() const
void setHasDocumentedReturnType(bool b)
void doctokenizerYYsetStatePlantUMLOpt()
void addStr(const char *s)
bool resolveLink(const char *scName, const char *lr, bool, Definition **resContext, QCString &resAnchor)
QCString getReference() const
void doctokenizerYYsetStateXmlOnly()
static bool insideTable(DocNode *n)
int handleHtmlEndTag(const QCString &tagName)
DocLinkedWord(DocNode *parent, const QCString &word, const QCString &ref, const QCString &file, const QCString &anchor, const QCString &tooltip)
DocVerbatim(DocNode *parent, const QCString &context, const QCString &text, Type t, bool isExample, const QCString &exampleFile, bool isBlock=FALSE, const QCString &lang=QCString())
void doctokenizerYYsetStateLink()
The QRegExp class provides pattern matching using regular expressions or wildcards.
static Definition * g_scope
static void handleImg(DocNode *parent, QList< DocNode > &children, const HtmlAttribList &tagHtmlAttribs)
QCString text
text of the item.
void handleFile(const QCString &cmdName)
void setColumnIndex(int idx)
void setRowIndex(int idx)
int contains(char c, bool cs=TRUE) const
void append(const type *d)
void doctokenizerYYsetStateXRefItem()
QCString typeString() const
static void flattenParagraphs(DocNode *root, QList< DocNode > &children)
static QStack< DocStyleChange > g_styleStack
void accept(DocVisitor *v)
static QCString htmlFileExtension
QDict< void > paramsFound
int findRef(const type *d) const
SectionDict * sectionDict
QCString parse(bool, bool isXmlLink=FALSE)
QCString sectionTitle() const
QCString compoundTypeString() const
QCString argListToString(ArgumentList *al, bool useCanonicalType, bool showDefVals)
DocSymbol::SymType name2sym(const QCString &symName) const
Give code of the requested HTML entity name.
static const char * sectionLevelToName[]
DocWord(DocNode *parent, const QCString &word)
DocText * validatingParseText(const char *input)
int parse(bool userTitle, bool needsSeparator)
void handleLink(const QCString &cmdName, bool isJavaLink)
static FormulaDict * formulaNameDict
static QCString g_relPath
void warn_doc_error(const char *file, int line, const char *fmt,...)
QCString toString() const
void markFirst(bool v=TRUE)
QList< Definition > copyStack
RefItem * getRefItem(int todoItemId)
static Mapper * htmlTagMapper
void doctokenizerYYsetStateCode()
static bool g_hasReturnCommand
int readBlock(char *data, uint len)
#define Config_getList(val)
static FileNameDict * inputNameDict
static int subpageNestingLevel
QCString left(uint len) const
DocRoot * validatingParseDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const char *input, bool indexWords, bool isExample, const char *exampleName, bool singleLine, bool linkFromIndex)
int handleCommand(const QCString &cmdName)
static HtmlEntityMapper * instance()
QStack< DocNode > nodeStack
QCString relativePathToRoot(const char *name)
static void detectNoDocumentedParams()
int find(char c, int index=0, bool cs=TRUE) const
static void handleLinkedWord(DocNode *parent, QList< DocNode > &children, bool ignoreAutoLinkFlag=FALSE)
void doctokenizerYYsetStateText()
static QStack< DocNode > g_nodeStack
virtual Kind kind() const =0
virtual QCString getOutputFileBase() const =0
static void handleInitialStyleCommands(DocPara *parent, QList< DocNode > &children)
const char * groupTitle() const
void append(const char *key, const T *d)
static constexpr double mg
static FileNameDict * exampleNameDict
QCString getReference() const
int findRev(char c, int index=-1, bool cs=TRUE) const
#define CHECK_FOR_COMMAND(str, action)
ArgumentList * declArgumentList() const
static uint isVerbatimSection(const char *data, uint i, uint len, QCString &endMarker)
void doctokenizerYYsetStateRtfOnly()
void doctokenizerYYsetStateCite()
void handleSection(const QCString &cmdName)
virtual QCString trModule(bool first_capital, bool singular)=0
bool injectToken(int tok, const QCString &tokText)
void markFirst(bool b=TRUE)
virtual QCString trSubprogram(bool first_capital, bool singular)=0
QCString getDefFileName() const
static bool insidePRE(DocNode *n)
int handleHtmlStartTag(const QCString &tagName, const HtmlAttribList &tagHtmlAttribs)
int parse(const QCString &cmdName, bool xmlContext, Direction d)
int doctokenizerYYlex(void)
void portable_sysTimerStart()
ClassDef * getClass(const char *n)
void doctokenizerYYsetStateInternalRef()
void setInsidePreformatted(bool p)
static QStack< DocParserContext > g_parserStack
DocDiaFile(DocNode *parent, const QCString &name, const QCString &context)
Abstract visitor that participates in the visitor pattern.
void doctokenizerYYsetStateTitle()
void setHasDocumentedParams(bool b)
void setText(const QCString &t)
void doctokenizerYYsetStateSetScope()
static NamespaceSDict * namespaceSDict
static NamespaceDef * globalScope
void doctokenizerYYsetStateVerbatim()
static void checkUndocumentedParams()
virtual DefType definitionType() const =0
void setWidth(const QCString &w)
QCString showFileDefMatches(const FileNameDict *fnDict, const char *n)
QStack< DocStyleChange > styleStack
This class contains the information about the argument of a function or template. ...
const char * typeString() const
void doctokenizerYYsetStateManOnly()
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
void setHeight(const QCString &h)
void doctokenizerYYsetStateFile()
bool hasParentPage() const
const char * data() const
QStack< DocStyleChange > initialStyleStack
static SearchIndexIntf * searchIndex
Q_EXPORT uint qstrlen(const char *str)
void doctokenizerYYstartAutoList()
DocAutoList(DocNode *parent, int indent, bool isEnumList, int depth)
const QCString & name() const
void markFirst(bool v=TRUE)
static QCString findAndCopyImage(const char *fileName, DocImage::Type type)
static bool g_hasParamCommand
void doctokenizerYYFindSections(const char *input, Definition *d, MemberGroup *mg, const char *fileName)
void doctokenizerYYpushBackHtmlTag(const char *tag)
DocCite(DocNode *parent, const QCString &target, const QCString &context)
static int handleStyleArgument(DocNode *parent, QList< DocNode > &children, const QCString &cmdName)
QCString getScopeString() const
static uint g_includeFileLength
DocRef(DocNode *parent, const QCString &target, const QCString &context)
bool getDefs(const QCString &scName, const QCString &mbName, const char *args, MemberDef *&md, ClassDef *&cd, FileDef *&fd, NamespaceDef *&nd, GroupDef *&gd, bool forceEmptyScope, FileDef *currentFile, bool checkCV, const char *forceTagFile)
QCString linkToText(SrcLangExt lang, const char *link, bool isFileName)
QString find(const int n)
QCString briefDescription(bool abbr=FALSE) const
QCString fileName() const
static DocAnchor * handleAnchor(DocNode *parent)
static MemberDef * g_memberDef
static bool g_insideHtmlLink
static void handlePendingStyleCommands(DocNode *parent, QList< DocNode > &children)
QCString right(uint len) const
void doctokenizerYYsetStateAnchor()
SrcLangExt getLanguage() const
void setVisibleCells(int n)
int toInt(bool *ok=0) const
void markFirst(bool v=TRUE)
void markLast(bool v=TRUE)
ActiveRowSpan(int rows, int col)
virtual void addWord(const char *word, bool hiPriority)=0
static void handleUnclosedStyleCommands()
MemberDef * inheritsDocsFrom() const
static QList< Definition > g_copyStack
#define INTERNAL_ASSERT(x)
FileDef * findFileDef(const FileNameDict *fnDict, const char *n, bool &ambig)
static QDict< void > g_paramsFound
int handleHtmlHeader(const HtmlAttribList &tagHtmlAttribs, int level)
QList< ActiveRowSpan > RowSpanList
QCString stripIndentation(const QCString &s)
virtual void visitPre(DocAutoList *)=0
void doctokenizerYYsetStateSkipTitle()
QCString & prepend(const char *s)
const QList< DocNode > & children() const
void setParent(DocNode *parent)
int parseXml(const QCString ¶mName)
void accept(DocVisitor *v)
bool isConstructor() const
void doctokenizerYYsetStateHtmlOnly()
static SectionDict * sectionDict
A bunch of utility functions.
static PageSDict * pageSDict
static QCString g_searchUrl
const char * data() const
void addImageFile(const char *name)
Html attribute list iterator.
#define Config_getString(val)
static void checkArgumentName(const QCString &name, bool isParam)
#define Config_getBool(val)
static void readTextFileByName(const QCString &file, QCString &text)
ClassDef * getClassDef() const
static constexpr double ps
static FileNameDict * diaFileNameDict
static DocInternalRef * handleInternalRef(DocNode *parent)
virtual QCString trGroup(bool first_capital, bool singular)=0
bool isObjCMethod() const
static void handleStyleEnter(DocNode *parent, QList< DocNode > &children, DocStyleChange::Style s, const HtmlAttribList *attribs)
virtual QCString qualifiedName() const
static SymType decodeSymbol(const QCString &symName)
void err(const char *fmt,...)
bool hasDocumentedReturnType() const
void accept(DocVisitor *v)
static FileNameDict * imageNameDict
void accept(DocVisitor *v)
QCString absFilePath() const
virtual QCString briefDescription(bool abbreviate=FALSE) const
void doctokenizerYYpushContext()
static QCString extractCopyDocId(const char *data, uint &j, uint len)
QCString removeRedundantWhiteSpace(const QCString &s)
static int handleAHref(DocNode *parent, QList< DocNode > &children, const HtmlAttribList &tagHtmlAttribs)
QCString mid(uint index, uint len=0xffffffff) const
static void docParserPopContext(bool keepParamInfo=FALSE)
void accept(DocVisitor *v)
int match(const QCString &str, int index=0, int *len=0, bool indexIsStart=TRUE) const
The QFile class is an I/O device that operates on files.
static const QCString anchorPrefix
void doctokenizerYYsetInsidePre(bool b)
virtual QCString trPage(bool first_capital, bool singular)=0
QCString & sprintf(const char *format,...)
static QStack< DocStyleChange > g_initialStyleStack
bool hasDocumentedParams() const
QCString getOutputFileBase() const
Data associated with a token used by the comment block parser.
static void docParserPushContext(bool saveParamInfo=TRUE)
Alignment alignment() const
static bool defaultHandleToken(DocNode *parent, int tok, QList< DocNode > &children, bool handleWord=TRUE)
virtual Definition * getOuterScope() const
QCString documentation() const
DocAutoListItem(DocNode *parent, int indent, int num)
virtual QCString trPackage(const char *name)=0
CiteInfo * find(const char *label) const
ArgumentList * argumentList() const
static FileNameDict * dotFileNameDict
void doctokenizerYYsetStateParam()
static bool insideOL(DocNode *n)
static Mapper * cmdMapper
int parseXml(bool header)
const HtmlAttribList & attribs() const
DocVhdlFlow(DocNode *parent)
SrcLangExt getLanguageFromFileName(const QCString fileName)
QCString qualifiedName() const
int handleSimpleSection(DocSimpleSect::Type t, bool xmlContext=FALSE)
void doctokenizerYYsetStateSnippet()
static QCString g_context
static void unescapeCRef(QCString &s)
void handleImage(const QCString &cmdName)
QCString objCMethodName(bool localLink, bool showStatic) const
A model of a page symbol.
const char * tokToString(int token)
virtual QCString trNamespace(bool first_capital, bool singular)=0
static void defaultHandleTitleAndSize(const int cmd, DocNode *parent, QList< DocNode > &children, QCString &width, QCString &height)
virtual void visitPost(DocAutoList *)=0
static int internalValidatingParseDoc(DocNode *parent, QList< DocNode > &children, const QCString &doc)
QCString convertNameToFile(const char *name, bool allowDots, bool allowUnderscore)
std::vector< std::string > column
static QCString g_exampleName
virtual void setCurrentDoc(Definition *ctx, const char *anchor, bool isSourceFile)=0
QCString getOutputFileBase() const
DocImage(DocNode *parent, const HtmlAttribList &attribs, const QCString &name, Type t, const QCString &url=QCString())
static bool findDocsForMemberOrCompound(const char *commandName, QCString *pDoc, QCString *pBrief, Definition **pDef)
const HtmlAttribList & attribs() const
void doctokenizerYYsetStateDbOnly()
DocHtmlCaption(DocNode *parent, const HtmlAttribList &attribs)
static uint skipToEndMarker(const char *data, uint i, uint len, const QCString &endMarker)
static const QCString fileName
Translator * theTranslator
static QCString stripKnownExtensions(const char *text)
void handleRef(const QCString &cmdName)
void doctokenizerYYsetStateTitleAttrValue()
QCString briefDescriptionAsTooltip() const
void appendLinkWord(const QCString &word)
static uint isCopyBriefOrDetailsCmd(const char *data, uint i, uint len, bool &brief)
char portable_pathSeparator()
void doctokenizerYYsetStateLatexOnly()
void docFindSections(const char *input, Definition *d, MemberGroup *mg, const char *fileName)
static bool isFlagSet(DebugMask mask)
The QFileInfo class provides system-independent file information.
static void createFlowChart(const MemberDef *)
A list of Html attributes.
DocAnchor(DocNode *parent, const QCString &id, bool newAnchor)
QCString markdownFileNameToId(const QCString &fileName)
bool doctokenizerYYpopContext()
T * find(const char *key)
void parse(QList< DocNode > &children)
virtual QCString documentation() const
static void handleStyleLeave(DocNode *parent, QList< DocNode > &children, DocStyleChange::Style s, const char *tagName)
DocDotFile(DocNode *parent, const QCString &name, const QCString &context)
void setAutoDelete(bool enable)
static uint g_includeFileOffset
static ClassSDict * classSDict
bool isPreformatted() const
virtual void accept(DocVisitor *v)=0
DocMscFile(DocNode *parent, const QCString &name, const QCString &context)
virtual QCString trMember(bool first_capital, bool singular)=0
static QCString processCopyDoc(const char *data, uint &len)
void parseFromString(const QCString &title)
const char * qPrint(const char *s)
def parent(G, child, parent_type)
union ptb::content::word::word word
static IndexList * indexList
Portable versions of functions that are platform dependent.
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
bool resolveRef(const char *scName, const char *name, bool inSeeBlock, Definition **resContext, MemberDef **resMember, bool lookForSpecialization, FileDef *currentFile, bool checkScope)
virtual QCString anchor() const =0
DocSimpleSect(DocNode *parent, Type t)
static FileNameDict * mscFileNameDict
static bool insideLI(DocNode *n)
DocLink(DocNode *parent, const QCString &target)
void doctokenizerYYsetStateDot()
void setRowIndex(int idx)
bool isDestructor() const
static bool findAttribute(const HtmlAttribList &tagHtmlAttribs, const char *attrName, QCString *result)
static bool insideUL(DocNode *n)
int portable_system(const char *command, const char *args, bool commandHasConsole)
const QList< DocNode > & children() const
void doctokenizerYYsetStateXmlCode()
const char * styleString() const