68 std::unique_ptr<MemberDef>
deepCopy()
const override;
108 bool isSlot()
const override;
119 bool isDCOP()
const override;
147 bool isCopy()
const override;
150 bool isWeak()
const override;
154 bool isNew()
const override;
273 const DString &fileName,
int startLine,
bool hasDocs,
336 bool inGroup,
int indentLevel,
const ClassDef *inheritFrom=
nullptr,
const DString &inheritId=
DString())
const override;
339 bool inGroup,
bool showEnumValues=
false,
bool
340 showInline=
false)
const override;
350 const std::unique_ptr<ArgumentList> &actualArgs)
const override;
354 bool onlyText=
false)
const override;
385 const ArgumentList &al,
bool writeReqClause=
true)
const;
532 return std::make_unique<MemberDefImpl>(defFileName,defLine,defColumn,type,name,args,excp,prot,virt,
533 stat,related,t,tal,al,metaData);
553 std::unique_ptr<MemberDef>
deepCopy()
const override {
955 const std::unique_ptr<ArgumentList> &actualArgs)
const override
960 bool inGroup,
int indentLevel,
const ClassDef *inheritFrom=
nullptr,
const DString &inheritId=
DString())
const override
971 bool onlyText=
false)
const override
982 auto amd = std::make_unique<MemberDefAliasImpl>(newScope,aliasMd);
1015 clRealName=clRealName.
left(i);
1019 clRealName=clRealName.
mid(i+2);
1023 result+=s.
mid(p,i-p);
1024 size_t j=clRealName.
length()+i;
1028 result+=clRealName+t;
1093 if (!isDefine) ol.
docify(
" ");
1103 cName=scope->
name();
1104 size_t il=cName.
find(
'<');
1105 size_t ir=cName.
rfind(
'>');
1108 cName=cName.
mid(il,ir-il+1);
1130 bool paramTypeStarted=
false;
1131 auto alIt = defArgList.
begin();
1132 while (alIt!=defArgList.
end())
1135 if (isDefine || first)
1138 paramTypeStarted=
true;
1152 if (sep!=
"::") { atype=
substitute(atype,
"::",sep); }
1165 size_t starPos = atype.
find(
'*');
1167 funcPtrPos = atype.
find(
")(");
1170 funcPtrPos=starPos+1;
1184 if (paramTypeStarted)
1187 paramTypeStarted=
false;
1233 if (alIt!=defArgList.
end())
1245 if (key!=
",") key+=
":";
1249 paramTypeStarted=
true;
1297 size_t index = exception.
find(
'(');
1310 comma = exception.
find(
',', index);
1321 "missing ) in exception list on member {}",md->
name());
1334 if (exception.
at(0)==
'{')
1337 size_t index = exception.
find(
';');
1338 size_t oldIndex = 1;
1344 index = exception.
find(
';',oldIndex);
1474 init(
this,t,a,e,p,v,s,r,mt,tal,al,meta);
1506 result->m_def =
m_def ;
1507 result->m_anc =
m_anc ;
1508 result->m_decl =
m_decl ;
1510 result->m_read =
m_read ;
1573 result->m_incInfo = std::make_unique<IncludeInfo>();
1577 result->m_isLinkableCached = 0;
1578 result->m_isConstructorCached = 0;
1579 result->m_isDestructorCached = 0;
1644 const ClassDef *mcd = md->getClassDef();
1695 bool separateMemberPages =
Config_getBool(SEPARATE_MEMBER_PAGES);
1696 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
1726 if (inlineSimpleClasses && classDef->
isSimple())
1744 if (baseName.
empty())
1747 "Internal inconsistency: member {} does not belong to any container!",
name()
1832 bool extractPrivateVirtual =
Config_getBool(EXTRACT_PRIV_VIRTUAL);
1882 if (!groupDef && !nspace &&
1897 if (
m_stat && classDef==
nullptr && !extractStatic)
1972 bool onlyText)
const
1980 if (!hideScopeNames)
1986 if (classDef && (gd || mod) && !
isRelated())
1990 else if (nspace && (gd || fd || mod))
2042 bool extractPrivateVirtual =
Config_getBool(EXTRACT_PRIV_VIRTUAL);
2046 bool hideFriendCompounds =
Config_getBool(HIDE_FRIEND_COMPOUNDS);
2058 bool visibleIfStatic = !(
getClassDef()==
nullptr &&
2065 bool visibleIfDocumented = (!hideUndocMembers ||
2072 bool visibleIfEnabled = !(hideUndocMembers &&
2079 bool visibleIfFriendCompound = !(hideFriendCompounds &&
2088 m_mtype==MemberType::Friend ||
2089 (
m_prot==Protection::Private &&
2104 bool visibleIfNotDefaultCDTor = !(cOrDTor &&
2119 bool visible = visibleIfStatic && visibleIfDocumented &&
2120 visibleIfEnabled && visibleIfPrivate &&
2121 visibleIfNotDefaultCDTor &&
2122 visibleIfFriendCompound &&
2149 if (lang==SrcLangExt::Python)
2181 for (
auto it = al.
begin(); it!=al.
end();)
2211 if (exception.
empty())
return args;
2212 size_t pos = args.
rfind(
')');
2215 return args.
left(eqPos)+
" "+exception+
" "+args.
mid(eqPos);
2225 bool inGroup,
int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const
2231 if (!inGroup &&
m_mtype==MemberType::EnumValue)
return;
2234 ASSERT (cd!=
nullptr || nd!=
nullptr || fd!=
nullptr || gd!=
nullptr || mod!=
nullptr);
2239 if (d==gd || d==mod)
2251 err(
"No context could be derived for member '{}'\n",
name());
2272 bool writeAnchor = (inGroup ||
getGroupDef()==
nullptr) &&
2288 if (!detailsVisible)
2300 for (
int j=0;j<indentLevel;j++)
2318 if (
isTypedef() && lang != SrcLangExt::Slice)
2324 if (lang==SrcLangExt::Python)
2335 static const reg::Ex r(R
"(@\d+)");
2337 std::string stype = ltype.
str();
2338 bool endAnonScopeNeeded=
false;
2346 static const reg::Ex ar(R
"([\w@:]*@\d+[\w@:]*)");
2350 size_t al = amatch.
length();
2352 if (annoClassDef && amd==
nullptr)
2357 annoClassDef->
writeDeclaration(ol,inGroup,indentLevel+1,inheritedFrom,inheritId);
2361 for (
int j=0;j< indentLevel;j++)
2366 endAnonScopeNeeded=
true;
2376 DString typePlaceholder =
" { ... } ";
2377 if (lang==SrcLangExt::Cpp)
2383 amd->
anchor(),ltype.
left(ai)+typePlaceholder+ltype.
mid(ai+al));
2387 size_t i = match.position();
2388 size_t l = match.length();
2393 else if (ltype==
"@")
2423 bool extractPrivateVirtual =
Config_getBool(EXTRACT_PRIV_VIRTUAL);
2426 m_mtype==MemberType::Friend ||
2427 (
m_prot==Protection::Private &&
2432 if (!
name().empty() &&
2471 .setAutoBreak(
false)
2472 .setIndentLevel(indentLevel)
2508 ol.
docify(
" [implementation]");
2534 for (
const auto &s : sl)
2553 if (
isAddable()) sl.emplace_back(
"add");
2557 for (
const auto &s : sl)
2578 if (endAnonScopeNeeded)
2596 .setIndexWords(inheritedFrom==
nullptr)
2597 .setSingleLine(
true))
2643 bool extractPrivateVirtual =
Config_getBool(EXTRACT_PRIV_VIRTUAL);
2661 (alwaysDetailedSec &&
2718 if (!hideUndocMembers)
2721 docFilter = docFilter || docInfo;
2742 (docFilter && staticFilter && moduleFilter && privateFilter && friendCompoundFilter && !
isHidden());
2754 bool inlineSimpleStructs =
Config_getBool(INLINE_SIMPLE_STRUCTS);
2758 bool simpleFilter = (
hasBriefDescription() || !hideUndocMembers) && inlineSimpleStructs &&
2763 bool result = visible || simpleFilter;
2779 (
protection()!=Protection::Public || lvirt!=Specifier::Normal ||
2795 bool optVhdl = lang==SrcLangExt::VHDL;
2803 if (
isFriend()) sl.emplace_back(
"friend");
2804 else if (
isRelated()) sl.emplace_back(
"related");
2808 if (inlineInfo &&
isInline()) sl.emplace_back(
"inline");
2809 if (
isExplicit()) sl.emplace_back(
"explicit");
2810 if (
isMutable()) sl.emplace_back(
"mutable");
2812 if (
isStatic()) sl.emplace_back(
"static");
2827 if (
isAddable()) sl.emplace_back(
"add");
2832 if (
isFinal()) sl.emplace_back(
"final");
2833 if (
isAbstract()) sl.emplace_back(
"abstract");
2834 if (
isOverride()) sl.emplace_back(
"override");
2836 if (
isSealed()) sl.emplace_back(
"sealed");
2837 if (
isNew()) sl.emplace_back(
"new");
2838 if (
isOptional()) sl.emplace_back(
"optional");
2839 if (
isRequired()) sl.emplace_back(
"required");
2846 if (
isAssign()) sl.emplace_back(
"assign");
2847 else if (
isCopy()) sl.emplace_back(
"copy");
2848 else if (
isRetain()) sl.emplace_back(
"retain");
2849 else if (
isWeak()) sl.emplace_back(
"weak");
2850 else if (lang!=SrcLangExt::CSharp &&
isStrong()) sl.emplace_back(
"strong");
2851 else if (
isUnretained()) sl.emplace_back(
"unsafe_unretained");
2855 if (
protection()==Protection::Protected) sl.emplace_back(
"protected");
2856 else if (
protection()==Protection::Private) sl.emplace_back(
"private");
2857 else if (
protection()==Protection::Package) sl.emplace_back(
"package");
2859 if (lvirt==Specifier::Virtual) sl.emplace_back(
"virtual");
2860 else if (lvirt==Specifier::Pure) sl.emplace_back(
"pure virtual");
2861 if (
isSignal()) sl.emplace_back(
"signal");
2862 if (
isSlot()) sl.emplace_back(
"slot");
2863 if (
isDefault()) sl.emplace_back(
"default");
2864 if (
isDelete()) sl.emplace_back(
"delete");
2865 if (
isNoExcept()) sl.emplace_back(
"noexcept");
2868 if (
isReadonly()) sl.emplace_back(
"readonly");
2869 if (
isBound()) sl.emplace_back(
"bound");
2880 sl.emplace_back(
"implementation");
2885 sl.emplace_back(
"inherited");
2891 sl.emplace_back(
"implementation");
2896 bool alreadyAdded = std::find(sl.begin(), sl.end(), sx) != sl.end();
2914 warn_uncond(
"Call graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2936 warn_uncond(
"Caller graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
3011 reimplFromLine.
length()-markerPos-2));
3016 err(
"translation error: no marker in trReimplementsFromList()\n");
3027 for (
const auto &bmd : bml)
3029 const ClassDef *bcd=bmd->getClassDef();
3046 auto replaceFunc = [&bml,&ol](
size_t entryIndex)
3049 auto it = bml.
begin();
3053 while (it!=bml.
end())
3059 if (cnt==entryIndex)
break;
3182 bool hasInits =
false;
3187 if (fmd->isLinkable())
3189 if (!fmd->initializer().empty())
3200 if (fmd->isLinkable())
3213 ol.
startDoxyAnchor(cfname,cname,fmd->anchor(),fmd->name(),fmd->argsString());
3224 if (!fmd->initializer().empty())
3240 bool hasBrief = !fmd->briefDescription().empty();
3241 bool hasDetails = !fmd->documentation().empty();
3251 .setIndexWords(
true));
3261 .setIndexWords(
true));
3285 ldef = title =
"anonymous enum";
3308 std::string sdef = ldef.
str();
3315 static const reg::Ex ar(R
"([\w@:]*@\d+[\w@:]*)");
3334 ldef=ldef.
left(sp+1)+ldef.
mid(ep+2);
3340 ldef=ldef.
left(dp+1);
3342 int l=
static_cast<int>(ldef.
length());
3345 while (i>=0 && (
isId(ldef.
at(i)) || ldef.
at(i)==
':')) i--;
3346 while (i>=0 && isspace(
static_cast<uint8_t
>(ldef.
at(i)))) i--;
3350 ldef =
"("+ldef.
left(i+1)+
")"+ldef.
mid(i+1);
3363 bool written =
false;
3402 if (inGroup && fd && showGroupedMembInc)
3417 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
3427 if (isIDLorJava || forceLocalIncludes) ol.
docify(
"\"");
else ol.
docify(
"<");
3438 if (isIDLorJava || forceLocalIncludes) ol.
docify(
"\"");
else ol.
docify(
">");
3450 if (
m_mtype==MemberType::Define)
3457 if (srcLangExt == SrcLangExt::Lex)
3459 langCorrected =
".doxygen_lex_c";
3460 srcLangExt = SrcLangExt::Cpp;
3463 intf->resetCodeParserState();
3469 .setInlineFragment(
true)
3471 .setShowLineNumbers(
false)
3474 codeOL.endCodeFragment(
"DoxyCode");
3481 int memCount,
int memTotal,
3491 bool hasParameterList =
false;
3501 bool optVhdl = lang==SrcLangExt::VHDL;
3507 const Definition *scopedContainer = container;
3513 ciname = (
toGroupDef(container))->groupTitle();
3527 if (!scopeName.
empty())
3529 doxyName.
prepend(scopeName+sep);
3539 if (title.
at(0)==
'@')
3541 ldef = title =
"anonymous enum";
3546 if (lang==SrcLangExt::Cpp)
3558 if (lang==SrcLangExt::Cpp)
3572 if (ldef.
at(0)==
'@')
3581 if (lang == SrcLangExt::Slice)
3599 bool htmlEndLabelTable=
false;
3601 auto startHtmlLabelTable = [&]()
3612 htmlEndLabelTable=
true;
3616 static const reg::Ex r(R
"(@\d+)");
3618 std::string sdef = ldef.str();
3625 for (
const auto &vmd : *ml)
3627 if (vmd->isEnumerate() && match.str()==vmd->name())
3633 DString suffix = match.suffix().str();
3652 startHtmlLabelTable();
3656 static const reg::Ex ar(R
"([\w@:]*@\d+[\w@:]*)");
3664 if (annoClassDef && amd==
nullptr)
3673 annoClassDef->
anchor(),annTypeName);
3678 DString typePlaceholder =
" { ... } ";
3679 if (lang==SrcLangExt::Cpp)
3688 prefix = match.prefix().str();
3754 startHtmlLabelTable();
3764 ldef=ldef.
left(sp+1)+ldef.
mid(ep+2);
3766 ldef=ldef.
mid(ep+2);
3772 ldef=ldef.
left(dp+1);
3774 int dl=
static_cast<int>(ldef.
length());
3777 while (i>=0 && (
isId(ldef.
at(i)) || ldef.
at(i)==
':')) i--;
3778 while (i>=0 && isspace(
static_cast<uint8_t
>(ldef.
at(i)))) i--;
3782 ldef=
"("+ldef.
left(i+1)+
")"+ldef.
mid(i+1);
3792 else if (lang==SrcLangExt::Slice)
3795 size_t pos = ldef.
rfind(
' ');
3803 if (scope==
nullptr) scope = nd;
3810 if (scope==
nullptr) scope = nd;
3837 hasParameterList=
true;
3847 for (
const auto &s : sl)
3856 if (hasParameterList)
3871 if (htmlEndLabelTable)
3874 ol.
writeString(
" <td class=\"mlabels-right\">\n");
3877 for (
const auto &s : sl)
3901 if (!brief.
empty() &&
3914 .setSingleLine(
true));
3920 if (!detailed.
empty() ||
3937 .setIndexWords(
true));
3948 .setIndexWords(
true));
3961 .setIndexWords(
true));
3978 .setIndexWords(
true));
3989 .setIndexWords(
true));
4021 static const reg::Ex re1(R
"(\a\w*::)");
4022 static const reg::Ex re2(R
"(\a\w*<[^>]*>::)");
4024 std::string t = ts.
str();
4027 t = match.prefix().str() + match.suffix().str();
4048 if (scope) cname = scope->
name();
4049 if (doxyName.
at(0)==
'@')
4051 doxyName=
"__unnamed__";
4068 static const reg::Ex ar(R
"([\w@:]*@\d+[\w@:]*)");
4074 size_t al = amatch.
length();
4127 .setSingleLine(
true));
4131 if (!detailed.
empty())
4151 if (
m_mtype == MemberType::Define)
4153 return "macro definition";
4155 else if (
m_mtype == MemberType::Enumeration)
4157 return "enumeration";
4159 return to_string_lower(
m_mtype);
4223 if (!fmd->isLinkableInProject())
4227 warn(fmd->getDefFileName(),fmd->getDefLine(),
"Documentation for enum member '{}{}{}' is missing.",
4263 bool isPython =
getLanguage()==SrcLangExt::Python;
4284 for (
auto it = al.
begin(); it!=al.
end() && allDoc; ++it)
4288 !(isPython && (a.
name==
"self" || a.
name==
"cls"))
4296 if (!allDoc && declAl.
empty())
4299 for (
auto it = al.
begin(); it!=al.
end() && allDoc; ++it)
4303 !(isPython && (a.
name==
"self" || a.
name==
"cls"))
4327 bool isFortran =
getLanguage()==SrcLangExt::Fortran;
4328 bool isFortranSubroutine = isFortran && returnType.
find(
"subroutine")!=
DString::npos;
4330 bool isVoidReturn = returnType==
"void" || returnType.
endsWith(
" void");
4331 if (!isVoidReturn && (returnType==
"auto" || returnType.
endsWith(
" auto")))
4337 isVoidReturn = (strippedTrailingReturn==
"void") || (strippedTrailingReturn.
endsWith(
" void"));
4351 "parameters of member {} are not documented",
4358 isFortranSubroutine ||
4366 "return type of member {} is not documented",
4373 isFortranSubroutine ||
4457 const DString &fileName,
int startLine,
4500 const ArgumentList &formalArgs,
const std::unique_ptr<ArgumentList> &actualArgs)
const
4503 std::unique_ptr<ArgumentList> actualArgList = std::make_unique<ArgumentList>(
m_defArgList);
4507 for (
Argument &arg : *actualArgList)
4511 actualArgList->setTrailingReturnType(
4531 mmd->moveArgumentList(std::move(actualArgList));
4535 mmd->setFormalTemplateArguments(formalArgs);
4570 while (p>=0 && isspace(
static_cast<uint8_t
>(
m_initializer.
at(p)))) p--;
4584 if (optimizeOutputForC)
4588 else if (lang==SrcLangExt::Fortran)
4606 memName =
"[" + pd->
name() +
" " +
name() +
"]";
4647 "Internal inconsistency: recursion detected in overload relation for member {}!",
name());
4648 return Specifier::Normal;
4652 while (rmd && v==Specifier::Normal)
4654 v = rmd->
virtualness(count+1)==Specifier::Normal ? Specifier::Normal : Specifier::Virtual;
4664 tagFile <<
" <member kind=\"";
4665 if (
m_mtype == MemberType::Enumeration)
4667 tagFile <<
"enumeration";
4671 tagFile << to_string_lower(
m_mtype);
4673 if (
m_prot!=Protection::Public)
4675 tagFile <<
"\" protection=\"";
4676 if (
m_prot==Protection::Protected) tagFile <<
"protected";
4677 else if (
m_prot==Protection::Package) tagFile <<
"package";
4678 else tagFile <<
"private";
4680 if (
m_virt!=Specifier::Normal)
4682 tagFile <<
"\" virtualness=\"";
4683 if (
m_virt==Specifier::Virtual) tagFile <<
"virtual";
4684 else tagFile <<
"pure";
4688 tagFile <<
"\" static=\"yes";
4698 tagFile <<
" <anchorfile>" <<
convertToXML(fn) <<
"</anchorfile>\n";
4703 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
4710 if (!fmd->isReference())
4713 tagFile <<
"\" anchor=\"" <<
convertToXML(fmd->anchor());
4719 tagFile <<
"\">" <<
convertToXML(fmd->name()) <<
"</enumvalue>\n";
4724 tagFile <<
" </member>\n";
4742 else if (
name()==
"__init__" &&
4751 size_t i=locName.
find(
'<');
4788 else if (
name()==
"__del__" &&
4822 uint32_t numVisibleEnumValues=0;
4825 if (fmd->isBriefSectionVisible()) numVisibleEnumValues++;
4857 uint32_t enumValuesPerLine =
static_cast<uint32_t
>(
Config_getInt(ENUM_VALUES_PER_LINE));
4858 if (numVisibleEnumValues>0 && enumValuesPerLine>0)
4877 if (numVisibleEnumValues>enumValuesPerLine
4878 && (enumMemCount%enumValuesPerLine)==0
4894 fmd->
writeLink(typeDecl,cd,nd,fd,gd,mod);
4911 bool prevVisible = fmdVisible;
4929 if (numVisibleEnumValues>enumValuesPerLine)
5025 if (
isStatic()) qm=
"+";
else qm=
"-";
5060 if (
isStatic()) qm=
"+ ";
else qm=
"- ";
5224 return m_mtype==MemberType::Signal;
5229 return m_mtype==MemberType::Slot;
5234 return m_mtype==MemberType::Variable;
5239 return m_mtype==MemberType::Enumeration;
5244 return m_mtype==MemberType::EnumValue;
5249 return m_mtype==MemberType::Typedef;
5254 return m_mtype==MemberType::Sequence;
5259 return m_mtype==MemberType::Dictionary;
5264 return m_mtype==MemberType::Function;
5269 return m_mtype==MemberType::Variable &&
5275 return m_mtype==MemberType::Define;
5280 return m_mtype==MemberType::Friend;
5285 return m_mtype==MemberType::DCOP;
5290 return m_mtype==MemberType::Property;
5295 return m_mtype==MemberType::Event;
5300 return m_related == Relationship::Related;
5305 return m_related == Relationship::Foreign;
5465 return m_mtype==MemberType::EnumValue &&
5668 auto decSrc = decAlSrc.
begin(), defSrc = defAlSrc.
begin();
5669 for (
auto decIt = decAl.
begin(), defIt = defAl.
begin();
5670 decIt != decAl.
end() && defIt != defAl.
end() && decSrc != decAlSrc.
end() && defSrc != defAlSrc.
end();
5671 ++decIt, ++defIt, ++decSrc, ++defSrc++)
5907 for (
const auto &sx : qualifiers)
6132 auto srcIt = srcAl.
begin();
6133 auto dstIt = dstAl.
begin();
6134 while ( srcIt!=srcAl.
end() && dstIt!=dstAl.
end())
6151 auto srcIt = srcAl.
begin();
6152 auto dstIt = dstAl.
begin();
6154 while ( srcIt!=srcAl.
end() && dstIt!=dstAl.
end())
6204 for (
auto decIt = decAl.
begin(), defIt = defAl.
begin();
6205 decIt!= decAl.
end() && defIt!= defAl.
end();
6239 if (i>0 && (i+5>=doc.
length() || !
isId(doc[i+5])))
6243 if (c==
'<' || ((c==
'\\' || c==
'@') && (i==1 ||
disspace(doc[i-2]))))
6255 AUTO_TRACE(
"mdec='{}' mdef='{}' mdec.isPrototype={} mdef.isPrototype={}",
6269 if (sameNumTemplateArgs &&
6287 if (!a.docs.empty()) mdefHasParamDocs =
true;
6299 int mdefLine = mdef->
docLine();
6300 int mdecLine = mdec->
docLine();
6326 if (mdefAl.hasParameters())
6338 if (!mdefHasParamDocs)
6485 const DString &includeName,
bool local,
bool force)
6487 if (!force || includeName.
empty())
return;
6497 bool hideFriendCompounds =
Config_getBool(HIDE_FRIEND_COMPOUNDS);
6572 if (src==
nullptr || dst==
nullptr)
return;
6650 return static_cast<const MemberDef*
>(d);
This class contains the information about the argument of a function or template.
This class represents an function or template argument list.
RefQualifierType refQualifier() const
bool hasParameters() const
DString trailingReturnType() const
bool constSpecifier() const
bool hasDocumentation(bool allowEmptyNames=false) const
bool hasTemplateDocumentation() const
bool volatileSpecifier() const
A abstract class representing of a compound symbol.
virtual void writeDeclaration(OutputList &ol, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const DString &inheritId) const =0
virtual int isBaseClass(const ClassDef *bcd, bool followInstances, const DString &templSpec=DString()) const =0
Returns true iff bcd is a direct or indirect base class of this class.
virtual ArgumentLists getTemplateParameterLists() const =0
Returns the template parameter lists that form the template declaration of this class.
virtual bool isObjectiveC() const =0
Returns true if this class is implemented in Objective-C.
virtual bool isSimple() const =0
virtual DString compoundTypeString() const =0
Returns the type of compound as a string.
virtual ClassDef * categoryOf() const =0
Returns the class of which this is a category (Objective-C only).
virtual bool isImplicitTemplateInstance() const =0
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e. class/struct/union/...
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
size_t rfind(char c, size_t pos=npos) const
DString mid(size_t index, size_t len=npos) const
DString simplifyWhiteSpace() const
return a copy of this string with leading and trailing whitespace removed and multiple internal white...
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
std::string_view view() const
DString & remove(size_t index, size_t len)
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
char & at(size_t i)
Returns a reference to the character at index i.
DString right(size_t len) const
DString & prepend(const char *s)
int contains(char c, bool cs=true) const
size_t find(char c, size_t pos=0) const
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
DString left(size_t len) const
const std::string & str() const
bool stripPrefix(const DString &prefix)
bool startsWith(const char *s) const
bool endsWith(const char *s) const
size_t length() const
Returns the length of the string, not counting the 0-terminator.
const Definition * getAlias() const
const Definition * getScope() const
DefinitionAliasMixin(const Definition *scope, const Definition *alias)
The common base class of all entity definitions found in the sources.
virtual DString briefDescription(bool abbreviate=false) const =0
virtual DString inbodyFile() const =0
virtual int getEndBodyLine() const =0
virtual DString briefFile() const =0
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual int docLine() const =0
virtual DString getDefFileName() const =0
virtual DString documentation() const =0
virtual bool isLinkable() const =0
virtual DString inbodyDocumentation() const =0
virtual int getDefLine() const =0
virtual DefType definitionType() const =0
virtual const DString & name() const =0
virtual const DString & localName() const =0
virtual int inbodyLine() const =0
virtual const FileDef * getBodyDef() const =0
virtual int briefLine() const =0
virtual bool hasDocumentation() const =0
virtual bool isLinkableInProject() const =0
virtual bool hasUserDocumentation() const =0
virtual bool isAnonymous() const =0
virtual DString displayName(bool includeScope=true) const =0
virtual DString qualifiedName() const =0
virtual DString anchor() const =0
virtual DString getReference() const =0
virtual CodeSymbolType codeSymbolType() const =0
virtual Definition * getOuterScope() const =0
virtual DString docFile() const =0
virtual int getStartBodyLine() const =0
virtual bool isReference() const =0
virtual DString getOutputFileBase() const =0
int getDefLine() const override
bool isReference() const override
DString docFile() const override
void writeSourceDef(OutputList &ol) const override
bool hasUserDocumentation() const override
DString qualifiedName() const override
bool isExported() const override
bool hasBriefDescription() const override
void setDefFile(const DString &df, int defLine, size_t defColumn) override
DString id() const override
DString briefFile() const override
bool hasSources() const override
bool hasRequirementRefs() const override
DString briefDescription(bool abbreviate=false) const override
const DString & name() const override
bool isAnonymous() const override
DString inbodyFile() const override
void setOuterScope(Definition *def) override
DString getReference() const override
void writeRequirementRefs(OutputList &ol) const override
void setInbodyDocumentation(const DString &doc, const DString &docFile, int docLine) override
const RefItemVector & xrefListItems() const override
bool hasSourceReffedBy() const override
size_t getDefColumn() const override
Definition * getOuterScope() const override
void setBriefDescription(const DString &brief, const DString &briefFile, int briefLine) override
int getEndBodyLine() const override
void setDocumentation(const DString &doc, const DString &docFile, int docLine, bool stripWhiteSpace=true) override
const DString & localName() const override
bool hasSourceRefs() const override
void setReference(const DString &r) override
bool isHidden() const override
DString getDefFileExtension() const override
DString getDefFileName() const override
DString documentation() const override
DefinitionMixin(const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
const FileDef * getBodyDef() const override
DString inbodyDocumentation() const override
int getStartBodyLine() const override
void writeSourceReffedBy(OutputList &ol, const DString &scopeName) const override
int docLine() const override
int inbodyLine() const override
void writeInlineCode(OutputList &ol, const DString &scopeName) const override
void setHidden(bool b) override
int briefLine() const override
DString getSourceFileBase() const override
void writeDocAnchorsToTagFile(TextStream &fs) const override
bool hasDocumentation() const override
void writeSourceRefs(OutputList &ol, const DString &scopeName) const override
SrcLangExt getLanguage() const override
virtual void setBodySegment(int defLine, int bls, int ble)=0
virtual void setInbodyDocumentation(const DString &d, const DString &docFile, int docLine)=0
virtual void setDocumentation(const DString &d, const DString &docFile, int docLine, bool stripWhiteSpace=true)=0
virtual void addSourceReferences(MemberDef *d, const DString &sourceRefName)=0
virtual void addSourceReferencedBy(MemberDef *d, const DString &sourceRefName)=0
virtual void setBriefDescription(const DString &b, const DString &briefFile, int briefLine)=0
virtual void mergeRefItems(Definition *d)=0
virtual void setBodyDef(const FileDef *fd)=0
Representation of an call graph.
static bool suppressDocWarnings
static bool parseSourcesNeeded
static ParserManager * parserManager
static NamespaceDefMutable * globalScope
bool inSort(const Example &ex)
A model of a file symbol.
virtual DString absFilePath() const =0
A model of a group of symbols.
bool hasEnumValues() const override
bool isConstEval() const override
const ClassDef * getCachedTypedefVal() const override
NamespaceDef * getNamespaceDef() override
void writeDeclaration(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool inGroup, int indentLevel, const ClassDef *inheritFrom=nullptr, const DString &inheritId=DString()) const override
const NamespaceDef * getNamespaceDef() const override
bool hasExamples() const override
DString getGroupFileName() const override
GroupDef * getGroupDef() override
bool isSettable() const override
bool isConstrained() const override
bool getGroupHasDocs() const override
const ClassDef * getClassDef() const override
const MemberDef * inheritsDocsFrom() const override
bool hasCallerGraph() const override
bool isConstInit() const override
bool isFinal() const override
void writeLink(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool onlyText=false) const override
const MemberDef * reimplements() const override
DString argsString() const override
const DString & initializer() const override
bool isOptional() const override
const ClassDef * getClassDefOfAnonymousType() const override
bool isTypeAlias() const override
bool isRequired() const override
bool isRemovable() const override
void setMemberGroup(MemberGroup *grp) override
bool isDeleted() const override
bool isPrivateGettable() const override
bool isSignal() const override
MemberDef * memberDeclaration() const override
size_t getDeclColumn() const override
bool isFriendClass() const override
const MemberDef * getGroupAlias() const override
bool isStrongEnumValue() const override
bool isAssign() const override
DString typeString() const override
int getGroupStartLine() const override
std::unique_ptr< MemberDef > deepCopy() const override
bool isUNOProperty() const override
void warnIfUndocumented() const override
bool hasUserDocumentation() const override
DString getOutputFileBase() const override
bool isSliceLocal() const override
const ArgumentLists & definitionTemplateParameterLists() const override
bool isPublished() const override
bool isSequence() const override
bool isDictionary() const override
bool isVariable() const override
FileDef * getFileDef() override
const MemberDef * templateMaster() const override
void warnIfUndocumentedParams() const override
const MemberDef * anonymousMemberForDetails() const override
bool isExternal() const override
DString excpString() const override
bool isProperty() const override
bool isWritable() const override
bool isDocumentedFriendClass() const override
int redefineCount() const override
bool isConstExpr() const override
int initializerLines() const override
bool isMaybeVoid() const override
int getMemberGroupId() const override
DString objCMethodName(bool localLink, bool showStatic) const override
bool isInitonly() const override
const ExampleList & getExamples() const override
bool hasOneLineInitializer() const override
bool isProtectedGettable() const override
bool hasDocumentation() const override
bool livesInsideEnum() const override
bool hasCallGraph() const override
bool isCopy() const override
DString displayDefinition() const override
DString getWriteAccessor() const override
int getDeclLine() const override
bool isEnumerate() const override
DString getReference() const override
bool isReference() const override
TypeSpecifier getMemberSpecifiers() const override
bool isThreadLocal() const override
bool hasMultiLineInitializer() const override
bool isDocsForDefinition() const override
Grouping::GroupPri_t getGroupPri() const override
bool isTypedefValCached() const override
bool isRaisable() const override
bool isUnretained() const override
bool isGettable() const override
const MemberVector & enumFieldList() const override
DString anchor() const override
bool isObjCProperty() const override
DString qualifiedName() const override
const ArgumentList & declArgumentList() const override
DString briefDescription(bool) const override
bool isCallable() const override
bool isDefine() const override
bool isLinkableInProject() const override
bool hasDetailedDescription() const override
bool isFriendToHide() const override
DString getCachedTypedefTemplSpec() const override
const MemberDef * anonymousMemberForDeclaration() const override
const GroupDef * getGroupDef() const override
bool isDestructor() const override
bool isNoDiscard() const override
bool hasDocumentedEnumValues() const override
bool isBound() const override
void detectUndocumentedParams(bool, bool) const override
DString requiresClause() const override
bool isFunctionPtr() const override
StringVector getLabels(const Definition *container) const override
std::unique_ptr< MemberDef > createTemplateInstanceMember(const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) const override
bool isAddable() const override
const ArgumentList & argumentList() const override
const ArgumentList & typeConstraints() const override
Specifier virtualness(int) const override
bool isFunctionOrSignalSlot() const override
bool isDefault() const override
bool isPrototype() const override
bool isAttribute() const override
MemberDef * memberDefinition() const override
bool isTypedef() const override
bool isNoExcept() const override
bool isInline() const override
bool isRelatedOrFriend() const override
bool hasReferencesRelation() const override
bool isStrong() const override
const MemberDef * getMdAlias() const
bool isObjCMethod() const override
const DString & name() const override
bool isAbstract() const override
DString extraTypeChars() const override
bool isStatic() const override
bool isPrivateSettable() const override
bool isSealed() const override
bool isRelated() const override
DString memberTypeName() const override
bool isOverride() const override
bool isForeign() const override
bool isImplementation() const override
const MemberVector & reimplementedBy() const override
VhdlSpecifier getVhdlSpecifiers() const override
bool isMaybeDefault() const override
MemberType memberType() const override
bool isLinkable() const override
DString getDeclFileName() const override
bool isProtectedSettable() const override
bool isReadonly() const override
DString declaration() const override
DString getCachedResolvedTypedef() const override
const MemberDef * categoryRelation() const override
ClassDef * getClassDef() override
DString documentation() const override
MemberDefAliasImpl(const Definition *newScope, const MemberDef *md)
const MemberDef * getEnumScope() const override
DString getReadAccessor() const override
Protection protection() const override
bool isSlot() const override
DString displayName(bool b=true) const override
bool isDelete() const override
bool isReadable() const override
bool isEvent() const override
bool isNonAtomic() const override
DefType definitionType() const override
DString getScopeString() const override
bool isReimplementedBy(const ClassDef *cd) const override
bool isDCOP() const override
DString bitfieldString() const override
void writeEnumDeclaration(OutputList &typeDecl, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod) const override
bool isDocTransferDone() const override
bool isDetailedSectionVisible(MemberListContainer container) const override
bool isNotFriend() const override
const MemberList * getSectionList(const Definition *container) const override
bool isTemplateSpecialization() const override
const ModuleDef * getModuleDef() const override
bool isExplicit() const override
DString enumBaseType() const override
CodeSymbolType codeSymbolType() const override
bool isConstructor() const override
bool isTransient() const override
int numberOfFlowKeyWords() const override
bool isFriend() const override
bool isWeak() const override
bool isMutable() const override
MemberDef * resolveAlias() override
const FileDef * getFileDef() const override
std::optional< ArgumentList > formalTemplateArguments() const override
DString sourceRefName() const override
DString definition() const override
const MemberDef * resolveAlias() const override
bool isEnumValue() const override
bool isNew() const override
const MemberDef * getAnonymousEnumType() const override
bool isMaybeAmbiguous() const override
bool hasReferencedByRelation() const override
DString fieldType() const override
bool isCSharpProperty() const override
bool hasInlineSource() const override
ClassDef * category() const override
void moveTo(Definition *) override
MemberGroup * getMemberGroup() const override
MemberGroup * m_memberGroup
bool isFunction() const override
DString getDeclType() const override
bool visibleInIndex() const override
ClassDef * relatedAlso() const override
bool isRetain() const override
bool isEnumStruct() const override
bool isBriefSectionVisible() const override
const ArgumentList & templateArguments() const override
~MemberDefAliasImpl() override
StringVector getQualifiers() const override
A model of a class/file/namespace member symbol.
virtual bool isConstExpr() const =0
virtual bool getGroupHasDocs() const =0
virtual const MemberDef * getAnonymousEnumType() const =0
virtual bool isConstEval() const =0
virtual bool isInitonly() const =0
virtual bool isSignal() const =0
virtual bool isNoExcept() const =0
virtual bool isDestructor() const =0
virtual DString getDeclType() const =0
virtual bool hasDetailedDescription() const =0
virtual bool isAssign() const =0
virtual bool isExplicit() const =0
virtual MemberDef * memberDefinition() const =0
virtual bool isNew() const =0
virtual bool isObjCMethod() const =0
virtual bool hasDocumentedEnumValues() const =0
virtual MemberDef * memberDeclaration() const =0
virtual DString requiresClause() const =0
virtual bool isMaybeVoid() const =0
virtual bool isConstructor() const =0
virtual bool isFriend() const =0
virtual void writeEnumDeclaration(OutputList &typeDecl, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod) const =0
virtual DString argsString() const =0
virtual bool isForeign() const =0
virtual bool isSealed() const =0
virtual bool hasExamples() const =0
virtual bool isDelete() const =0
virtual int numberOfFlowKeyWords() const =0
virtual const MemberDef * inheritsDocsFrom() const =0
virtual bool isDefault() const =0
virtual DString objCMethodName(bool localLink, bool showStatic) const =0
virtual bool isRelated() const =0
virtual bool isDocumentedFriendClass() const =0
virtual bool isConstInit() const =0
virtual bool isDeleted() const =0
virtual DString definition() const =0
virtual const ClassDef * getCachedTypedefVal() const =0
virtual bool isRelatedOrFriend() const =0
virtual void writeDeclaration(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *md, bool inGroup, int indentLevel=0, const ClassDef *inheritFrom=nullptr, const DString &inheritId=DString()) const =0
virtual bool isSequence() const =0
virtual bool isEnumStruct() const =0
virtual const ClassDef * getClassDef() const =0
virtual bool visibleInIndex() const =0
virtual const MemberDef * getGroupAlias() const =0
virtual bool isOverride() const =0
virtual bool hasReferencesRelation() const =0
virtual DString declaration() const =0
virtual DString excpString() const =0
virtual DString getCachedResolvedTypedef() const =0
virtual const ArgumentList & templateArguments() const =0
virtual DString getDeclFileName() const =0
virtual const DString & initializer() const =0
virtual GroupDef * getGroupDef()=0
virtual bool isSettable() const =0
virtual bool isCSharpProperty() const =0
virtual bool isRetain() const =0
virtual bool isAddable() const =0
virtual bool isTypedef() const =0
virtual ClassDef * category() const =0
virtual bool isSlot() const =0
virtual const MemberVector & enumFieldList() const =0
virtual bool hasCallGraph() const =0
virtual const FileDef * getFileDef() const =0
virtual bool isInline() const =0
virtual bool isEvent() const =0
virtual DString getReadAccessor() const =0
virtual const ArgumentList & argumentList() const =0
virtual bool isWritable() const =0
virtual bool isMaybeAmbiguous() const =0
virtual bool isPrivateGettable() const =0
virtual bool isStrongEnumValue() const =0
virtual VhdlSpecifier getVhdlSpecifiers() const =0
virtual const MemberVector & reimplementedBy() const =0
virtual int getGroupStartLine() const =0
virtual bool isFunction() const =0
virtual bool isRequired() const =0
virtual bool isAttribute() const =0
virtual bool isExternal() const =0
virtual bool isCopy() const =0
virtual int getMemberGroupId() const =0
virtual bool isDictionary() const =0
virtual DString bitfieldString() const =0
virtual int getDeclLine() const =0
virtual bool isTypeAlias() const =0
virtual bool isStatic() const =0
virtual const MemberDef * reimplements() const =0
virtual bool isMaybeDefault() const =0
virtual bool livesInsideEnum() const =0
virtual bool hasInlineSource() const =0
virtual bool isTemplateSpecialization() const =0
virtual bool isPrivateSettable() const =0
virtual DString displayDefinition() const =0
virtual StringVector getQualifiers() const =0
virtual const MemberDef * anonymousMemberForDeclaration() const =0
virtual bool isRaisable() const =0
virtual bool isRemovable() const =0
virtual bool isTypedefValCached() const =0
virtual bool isConstrained() const =0
virtual DString getWriteAccessor() const =0
virtual bool isDocsForDefinition() const =0
virtual bool isBound() const =0
virtual bool hasEnumValues() const =0
virtual bool isFriendToHide() const =0
virtual bool isReimplementedBy(const ClassDef *cd) const =0
virtual bool isNonAtomic() const =0
virtual const ModuleDef * getModuleDef() const =0
virtual bool isThreadLocal() const =0
virtual bool isDefine() const =0
virtual DString extraTypeChars() const =0
virtual const NamespaceDef * getNamespaceDef() const =0
virtual bool isPublished() const =0
virtual DString getScopeString() const =0
virtual bool isFunctionPtr() const =0
virtual DString sourceRefName() const =0
virtual std::unique_ptr< MemberDef > createTemplateInstanceMember(const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) const =0
virtual bool hasCallerGraph() const =0
virtual Grouping::GroupPri_t getGroupPri() const =0
virtual const ArgumentList & typeConstraints() const =0
virtual const MemberDef * anonymousMemberForDetails() const =0
virtual size_t getDeclColumn() const =0
virtual bool isProtectedSettable() const =0
virtual const ClassDef * getClassDefOfAnonymousType() const =0
virtual bool isImplementation() const =0
virtual bool isProtectedGettable() const =0
virtual bool hasOneLineInitializer() const =0
virtual const MemberDef * templateMaster() const =0
virtual std::optional< ArgumentList > formalTemplateArguments() const =0
virtual bool isObjCProperty() const =0
virtual bool isTransient() const =0
virtual const MemberList * getSectionList(const Definition *container) const =0
virtual bool hasMultiLineInitializer() const =0
virtual Protection protection() const =0
virtual TypeSpecifier getMemberSpecifiers() const =0
virtual bool isOptional() const =0
virtual DString getCachedTypedefTemplSpec() const =0
virtual bool isEnumerate() const =0
virtual bool isGettable() const =0
virtual MemberType memberType() const =0
virtual bool hasReferencedByRelation() const =0
virtual bool isFunctionOrSignalSlot() const =0
virtual DString fieldType() const =0
virtual bool isReadable() const =0
virtual bool isWeak() const =0
virtual bool isDocTransferDone() const =0
virtual bool isNoDiscard() const =0
virtual DString enumBaseType() const =0
virtual bool isUnretained() const =0
virtual ClassDef * relatedAlso() const =0
virtual bool isBriefSectionVisible() const =0
virtual const ArgumentLists & definitionTemplateParameterLists() const =0
virtual StringVector getLabels(const Definition *container) const =0
virtual bool isVariable() const =0
virtual bool isNotFriend() const =0
virtual DString getGroupFileName() const =0
virtual bool isDCOP() const =0
virtual bool isStrong() const =0
virtual DString typeString() const =0
virtual bool isSliceLocal() const =0
virtual Specifier virtualness(int count=0) const =0
virtual bool isUNOProperty() const =0
virtual int redefineCount() const =0
virtual const MemberDef * categoryRelation() const =0
virtual int initializerLines() const =0
virtual bool isFinal() const =0
virtual const ArgumentList & declArgumentList() const =0
virtual const ExampleList & getExamples() const =0
virtual bool isAbstract() const =0
virtual DString memberTypeName() const =0
virtual bool isMutable() const =0
virtual bool isFriendClass() const =0
virtual bool isCallable() const =0
virtual bool isDetailedSectionVisible(MemberListContainer container) const =0
virtual const MemberDef * getEnumScope() const =0
virtual bool isEnumValue() const =0
virtual bool isPrototype() const =0
virtual void writeLink(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *md, bool onlyText=false) const =0
virtual bool isProperty() const =0
bool _hasVisibleCallerGraph() const
DString getCachedTypedefTemplSpec() const override
void _writeCallerGraph(OutputList &ol) const
void insertReimplementedBy(MemberDef *md) override
bool isDCOP() const override
DString enumBaseType() const override
const MemberDef * anonymousMemberForDeclaration() const override
bool isDetailedSectionVisible(MemberListContainer container) const override
bool _isReimplements() const
bool isFunction() const override
void cacheTypedefVal(const ClassDef *val, const DString &templSpec, const DString &resolvedType) override
void overrideReferencesRelation(bool e) override
const MemberDef * reimplements() const override
int getMemberGroupId() const override
bool isProperty() const override
bool visibleInIndex() const override
const ArgumentList & argumentList() const override
void writeDocumentation(const MemberList *ml, int memCount, int memTotal, OutputList &ol, const DString &scopeName, const Definition *container, bool inGroup, bool showEnumValues=false, bool showInline=false) const override
void setDocumentedEnumValues(bool value) override
bool m_detailedDescriptionCachedValue
bool isTypedefValCached() const override
DString objCMethodName(bool localLink, bool showStatic) const override
bool isInline() const override
const ExampleList & getExamples() const override
ArgumentLists m_defTmpArgLists
DString getWriteAccessor() const override
bool isFriendToHide() const override
void invalidateTypedefValCache() override
bool isFriendClass() const override
void setNamespace(NamespaceDef *nd) override
void setProtection(Protection p) override
const NamespaceDef * getNamespaceDef() const override
void writeDeclaration(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool inGroup, int indentLevel, const ClassDef *inheritFrom=nullptr, const DString &inheritId=DString()) const override
void setHidden(bool b) override
void _writeTypeConstraints(OutputList &ol) const
bool isSliceLocal() const override
void makeRelated() override
int getGroupStartLine() const override
void setAnonymousMemberForDeclaration(const MemberDef *md) override
void warnIfUndocumented() const override
bool m_hasReferencedByRelation
void setMemberType(MemberType t) override
const ArgumentList & typeConstraints() const override
void setRequiresClause(const DString &req) override
DefType definitionType() const override
bool isDestructor() const override
StringVector getQualifiers() const override
DString getDeclFileName() const override
void setRedefineCount(int) override
void setAnonymousEnumType(const MemberDef *md) override
bool isOptional() const override
void _writeExamples(OutputList &ol) const
void moveTo(Definition *) override
bool isCallable() const override
void setBriefDescription(const DString &b, const DString &briefFile, int briefLine) override
DString getScopeString() const override
bool isBriefSectionVisible() const override
const MemberDef * m_categoryRelation
void setCategoryRelation(const MemberDef *) override
bool isReference() const override
DString m_cachedResolvedType
void warnIfUndocumentedParams() const override
VhdlSpecifier getVhdlSpecifiers() const override
bool _hasVisibleCallGraph() const
void setFormalTemplateArguments(const ArgumentList &al) override
DString extraTypeChars() const override
void setClassDefOfAnonymousType(const ClassDef *cd) override
bool isDefine() const override
void findSectionsInDocumentation() override
DString displayDefinition() const override
void setFileDef(FileDef *fd) override
const MemberDef * resolveAlias() const override
ArgumentList m_declArgList
std::unique_ptr< MemberDef > deepCopy() const override
void makeForeign() override
uint8_t m_isConstructorCached
bool hasMultiLineInitializer() const override
bool hasCallGraph() const override
void _writeReimplementedBy(OutputList &ol) const
bool isNew() const override
void setMaxInitLines(int lines) override
bool isDocsForDefinition() const override
DString definition() const override
void setEnumClassScope(ClassDef *cd) override
void setReadAccessor(const DString &r) override
bool isUnretained() const override
bool isGettable() const override
MemberGroup * getMemberGroup() const override
bool hasUserDocumentation() const override
std::optional< ArgumentList > formalTemplateArguments() const override
std::map< const Definition *, const MemberList * > m_sectionMap
bool isEnumValue() const override
bool isObjCMethod() const override
MemberDef * memberDefinition() const override
bool m_isTypedefValCached
bool m_hasDocumentedReturnType
DString anchor() const override
StringVector m_qualifiers
void overrideCallGraph(bool e) override
void setInheritsDocsFrom(const MemberDef *md) override
bool addExample(const DString &anchor, const DString &name, const DString &file) override
Specifier virtualness(int count=0) const override
ClassDefMutable * getClassDefMutable() override
bool hasDetailedDescription() const override
void setMemberGroupId(int id) override
DString getReference() const override
bool isCSharpProperty() const override
void setSectionList(const Definition *container, const MemberList *sl) override
bool isRaisable() const override
void setTemplateMaster(const MemberDef *mt) override
std::unique_ptr< MemberDef > createTemplateInstanceMember(const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) const override
const GroupDef * getGroupDef() const override
bool isRelatedOrFriend() const override
void insertEnumField(MemberDef *md) override
bool isMutable() const override
bool isPublished() const override
bool isLinkableInProject() const override
bool isProtectedSettable() const override
void setMemberGroup(MemberGroup *grp) override
void setMemberDeclaration(MemberDef *md) override
void setDeclFile(const DString &df, int line, size_t column) override
bool isUNOProperty() const override
bool m_hasDocumentedParams
bool m_hasReferencesRelation
void _computeIsConstructor()
size_t _countReimplementedBy() const
bool isRequired() const override
const MemberDef * m_annMemberForDetails
const MemberVector & reimplementedBy() const override
bool isStrong() const override
void moveDeclArgumentList(std::unique_ptr< ArgumentList > al) override
bool isTypeAlias() const override
void setMemberClass(ClassDef *cd) override
const MemberDef * templateMaster() const override
void setDocsForDefinition(bool b) override
const ClassDef * getCachedTypedefVal() const override
int initializerLines() const override
bool getGroupHasDocs() const override
const MemberDef * getEnumScope() const override
bool isMaybeDefault() const override
bool isReimplementedBy(const ClassDef *cd) const override
StringVector getLabels(const Definition *container) const override
bool isTransient() const override
ArgumentList m_defArgList
MemberDef * memberDeclaration() const override
std::optional< ArgumentList > m_formalTemplateArguments
bool isInitonly() const override
bool isAddable() const override
void setWriteAccessor(const DString &w) override
bool isRelated() const override
void moveArgumentList(std::unique_ptr< ArgumentList > al) override
DString qualifiedName() const override
const ClassDef * m_cachedTypedefValue
void setCategory(ClassDef *) override
void setAnonymousMemberForDetails(const MemberDef *md) override
uint8_t m_isDestructorCached
MemberType memberType() const override
DString sourceRefName() const override
const ClassDef * m_anonymousType
Protection protection() const override
bool isConstructor() const override
void setGroupAlias(const MemberDef *md) override
void setPrototype(bool p, const DString &df, int line, size_t column) override
bool isEnumerate() const override
const ArgumentList & templateArguments() const override
bool isCopy() const override
void setType(const DString &t) override
DString declaration() const override
bool isReadonly() const override
void setTagInfo(const TagInfo *i) override
const ArgumentLists & definitionTemplateParameterLists() const override
void _writeTemplatePrefix(OutputList &ol, const Definition *def, const ArgumentList &al, bool writeReqClause=true) const
bool isStatic() const override
void writeTagFile(TextStream &, bool useQualifiedName, bool showNamespaceMembers) const override
void _writeMultiLineInitializer(OutputList &ol, const DString &scopeName) const
MemberDef * resolveAlias() override
bool isFinal() const override
bool isAttribute() const override
const MemberDef * m_enumScope
DString m_explicitOutputFileBase
int redefineCount() const override
void setExplicitExternal(bool b, const DString &df, int line, size_t column) override
bool isDictionary() const override
bool isSlot() const override
DString bitfieldString() const override
DString memberTypeName() const override
bool hasInlineSource() const override
void setAnchor() override
MemberGroup * m_memberGroup
const MemberDef * m_groupAlias
bool isRetain() const override
MemberVector m_redefinedBy
ClassDef * category() const override
void overrideEnumValues(bool e) override
const MemberDef * anonymousMemberForDetails() const override
bool isDocTransferDone() const override
bool isDocumentedFriendClass() const override
bool isConstEval() const override
bool hasReferencesRelation() const override
void _writeTagData(const DefType) const
void overrideReferencedByRelation(bool e) override
bool isEnumStruct() const override
bool hasEnumValues() const override
bool isExplicit() const override
void _writeCategoryRelation(OutputList &ol) const
void setTemplateSpecialization(bool b) override
bool isTemplateSpecialization() const override
DString typeString() const override
const MemberDef * inheritsDocsFrom() const override
int getDeclLine() const override
void setTypeConstraints(const ArgumentList &al) override
void setVhdlSpecifiers(VhdlSpecifier s) override
bool isImplementation() const override
bool livesInsideEnum() const override
bool isDelete() const override
DString getCachedResolvedTypedef() const override
DString excpString() const override
DString fieldType() const override
bool isNoExcept() const override
DString argsString() const override
bool isWeak() const override
const MemberDef * getAnonymousEnumType() const override
void setDocumentation(const DString &d, const DString &docFile, int docLine, bool stripWhiteSpace=true) override
const ModuleDef * getModuleDef() const override
void setDocTransferDone() override
bool isNoDiscard() const override
void incrementFlowKeyWordCount() override
const MemberDef * getGroupAlias() const override
bool isConstInit() const override
void setModuleDef(ModuleDef *mod) override
DString getDeclType() const override
TypeSpecifier getMemberSpecifiers() const override
bool hasReferencedByRelation() const override
void makeImplementationDetail() override
Grouping::GroupPri_t getGroupPri() const override
bool isLinkable() const override
bool hasDocumentation() const override
int numberOfFlowKeyWords() const override
bool isProtectedGettable() const override
bool m_hasDetailedDescriptionCached
MemberDefImpl(const DString &defFileName, int defLine, size_t defColumn, const DString &type, const DString &name, const DString &args, const DString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const DString &metaData)
void setDefinitionTemplateParameterLists(const ArgumentLists &lists) override
const ArgumentList & declArgumentList() const override
void invalidateCachedArgumentTypes() override
bool _isAnonymousBitField() const
size_t getDeclColumn() const override
void detectUndocumentedParams(bool hasParamCommand, bool hasReturnCommand) const override
const MemberDef * m_annEnumType
bool isWritable() const override
DString m_cachedTypedefTemplSpec
const MemberDef * m_templateMaster
bool isSealed() const override
bool isAbstract() const override
bool isPrivateSettable() const override
void setInitializer(const DString &i) override
bool isSequence() const override
void _computeLinkableInProject()
Grouping::GroupPri_t m_grouppri
void setRelatedAlso(ClassDef *cd) override
const MemberDef * m_annMemberForDecl
void addRequirementReferences(const Definition *) override
bool hasExamples() const override
void resolveUnnamedParameters(const MemberDef *md) override
void setMemberDefinition(MemberDef *md) override
bool isThreadLocal() const override
void writeMemberDocSimple(OutputList &ol, const Definition *container) const override
void setGroupDef(GroupDef *gd, Grouping::GroupPri_t pri, const DString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr) override
bool isSignal() const override
bool isMaybeVoid() const override
void init(Definition *def, const DString &t, const DString &a, const DString &e, Protection p, Specifier v, bool s, Relationship r, MemberType mt, const ArgumentList &tal, const ArgumentList &al, const DString &meta)
void _writeReimplements(OutputList &ol) const
bool isMaybeAmbiguous() const override
bool hasOneLineInitializer() const override
const MemberList * getSectionList(const Definition *) const override
bool isForeign() const override
void addQualifiers(const StringVector &qualifiers) override
void setEnumBaseType(const DString &type) override
bool isAssign() const override
bool isStrongEnumValue() const override
DString getReadAccessor() const override
void _computeIsDestructor()
bool isNotFriend() const override
const ClassDef * getClassDefOfAnonymousType() const override
void copyArgumentNames(const MemberDef *bmd) override
bool isRemovable() const override
void setExplicitInherited(bool b) override
bool isDeleted() const override
DString getGroupFileName() const override
MemberDef * m_groupMember
const DString & initializer() const override
bool isFriend() const override
DString documentation() const override
void setArgsString(const DString &as) override
ArgumentList m_typeConstraints
ClassDef * relatedAlso() const override
void setReimplements(MemberDef *md) override
void writeLink(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool onlyText=false) const override
MemberVector m_enumFields
std::unique_ptr< IncludeInfo > m_incInfo
void writeEnumDeclaration(OutputList &typeDecl, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod) const override
bool isConstExpr() const override
bool isExternal() const override
const FileDef * getFileDef() const override
bool isNonAtomic() const override
const MemberDef * categoryRelation() const override
const MemberVector & enumFieldList() const override
const ClassDef * getClassDef() const override
void setDefinition(const DString &d) override
bool isFunctionOrSignalSlot() const override
void overrideInlineSource(bool e) override
void overrideCallerGraph(bool e) override
bool isPrivateGettable() const override
bool isEvent() const override
void setMemberSpecifiers(TypeSpecifier s) override
bool isFunctionPtr() const override
bool hasCallerGraph() const override
bool isObjCProperty() const override
void setEnumScope(MemberDef *md, bool livesInsideEnum=false) override
bool isPrototype() const override
DString requiresClause() const override
bool isTypedef() const override
void _writeGroupInclude(OutputList &ol, bool inGroup) const
bool hasDocumentedEnumValues() const override
~MemberDefImpl() override=default
void _writeEnumValues(OutputList &ol, const Definition *container, const DString &cfname, const DString &ciname, const DString &cname) const
uint8_t m_isLinkableCached
void setIncludeFile(FileDef *fd, const DString &incName, bool local, bool force) override
bool isVariable() const override
void mergeMemberSpecifiers(TypeSpecifier s) override
DString displayName(bool=true) const override
bool isConstrained() const override
bool isReadable() const override
DString getOutputFileBase() const override
void addListReference(const Definition *) override
bool isDefault() const override
void _writeCallGraph(OutputList &ol) const
DString briefDescription(bool abbr=false) const override
bool isOverride() const override
const MemberDef * m_docProvider
bool isSettable() const override
bool isBound() const override
CodeSymbolType codeSymbolType() const override
void setBitfields(const DString &s) override
void setInbodyDocumentation(const DString &d, const DString &inbodyFile, int inbodyLine) override
virtual void setMemberDeclaration(MemberDef *md)=0
virtual void setDocTransferDone()=0
virtual void resolveUnnamedParameters(const MemberDef *md)=0
virtual void overrideReferencesRelation(bool e)=0
virtual void overrideReferencedByRelation(bool e)=0
virtual void setDocsForDefinition(bool b)=0
virtual void overrideCallGraph(bool e)=0
virtual void overrideInlineSource(bool e)=0
virtual void overrideEnumValues(bool e)=0
virtual void mergeMemberSpecifiers(TypeSpecifier s)=0
virtual void addQualifiers(const StringVector &qualifiers)=0
virtual void moveDeclArgumentList(std::unique_ptr< ArgumentList > al)=0
virtual void overrideCallerGraph(bool e)=0
virtual void setMemberDefinition(MemberDef *md)=0
virtual void moveArgumentList(std::unique_ptr< ArgumentList > al)=0
virtual void insertReimplementedBy(MemberDef *md)=0
virtual void setGroupDef(GroupDef *gd, Grouping::GroupPri_t pri, const DString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr)=0
A class representing a group of members.
A list of MemberDef objects as shown in documentation sections.
A vector of MemberDef object.
bool contains(const MemberDef *md) const
void inSort(MemberDef *md)
iterator begin() noexcept
void push_back(const T &value)
An abstract interface of a namespace symbol.
virtual DString compoundTypeString() const =0
void startCodeFragment(const DString &style)
Class representing a list of output generators that are written to in parallel.
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
void startMemberDeclaration()
void parseText(const DString &textStr)
void startMemberDocName(bool align)
void endParameterExtra(bool last, bool one, bool bracket)
void disable(OutputType o)
void startParagraph(const DString &classDef=DString())
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
void endMemberDoc(bool hasArgs)
void startDescTableInit()
void addIndexItem(const DString &s1, const DString &s2)
void startParameterExtra()
void endPageRef(const DString &c, const DString &a)
const OutputCodeList & codeGenerators() const
void startParameterList(bool openBracket)
void enable(OutputType o)
void endInlineMemberType()
void endMemberDescription()
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
void startInlineMemberType()
void docify(const DString &s)
void startInlineMemberDoc()
void endMemberTemplateParams(const DString &anchor, const DString &inheritId)
void lineBreak(const DString &style=DString())
void startMemberDoc(const DString &clName, const DString &memName, const DString &anchor, const DString &title, int memCount, int memTotal, bool showInline)
void insertMemberAlign(bool templ=false)
void writeString(const DString &text)
void endDoxyAnchor(const DString &fn, const DString &anchor)
void startDescTable(const DString &title, const bool hasInits)
void startDescTableTitle()
void endInlineMemberDoc()
void endMemberDocPrefixItem()
void startParameterDefVal(const char *separator)
void startAnonTypeScope(int i1)
void addLabel(const DString &fName, const DString &anchor)
void endMemberItem(OutputGenerator::MemberItemType type)
void startDescTableData()
void pushGeneratorState()
void endParameterDefVal()
void disableAllBut(OutputType o)
void exceptionEntry(const DString &prefix, bool closeBracket)
void writeLabel(const DString &l, bool isLast)
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
void endCallGraph(DotCallGraph &g)
void startInlineMemberName()
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void startMemberDocPrefixItem()
void endAnonTypeScope(int i1)
void startParameterName(bool one)
void startParameterType(bool first, const DString &key)
void endInlineMemberName()
void writeNonBreakableSpace(int num)
void startDoxyAnchor(const DString &fName, const DString &manName, const DString &anchor, const DString &name, const DString &args)
void startMemberTemplateParams()
std::unique_ptr< CodeParserInterface > getCodeParser(const DString &extension)
Gets the interface to the parser associated with a given extension.
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)
This struct is used to capture the tag file information for an Entry.
Implements TextGeneratorIntf for an OutputDocInterface stream.
Text streaming class that buffers data.
virtual DString trProvidedByCategory()=0
virtual DString trReimplementedFromList(int numEntries)=0
virtual DString trDefineValue()=0
virtual DString trSubprogram(bool first_capital, bool singular)=0
virtual DString trImplementedInList(int numEntries)=0
virtual DString trInitialValue()=0
virtual DString trImplementedFromList(int numEntries)=0
virtual DString trVhdlType(VhdlSpecifier type, bool single)=0
virtual DString trPageAbbreviation()=0
virtual DString trReimplementedInList(int numEntries)=0
virtual DString trExtendsClass()=0
virtual DString trCallerGraph()=0
virtual DString trMember(bool first_capital, bool singular)=0
virtual DString trEnumerationValues()=0
virtual DString trCallGraph()=0
virtual DString trGlobal(bool first_capital, bool singular)=0
Wrapper class for a number of boolean properties.
static bool writeVHDLTypeDocumentation(const MemberDef *mdef, const Definition *d, OutputList &ol)
static bool isMisc(const MemberDef *mdef)
static void writeSource(const MemberDef *mdef, OutputList &ol, const DString &cname)
ClassDefMutable * toClassDefMutable(Definition *d)
ClassDef * getClass(const DString &n)
ClassDef * toClassDef(Definition *d)
Class representing a regular expression.
Object representing the matching results.
SubMatch prefix() const
Return the part of the string before the match.
size_t position() const
Returns the position of the match or std::string::npos if no position is set.
SubMatch suffix() const
Return the part of the string after the match.
size_t length() const
Returns the position of the match or std::string::npos if no length is set.
std::string str() const
Returns the matching part as a string.
#define Config_getInt(name)
#define Config_getList(name)
#define Config_getBool(name)
#define NON_COPYABLE(cls)
Macro to help implementing the rule of 5 for a non-copyable & movable class.
std::vector< std::string > StringVector
std::unique_ptr< ArgumentList > stringToArgumentList(SrcLangExt lang, const DString &argsString, DString *extraTypeChars=nullptr)
Definition * toDefinition(DefinitionMutable *dm)
#define AUTO_TRACE_ADD(...)
IDocParserPtr createDocParser()
factory function to create a parser
void docFindSections(const DString &input, const Definition *d, const DString &fileName)
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)
DString substitute(const DString &s, const DString &src, const DString &dst)
substitute all occurrences of src in s by dst
bool isId(char c)
Returns true if c is a valid character for an identifier.
DString includeClose(SrcLangExt lang, IncludeKind kind)
DString includeOpen(SrcLangExt lang, IncludeKind kind)
FileDef * toFileDef(Definition *d)
DString includeStatement(SrcLangExt lang, IncludeKind kind)
GroupDef * toGroupDef(Definition *d)
Translator * theTranslator
void linkifyText(const TextGeneratorIntf &out, const DString &text, const LinkifyTextOptions &options)
DString md5str(const std::string_view &str)
static DString simplifyTypeForTable(const DString &s)
static DString addTemplateNames(const DString &s, const DString &n, const DString &t)
static void writeExceptionListImpl(OutputList &ol, const ClassDef *cd, const MemberDef *md, DString const &exception)
static void writeExceptionList(OutputList &ol, const ClassDef *cd, const MemberDef *md)
static void writePageRef(OutputList &ol, const DString &cn, const DString &mn)
static DString combineArgsAndException(DString args, DString exception)
static bool writeDefArgumentList(OutputList &ol, const Definition *scope, const MemberDef *md)
static std::mutex g_hasDetailedDescriptionMutex
std::unique_ptr< MemberDef > createMemberDef(const DString &defFileName, int defLine, size_t defColumn, const DString &type, const DString &name, const DString &args, const DString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const DString &metaData)
Factory method to create a new instance of a MemberDef.
static std::mutex g_docCrossReferenceMutex
std::unique_ptr< MemberDef > createMemberDefAlias(const Definition *newScope, const MemberDef *aliasMd)
static void invalidateCachedTypesInArgumentList(ArgumentList &al)
static std::mutex g_detectUndocumentedParamsMutex
static void transferArgumentDocumentation(ArgumentList &decAl, ArgumentList &defAl)
void addDocCrossReference(const MemberDef *s, const MemberDef *d)
MemberDefMutable * toMemberDefMutable(Definition *d)
void mergeMemberOverrideOptions(MemberDefMutable *md1, MemberDefMutable *md2)
static DString stripTrailingReturn(const DString &trailRet)
void combineDeclarationAndDefinition(MemberDefMutable *mdec, MemberDefMutable *mdef)
static bool hasParamCommand(const DString &doc)
MemberDef * toMemberDef(Definition *d)
static const reg::Ex reAnonymous(R"([\w:@]*@\d+)")
#define warn_undoc(file, line, fmt,...)
#define warn_uncond(fmt,...)
#define warn(file, line, fmt,...)
#define warn_doc_error(file, line, fmt,...)
ModuleDef * toModuleDef(Definition *d)
NamespaceDef * toNamespaceDef(Definition *d)
bool search(std::string_view str, Match &match, const Ex &re, size_t pos)
Search in a given string str starting at position pos for a match against regular expression re.
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
std::vector< RefItem * > RefItemVector
std::string_view stripWhiteSpace(std::string_view s)
Given a string view s, returns a new, narrower view on that string, skipping over any leading or trai...
Options to configure the code parser.
Helper class to pass options when calling OutputList::generateDoc().
Data associated with an example.
GroupPri_t
Grouping priority.
@ GROUPING_AUTO_DEF
membership in group was defined via @defgroup
LinkifyTextOptions & setScope(const Definition *scope)
LinkifyTextOptions & setSelf(const Definition *self)
LinkifyTextOptions & setFileScope(const FileDef *fileScope)
bool isTypeAClassFriend(const DString &type)
DString stripExtension(const DString &fName)
DString substituteTemplateArgumentsInString(const DString &nm, const ArgumentList &formalArgs, const ArgumentList *actualArgs)
DString inlineArgListToDoc(const ArgumentList &al)
bool protectionLevelVisible(Protection prot)
DString stripFromIncludePath(const DString &path)
DString detab(const DString &s, size_t &refIndent)
void stripIndentationVerbatim(DString &doc, size_t indentationLevel, bool skipFirstLine)
void writeTypeConstraints(OutputList &ol, const Definition *d, const ArgumentList &al)
DString removeRedundantWhiteSpace(const DString &s)
DString tempArgListToString(const ArgumentList &al, SrcLangExt lang, bool includeDefault)
SrcLangExt getLanguageFromFileName(const DString &fileName, SrcLangExt defLang)
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const DString &srcReturnType, const ArgumentList *srcAl, const Definition *dstScope, const FileDef *dstFileScope, const DString &dstReturnType, const ArgumentList *dstAl, bool checkCV, SrcLangExt lang)
void addHtmlExtensionIfMissing(DString &fName)
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
DString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
DString removeAnonymousScopes(const DString &str)
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
DString inlineTemplateArgListToDoc(const ArgumentList &al)
void writeExamples(OutputList &ol, const ExampleList &list)
A bunch of utility functions.