66 return compileOptions(def,langId1,value1,langId2,value2,langId3,value3)+
76 return compileOptions(def,langId1,value1,langId2,value2,langId3,value3,langId4,value4)+
84 if (visible.
empty())
return defVal;
85 if (visible.
at(0)==
'$' && visible.
length()>1)
88 const ConfigValues::Info *opt = ConfigValues::instance().get(
id);
89 if (opt && opt->type==ConfigValues::Info::Bool)
91 return ConfigValues::instance().*(opt->value.b);
93 else if (opt && opt->type==ConfigValues::Info::String)
95 return opt->getBooleanRepresentation();
99 err(
"found unsupported value '{}' for visible attribute in layout file, reverting to '{}'\n",
100 visible,(defVal?
"yes":
"no"));
105 if (visibleLow==
"no" || visibleLow==
"false" || visibleLow==
"0")
return false;
106 else if (visibleLow==
"yes" || visibleLow==
"true" || visibleLow==
"1")
return true;
109 err(
"found unsupported value '{}' for visible attribute in layout file, reverting to '{}'\n",
110 visible,(defVal?
"yes":
"no"));
124 e->updateVisibility(
this);
130 e->updateVisibility(
this);
143 if (result)
return result;
144 if (entry->kind()==
kind && (file==
DString() || entry->baseFile()==file))
155 if ((
kind()!=LayoutNavEntry::User &&
kind()!=LayoutNavEntry::UserGroup) ||
167 auto dfAstImpl =
dynamic_cast<const DocNodeAST*
>(dfAst.get());
168 const DocRef *df = std::get_if<DocRef>(&dfAstImpl->root);
186 msg(
"explicit link request to '{}' in layout file '{}' could not be resolved\n",
url.
mid(5),
Config_getString(LAYOUT_FILE));
205 void error(
const std::string &fileName,
int lineNr,
const std::string &
msg)
215 if (
m_part!=LayoutDocManager::Undefined)
217 auto elem = std::make_unique<LayoutDocEntrySimple>(k,
id,isVisible);
232 if (userTitle.
empty()) userTitle = title;
233 if (
m_part!=LayoutDocManager::Undefined)
245 if (userTitle.
empty()) userTitle = title;
246 if (userSubscript.
empty()) userSubscript = subscript;
248 if (
m_part!=LayoutDocManager::Undefined)
258 if (userTitle.
empty()) userTitle = title;
261 if (
m_part!=LayoutDocManager::Undefined)
271 static const reg::Ex re(R
"((\d+)\.(\d+))");
307 static struct NavEntryMap
318 LayoutNavEntry::MainPage,
325 LayoutNavEntry::Pages,
332 LayoutNavEntry::Topics,
339 LayoutNavEntry::Modules,
346 LayoutNavEntry::ModuleList,
353 LayoutNavEntry::ModuleMembers,
360 LayoutNavEntry::Namespaces,
367 LayoutNavEntry::NamespaceList,
373 {
"namespacemembers",
374 LayoutNavEntry::NamespaceMembers,
381 LayoutNavEntry::Concepts,
388 LayoutNavEntry::ClassIndex,
395 LayoutNavEntry::Classes,
402 LayoutNavEntry::ClassList,
409 LayoutNavEntry::ClassHierarchy,
413 hasGraphicalHierarchy ?
"inherits" :
"hierarchy"
416 LayoutNavEntry::ClassMembers,
423 LayoutNavEntry::InterfaceIndex,
430 LayoutNavEntry::Interfaces,
434 "annotatedinterfaces"
437 LayoutNavEntry::InterfaceList,
441 "annotatedinterfaces"
443 {
"interfacehierarchy",
444 LayoutNavEntry::InterfaceHierarchy,
448 hasGraphicalHierarchy ?
"interfaceinherits" :
"interfacehierarchy"
451 LayoutNavEntry::StructIndex,
458 LayoutNavEntry::Structs,
465 LayoutNavEntry::StructList,
472 LayoutNavEntry::ExceptionIndex,
479 LayoutNavEntry::Exceptions,
483 "annotatedexceptions"
486 LayoutNavEntry::ExceptionList,
490 "annotatedexceptions"
492 {
"exceptionhierarchy",
493 LayoutNavEntry::ExceptionHierarchy,
497 hasGraphicalHierarchy ?
"exceptioninherits" :
"exceptionhierarchy"
500 LayoutNavEntry::Files,
507 LayoutNavEntry::FileList,
514 LayoutNavEntry::FileGlobals,
521 LayoutNavEntry::Examples,
528 LayoutNavEntry::User,
535 LayoutNavEntry::UserGroup,
552 while (mapping[i].typeStr)
554 if (mapping[i].typeStr==type)
558 if (mapping[i].typeStr==
nullptr)
567 warn_layout(fileName,
m_locator->
lineNr(),
"the type '{}' is not supported for the entry tag within a navindex! Check your layout file!",type);
573 DString baseFile = mapping[i].baseFile;
578 title = mapping[i].mainName;
581 title = mapping[i].subName;
588 intro = mapping[i].intro;
591 if (mapping[i].kind==LayoutNavEntry::User && !url.
empty())
595 else if (kind==LayoutNavEntry::UserGroup)
636 m_part = LayoutDocManager::Undefined;
643 if (
m_part!=LayoutDocManager::Undefined)
655 bool isVisible =
true;
658 if (lde->kind() == LayoutDocEntry::MemberDefStart)
664 if (
m_part!=LayoutDocManager::Undefined)
675 if (
m_part!=LayoutDocManager::Undefined)
686 bool isVisible =
true;
689 if (lde->kind() == LayoutDocEntry::MemberDeclStart)
695 if (
m_part!=LayoutDocManager::Undefined)
731template<
class...Args>
737template<
class...Args>
745template<
class...Args>
748 const std::function<
DString()> &title
754template<
class...Args>
757 const std::function<
DString()> &title
763template<
class...Args>
766 const std::function<
DString()> &title,
767 const std::function<
DString()> &subtitle
773template<
class...Args>
783template<
class...Args>
786 return [=](
LayoutParser &parser,
const std::string &id) { (parser.*fn)(
id); };
1364 it->second.startCb(*
this,it->first,attrib);
1389 it->second.endCb(*
this,it->first+
" end");
1402 std::array<LayoutDocEntryList,LayoutDocManager::NrParts>
docEntries;
1421 handlers.
endElement = [&layoutParser](
const std::string &name) { layoutParser.
endElement(name); };
1422 handlers.
error = [&layoutParser](
const std::string &fileName,
int lineNr,
const std::string &
msg) { layoutParser.
error(fileName,lineNr,
msg); };
1425 constexpr auto layoutFile =
"layout_default.xml";
1428 [&]() { DebugLex::print(Debug::Lex_xml,
"Entering",
"libxml/xml.l",layoutFile); },
1429 [&]() { DebugLex::print(Debug::Lex_xml,
"Finished",
"libxml/xml.l",layoutFile); }
1444 return d->docEntries[
static_cast<int>(part)];
1457 auto ptr = std::make_unique<LayoutNavEntry>(
parent,k,vs,bf,tl,intro);
1458 auto child = ptr.get();
1459 parent->appendChild(std::move(ptr));
1465 auto &docEntry =
d->docEntries[
static_cast<int>(p)];
1466 docEntry.push_back(std::move(e));
1476 handlers.
endElement = [&layoutParser](
const std::string &name) { layoutParser.
endElement(name); };
1477 handlers.
error = [&layoutParser](
const std::string &fn,
int lineNr,
const std::string &
msg) { layoutParser.
error(fn,lineNr,
msg); };
1498 if (
d->majorVersion>=2)
1506 d->docEntries.swap(layoutDocManager.
d->docEntries);
1507 d->rootNav.swap(layoutDocManager.
d->rootNav);
1513 for (
auto &list :
d->docEntries)
1515 auto it = list.begin();
1516 while (it!=list.end())
1518 if (*it==
nullptr || !(*it)->visible())
1520 it = list.erase(it);
1532 return d->majorVersion;
1537 return d->minorVersion;
1545 if (root->
id()==
id)
return root;
1546 for (
auto &child : root->
children())
1549 if (childNavEntry)
return childNavEntry;
1558 using IdSet = std::unordered_set<std::string>;
1559 using IdMap = std::unordered_map<std::string,size_t>;
1562 for (
const auto &e : tree->
children())
1564 set.insert(e->id());
1568 auto prepareMap = [](
const LayoutNavEntry *tree,
const IdSet &set, IdMap &map) {
1569 for (
size_t i=0; i<tree->
children().size(); i++)
1571 std::string
id = tree->
children()[i]->id();
1572 auto it = set.find(
id);
1573 if (it != set.end())
1580 IdSet sourceSet, targetSet;
1581 prepareSet(sourceTree,sourceSet);
1582 prepareSet(targetTree,targetSet);
1584 IdMap sourceMap, targetMap;
1585 prepareMap(targetTree,sourceSet,targetMap);
1586 prepareMap(sourceTree,targetSet,sourceMap);
1589 std::vector<size_t> insertionList;
1590 for (
size_t i=0; i<sourceTree->
children().size(); i++)
1592 std::string
id = sourceTree->
children()[i]->id();
1596 size_t minIdx = targetTree->
children().size();
1597 for (
const auto &kv : sourceMap)
1601 size_t idx = targetMap[kv.first];
1608 insertionList.push_back(minIdx);
1613 size_t idx = sourceTree->
children().size()-1;
1614 for (
auto it=insertionList.rbegin(); it!=insertionList.rend(); ++it, idx--)
1616 std::string
id = sourceTree->
children()[idx]->id();
1617 if (targetSet.find(
id)==targetSet.end())
1624 for (
auto &targetChild : targetTree->
children())
1641 using IdSet = std::unordered_set<std::string>;
1642 using IdMap = std::unordered_map<std::string,size_t>;
1646 for (
const auto &e : list)
1649 set.insert(e->id());
1655 for (
size_t i=0; i<list.size(); i++)
1657 std::string
id = list[i]->id();
1658 auto it = set.find(
id);
1659 if (it != set.end())
1667 IdSet sourceSet, targetSet;
1669 prepareSet(sourceList,sourceSet);
1671 prepareSet(targetList,targetSet);
1673 IdMap sourceMap, targetMap;
1675 prepareMap(targetList,sourceSet,targetMap);
1677 prepareMap(sourceList,targetSet,sourceMap);
1680 std::vector<size_t> insertionList;
1681 for (
size_t i=0; i<sourceList.size(); i++)
1683 std::string
id = sourceList[i]->id();
1687 size_t minIdx = targetList.size();
1688 for (
const auto &kv : sourceMap)
1692 size_t idx = targetMap[kv.first];
1701 insertionList.push_back(minIdx);
1706 size_t idx = sourceList.size()-1;
1707 for (
auto it=insertionList.rbegin(); it!=insertionList.rend(); ++it, idx--)
1709 std::string
id = sourceList[idx]->id();
1711 if (targetSet.find(
id)==targetSet.end())
1715 warn_layout(fileName,1,
"User defined layout misses entry '{}'. Using default value.",
id);
1716 targetList.insert(targetList.begin()+*it, std::move(sourceList[idx]));
1724 for (
size_t i=0; i<
d->docEntries.size(); i++)
1740 t <<
substitute(layout_default,
"$doxygenversion",getDoxygenVersion());
1744 err(
"Failed to open file {} for writing!\n",fileName);
1759 size_t s=0,e=input.
find(
'|');
1765 e=input.
find(
'|',s);
1766 size_t i=input.
find(
'=',s);
1772 return input.
mid(i+1,e-i-1);
1775 return input.
left(e1);
1811 indentStr.
fill(
' ',indent);
1814 for (
const auto &e : root->
children())
1823 bool extraIndent =
false;
1829 for (
const auto &e : mgr.rootNavEntry()->children())
1834 for (
int i = 0; i < LayoutDocManager::NrParts; i++)
1841 if (lde->kind() == LayoutDocEntry::MemberDeclEnd || lde->kind() == LayoutDocEntry::MemberDefEnd) extraIndent =
false;
1843 extraIndent?
" " :
"",lde->entryToString(), ldes->visible());
1844 if (lde->kind() == LayoutDocEntry::MemberDeclStart || lde->kind() == LayoutDocEntry::MemberDefStart) extraIndent =
true;
1849 extraIndent?
" " :
"",lde->entryToString(),lmdecl->visible(),lmdecl->type.to_string());
1854 extraIndent?
" " :
"",lde->entryToString(),lmdef->visible(),lmdef->type.to_string());
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
DString & setNum(short n)
size_t rfind(char c, size_t pos=npos) const
DString fill(char c, size_t len)
Fills a string with a predefined character.
DString mid(size_t index, size_t len=npos) const
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
std::string_view view() const
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
size_t find(char c, size_t pos=0) const
DString & sprintf(const char *format,...)
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
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
bool startsWith(const char *s) const
size_t length() const
Returns the length of the string, not counting the 0-terminator.
static bool isFlagSet(const DebugMask mask)
static void print(DebugMask mask, int prio, fmt::format_string< Args... > fmt, Args &&... args)
static void print(Debug::DebugMask mask, const char *state, const char *lexName, const char *fileName)
Class representing the abstract syntax tree of a documentation block.
Node representing a reference to some item.
std::array< LayoutDocEntryList, LayoutDocManager::NrParts > docEntries
Singleton providing access to the (user configurable) layout of the documentation.
void mergeNavEntries(LayoutDocManager &manager)
static std::string partToString(int k)
void parse(const DString &fileName, const char *data=nullptr)
Parses a user provided layout.
std::unique_ptr< Private > d
LayoutNavEntry * createChildNavEntry(LayoutNavEntry *root, LayoutNavEntry::Kind k, bool vs, const DString &bf, const DString &tl, const DString &intro)
append a new node as a child to root.
static LayoutDocManager & instance()
Returns a reference to this singleton.
friend class LayoutParser
void mergeDocEntries(const DString &fileName, LayoutDocManager &manager)
void addEntry(LayoutPart p, LayoutDocEntryPtr &&e)
LayoutNavEntry * rootNavEntry() const
returns the (invisible) root of the navigation tree.
void removeInvisibleDocEntries()
const LayoutDocEntryList & docEntries(LayoutPart part) const
Returns the list of LayoutDocEntry's in representation order for a given page identified by part.
void endTop(const std::string &)
void endNavIndex(const std::string &)
void setDocumentLocator(const XMLLocator *locator)
static int m_userGroupCount
void startMemberDefEntry(const std::string &id, const XMLHandlers::Attributes &attrib, MemberListType type, const DString &title, const DString &)
void startSimpleEntry(LayoutDocEntry::Kind k, const std::string &id, const XMLHandlers::Attributes &attrib)
void startNavIndex(const std::string &, const XMLHandlers::Attributes &)
LayoutParser(LayoutDocManager &manager)
void startTop(const std::string &, const XMLHandlers::Attributes &attrib, LayoutDocManager::LayoutPart part, const DString &scope, LayoutNavEntry::Kind nav)
void error(const std::string &fileName, int lineNr, const std::string &msg)
const XMLLocator * m_locator
void startMemberDecl(const std::string &id, const XMLHandlers::Attributes &attrib)
void endMemberDecl(const std::string &id)
void endMemberDef(const std::string &id)
void endNavEntry(const std::string &)
void startSectionEntry(LayoutDocEntry::Kind k, const std::string &id, const XMLHandlers::Attributes &attrib, const DString &title)
LayoutDocManager & m_layoutDocManager
void startMemberDeclEntry(const std::string &id, const XMLHandlers::Attributes &attrib, MemberListType type, const DString &title, const DString &subscript)
void startNavEntry(const std::string &, const XMLHandlers::Attributes &attrib)
void startMemberDef(const std::string &id, const XMLHandlers::Attributes &attrib)
void endElement(const std::string &name)
LayoutNavEntry * m_rootNav
void startLayout(const std::string &, const XMLHandlers::Attributes &attrib)
void startElement(const std::string &name, const XMLHandlers::Attributes &attrib)
LayoutDocManager::LayoutPart m_part
Wrapper class for the MemberListType type.
static ResourceMgr & instance()
Returns the one and only instance of this class.
DString getAsString(const DString &name) const
Gets the resource data as a C string.
Text streaming class that buffers data.
virtual DString trCompoundMembers()=0
virtual DString trFunctionAndProc()=0
virtual DString trStaticProtectedAttribs()=0
virtual DString trProtectedTypes()=0
virtual DString trTypedefs()=0
virtual DString trConceptList()=0
virtual DString trTopics()=0
virtual DString trModulesMembers()=0
virtual DString trCompoundMembersFortran()=0
virtual DString trStaticProtectedMembers()=0
virtual DString trPublicAttribs()=0
virtual DString trExceptions()=0
virtual DString trModulesList()=0
virtual DString trEnumerations()=0
virtual DString trRelatedSymbolDocumentation()=0
virtual DString trClasses()=0
virtual DString trDetailedDescription()=0
virtual DString trDataMemberDocumentation()=0
virtual DString trInterfaceIndex()=0
virtual DString trNamespaceMembers()=0
virtual DString trVariableDocumentation()=0
virtual DString trNamespaceMemberDescription(bool extractAll)=0
virtual DString trFileMembersDescription(bool extractAll)=0
virtual DString trPackageMembers()=0
virtual DString trNamespaceList()=0
virtual DString trPrivateAttribs()=0
virtual DString trExceptionList()=0
virtual DString trSequenceDocumentation()=0
virtual DString trTypedefDocumentation()=0
virtual DString trPrivateSlots()=0
virtual DString trStructs()=0
virtual DString trPrivateTypes()=0
virtual DString trClassDocumentation()=0
virtual DString trExceptionHierarchyDescription()=0
virtual DString trOperationDocumentation()=0
virtual DString trInterfaceList()=0
virtual DString trSequences()=0
virtual DString trClassMethods()=0
virtual DString trFunctions()=0
virtual DString trMemberEnumerationDocumentation()=0
virtual DString trProtectedSlots()=0
virtual DString trInterfaceListDescription()=0
virtual DString trFriends()=0
virtual DString trPropertyDocumentation()=0
virtual DString trInstanceMethods()=0
virtual DString trExceptionHierarchy()=0
virtual DString trCompoundList()=0
virtual DString trPackageAttribs()=0
virtual DString trEnumerationTypeDocumentation()=0
virtual DString trInterfaceHierarchy()=0
virtual DString trTypeDocumentation()=0
virtual DString trPackageList()=0
virtual DString trMemberTypedefDocumentation()=0
virtual DString trEnumerationValueDocumentation()=0
virtual DString trModulesDescription()=0
virtual DString trStaticPackageAttribs()=0
virtual DString trStructListDescription()=0
virtual DString trOperations()=0
virtual DString trConceptDefinition()=0
virtual DString trDefineDocumentation()=0
virtual DString trDesignUnitListDescription()=0
virtual DString trExamplesDescription()=0
virtual DString trCompounds()=0
virtual DString trFileList()=0
virtual DString trModules()=0
virtual DString trDefines()=0
virtual DString trRelatedPages()=0
virtual DString trPublicMembers()=0
virtual DString trSubprogramDocumentation()=0
virtual DString trCompoundListDescriptionFortran()=0
virtual DString trVhdlType(VhdlSpecifier type, bool single)=0
virtual DString trInterfaces()=0
virtual DString trRelatedSymbols()=0
virtual DString trFileMembers()=0
virtual DString trDesignUnitHierarchy()=0
virtual DString trDesignUnits()=0
virtual DString trProtectedMembers()=0
virtual DString trDirectories()=0
virtual DString trInterfaceHierarchyDescription()=0
virtual DString trStaticPrivateAttribs()=0
virtual DString trStructIndex()=0
virtual DString trExceptionIndex()=0
virtual DString trConstructorDocumentation()=0
virtual DString trPackageTypes()=0
virtual DString trExportedModules()=0
virtual DString trModule(bool first_capital, bool singular)=0
virtual DString trDictionaryDocumentation()=0
virtual DString trProtectedAttribs()=0
virtual DString trDesignUnitMembers()=0
virtual DString trConstantGroups()=0
virtual DString trExceptionListDescription()=0
virtual DString trProperties()=0
virtual DString trRelatedPagesDescription()=0
virtual DString trDesignUnitList()=0
virtual DString trModulesMemberDescription(bool extractAll)=0
virtual DString trCompoundIndexFortran()=0
virtual DString trDataTypes()=0
virtual DString trCompoundListDescription()=0
virtual DString trConcept(bool first_capital, bool singular)=0
virtual DString trTopicListDescription()=0
virtual DString trDataMembers()=0
virtual DString trFileListDescription(bool extractAll)=0
virtual DString trClassHierarchyDescription()=0
virtual DString trSliceInterfaces()=0
virtual DString trConceptListDescription(bool extractAll)=0
virtual DString trFunctionDocumentation()=0
virtual DString trSubprograms()=0
virtual DString trMemberFunctionDocumentationFortran()=0
virtual DString trMemberFunctionDocumentation()=0
virtual DString trCompoundListFortran()=0
virtual DString trPackageFunctions()=0
virtual DString trPackages()=0
virtual DString trPrivateMembers()=0
virtual DString trPackageListDescription()=0
virtual DString trConstantDocumentation()=0
virtual DString trPublicTypes()=0
virtual DString trVariables()=0
virtual DString trStaticPublicMembers()=0
virtual DString trMethodDocumentation()=0
virtual DString trEnumerationValues()=0
virtual DString trRelatedSymbolsSubscript()=0
virtual DString trStaticPublicAttribs()=0
virtual DString trModulesListDescription(bool extractAll)=0
virtual DString trServices()=0
virtual DString trStructList()=0
virtual DString trNamespaceListDescription(bool extractAll)=0
virtual DString trSignals()=0
virtual DString trClassHierarchy()=0
virtual DString trPublicSlots()=0
virtual DString trCompoundIndex()=0
virtual DString trFile(bool first_capital, bool singular)=0
virtual DString trDesignUnitIndex()=0
virtual DString trConstants()=0
virtual DString trCompoundMembersDescription(bool extractAll)=0
virtual DString trEventDocumentation()=0
virtual DString trMainPage()=0
virtual DString trNamespaces()=0
virtual DString trCompoundMembersDescriptionFortran(bool extractAll)=0
virtual DString trMemberDataDocumentation()=0
virtual DString trEvents()=0
virtual DString trDictionaries()=0
virtual DString trStaticPackageFunctions()=0
virtual DString trExamples()=0
virtual DString trStaticPrivateMembers()=0
Event handlers that can installed by the client and called while parsing a XML document.
std::unordered_map< std::string, std::string > Attributes
std::function< EndElementType > endElement
handler invoked when a closing tag has been found
std::function< StartElementType > startElement
handler invoked when an opening tag has been found
static std::string value(const Attributes &attrib, const std::string &key)
std::function< ErrorType > error
handler invoked when the parser encounters an error
virtual int lineNr() const =0
virtual std::string fileName() const =0
void parse(const char *fileName, const char *inputString, bool debugEnabled, std::function< void()> debugStart, std::function< void()> debugEnd, std::function< Transcode > transcoder=[](std::string &s, const char *){ return true;})
Class representing a regular expression.
Object representing the matching results.
#define Config_getBool(name)
#define Config_getString(name)
constexpr DocNodeVariant * parent(DocNodeVariant *n)
returns the parent node of a given node n or nullptr if the node has no parent.
IDocParserPtr createDocParser()
factory function to create a parser
IDocNodeASTPtr createRef(IDocParser &parserIntf, const DString &target, const DString &context, const DString &srcFile, int srcLine)
DString substitute(const DString &s, const DString &src, const DString &dst)
substitute all occurrences of src in s by dst
const char * qPrint(const char *s)
Translator * theTranslator
static void mergeNavTreeNodesRec(LayoutNavEntry *targetTree, LayoutNavEntry *sourceTree)
static void mergeDocEntryLists(const DString &fileName, LayoutDocEntryList &targetList, LayoutDocEntryList &sourceList)
static bool elemIsVisible(const XMLHandlers::Attributes &attrib, bool defVal=true)
DString extractLanguageSpecificTitle(const DString &input, SrcLangExt lang)
static LayoutNavEntry * findNavEntryRec(LayoutNavEntry *root, const std::string &id)
DString compileOptions(const DString &def)
void writeDefaultLayoutFile(const DString &fileName)
static void printNavLayout(LayoutNavEntry *root, int indent)
std::unique_ptr< LayoutDocEntry > LayoutDocEntryPtr
std::vector< LayoutDocEntryPtr > LayoutDocEntryList
#define warn_layout(file, line, fmt,...)
static auto startCb(void(LayoutParser::*fn)(Args...))
static const std::map< std::string, ElementCallbacks > g_elementHandlers
static auto endCb(void(LayoutParser::*fn)(Args...))
bool match(std::string_view str, Match &match, const Ex &re)
Matches a given string str for a match against regular expression re.
Represents of a member declaration list with configurable title and subtitle.
DString subtitle(SrcLangExt lang) const
DString title(SrcLangExt lang) const
Represents of a member definition list with configurable title.
DString title(SrcLangExt lang) const
DString title(SrcLangExt lang) const
Represents of a piece of a documentation page without configurable parts.
bool visible() const override
Base class for the layout of a navigation item at the top of the HTML pages.
LayoutNavEntryList m_children
const LayoutNavEntryList & children() const
LayoutNavEntry * find(LayoutNavEntry::Kind k, const DString &file=DString()) const
void updateVisibility(LayoutNavEntry *parent)
void appendChild(std::unique_ptr< LayoutNavEntry > &&e)
void insertChild(size_t pos, std::unique_ptr< LayoutNavEntry > &&e)
LayoutNavEntry * parent() const
LayoutNavEntry(LayoutNavEntry *parent, Kind k, bool vs, const DString &bf, const DString &tl, const DString &intro)
std::string navToString() const
std::function< void(LayoutParser &, const std::string &)> EndCallback
std::function< void(LayoutParser &, const std::string &, const XMLHandlers::Attributes &)> StartCallback
This file contains a number of basic enums and types.
bool transcodeCharacterStringToUTF8(std::string &input, const char *inputEncoding)
Recodes the input string from the given input encoding to UTF8.
void addHtmlExtensionIfMissing(DString &fName)
DString fileToString(const DString &name, bool filter, bool isSourceCode)
DString externalRef(const DString &relPath, const DString &ref)
bool openOutputFile(const DString &outFile, std::ofstream &f)
A bunch of utility functions.